Python Forum
code that takes inputs for user name amounts etc and then sends custom message - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: code that takes inputs for user name amounts etc and then sends custom message (/thread-2026.html)



code that takes inputs for user name amounts etc and then sends custom message - shaumyabrata - Feb-11-2017

I was trying this cose and I am not sure why this is not working as I am new to Python hence I am not abel to figure this out. Just trying to create a class and definitons through which I can add user and then also send them a message. Please need help on this cose not sure why I am getting errors like ,
Error:
"SyntaxError: multiple statements found while compiling a single statement" "Traceback (most recent call last):   File "<pyshell#36>", line 1, in <module>     obj.add_user("justin", 123.32) AttributeError: 'MessageUser' object has no attribute 'add_user'" Traceback (most recent call last):   File "<pyshell#38>", line 1, in <module>     obj.get_details() AttributeError: 'MessageUser' object has no attribute 'get_details'
Here is the Code,
import datetime

class MessageUser():
    user_details=[]
    messages=[]
    base_message="""Hi {name}!
Thank you for the purchase on {date}.
We hope you are exited about using it. Just as a
reminder the purchase total was ${total}.
Have a great one!

Team CFE
"""

def add_user(self, name, amount):
    name=name[0].upper()+name[1:].lower()
    amount="%.2f" %(amount)
    detail={
        "name": name,
        "amount": amount,
    }
    today=datetime.date.today()
    date_text='{today.month}/{today.day}/{today.year}'.format(today=today)
    detail['date']=date_text
    self.user_details.append(detail)

def get_details(self):
    return self.user_details

def make_messages(self):
    if len(self.user_details)>0:
        for detail in self.get_details():
            name=detail["name"]
            amount=["amount"]
            date=detail[date]
            message=self.base_message
            new_msg=unf_mesage.format(
                name=name,
                amount=amount,
                date=date
            )
            self.messages.append(new_msg)
        return self.messages
    return[]

obj=MessageUser()
obj.add_user("justin",123.32)
obj.add_user("john",94.32)
obj.get_details()
Really need help....


RE: code that takes inputs for user name amounts etc and then sends custom message - sparkz_alot - Feb-11-2017

In the future, please wrap your code in the "code" tags.  I did it for you this time.

If your original code is as you posted, all your functions are incorrectly indented.  I presume you mean to have them all under the class MessageUser?


RE: code that takes inputs for user name amounts etc and then sends custom message - metulburr - Feb-11-2017

as sparkz said, you have your code incorrectly indented. The fact that you have all the methods dedented it is not apart of the class, and hence that object does not have those methods at all. Be extra careful with indentation in python...especially when copying/pasting code that it comes out as expected. 
import datetime
 
class MessageUser():
    user_details=[]
    messages=[]
    base_message="""Hi {name}!
    Thank you for the purchase on {date}.
    We hope you are exited about using it. Just as a
    reminder the purchase total was ${total}.
    Have a great one!
     
    Team CFE
    """
     
    def add_user(self, name, amount):
        name=name[0].upper()+name[1:].lower()
        amount="%.2f" %(amount)
        detail={
            "name": name,
            "amount": amount,
        }
        today=datetime.date.today()
        date_text='{today.month}/{today.day}/{today.year}'.format(today=today)
        detail['date']=date_text
        self.user_details.append(detail)
     
    def get_details(self):
        return self.user_details
     
    def make_messages(self):
        if len(self.user_details)>0:
            for detail in self.get_details():
                name=detail["name"]
                amount=["amount"]
                date=detail[date]
                message=self.base_message
                new_msg=unf_mesage.format(
                    name=name,
                    amount=amount,
                    date=date
                )
                self.messages.append(new_msg)
            return self.messages
        return[]
 
obj=MessageUser()
obj.add_user("justin",123.32)
obj.add_user("john",94.32)
print(obj.get_details())



RE: code that takes inputs for user name amounts etc and then sends custom message - Larz60+ - Feb-11-2017

Also looks like you're missing comma's, if still an error after correcting indents


RE: code that takes inputs for user name amounts etc and then sends custom message - Ofnuts - Feb-12-2017

(Feb-11-2017, 10:22 PM)Larz60+ Wrote: Also looks like you're missing comma's, if still an error after correcting indents

While other's are so overstocked in apostrophe's that they put them in place's where they aren't necessary :)


RE: code that takes inputs for user name amounts etc and then sends custom message - ichabod801 - Feb-12-2017

(Feb-12-2017, 10:49 AM)Ofnuts Wrote: While other's are so overstocked in apostrophe's that they put them in place's where they aren't necessary :)

It makes up for various periods that have mysteriously gone missing. :P