diff --git a/app.py b/app.py index 4347b45..2b88f57 100644 --- a/app.py +++ b/app.py @@ -15,6 +15,7 @@ # a risk that we may run into circular dependencies, so we do it at the # last minute here. - from views import * + # from views import * + from views2 import * app.run(debug=True) diff --git a/backup.csv b/backup.csv new file mode 100644 index 0000000..6100f78 --- /dev/null +++ b/backup.csv @@ -0,0 +1,4 @@ +waffle,15.0,200 +chocolate,15.0,200 +ice cream,10.0,100 +cake,30.0,400 diff --git a/backup.py b/backup.py new file mode 100644 index 0000000..4d0c6f5 --- /dev/null +++ b/backup.py @@ -0,0 +1,27 @@ +from models import * + + +def save_data(): + + with open('backup.csv', 'w') as f: # Open file 'backup.csv' for writing + + for dessert in Dessert.query.all(): + # Create a comma separated line + line = "{},{},{}\n".format(dessert.name, dessert.price, + dessert.calories) + # Write it to the file + f.write(line) + +def load_data(): + + with open('backup.csv') as f: + for line in f: + name, price, calories = line.split(',') + d = Dessert(name, price, calories) + db.session.add(d) + db.session.commit() + + +if __name__=="__main__": + # save_data() + load_data() diff --git a/desserts.db b/desserts.db new file mode 100644 index 0000000..14237d2 Binary files /dev/null and b/desserts.db differ diff --git a/models.py b/models.py index 1b5286a..20daf80 100644 --- a/models.py +++ b/models.py @@ -13,10 +13,14 @@ class Dessert(db.Model): price = db.Column(db.Float) calories = db.Column(db.Integer) - def __init__(self, name, price, calories): + user_id = db.Column(db.Integer, db.ForeignKey('user.id')) + user = db.relationship("User", backref="desserts") + + def __init__(self, name, price, calories, user_id): self.name = name self.price = price self.calories = calories + self.user_id = user_id def calories_per_dollar(self): if self.calories: @@ -32,7 +36,25 @@ def __init__(self, name): self.name = name -def create_dessert(new_name, new_price, new_calories): +class User(db.Model): + id = db.Column(db.Integer, primary_key=True) + username = db.Column(db.String(100)) + password = db.Column(db.String(100)) + email = db.Column(db.String(250)) + name = db.Column(db.String(100)) + avatar = db.Column(db.String(250)) + + def __init__(self, username, password, email, name, avatar): + self.username = username + self.password = password + self.email = email + self.name = name + self.avatar = avatar + + +def create_dessert(new_name, new_price, new_calories, user_id): + # Dessert.query.filter_by + # Create a dessert with the provided input. # We need every piece of input to be provided. @@ -45,8 +67,17 @@ def create_dessert(new_name, new_price, new_calories): if new_name == '' or new_price == '' or new_calories == '': raise Exception("Need name, price and calories!") + # Check that name does not already exist + + if Dessert.query.filter_by(name=new_name).first() is not None: + raise Exception("That name already exists!") + + # Check that calories is between 0 and 2000 + if 0 > new_calories > 2000: + raise Exception("Really that many calories?") + # This line maps to line 16 above (the Dessert.__init__ method) - dessert = Dessert(new_name, new_price, new_calories) + dessert = Dessert(new_name, new_price, new_calories, user_id) # Actually add this dessert to the database db.session.add(dessert) @@ -82,6 +113,32 @@ def delete_dessert(id): return "Dessert not found" +def update_dessert(id, new_name, new_price, new_calories): + + dessert = Dessert.query.get(id) + + if dessert: + + dessert.name = new_name + dessert.price = new_price + dessert.calories = new_calories + + try: + db.session.commit() + return "Dessert {} updated".format(new_name) + except: + db.session.rollback() + return "Something went wrong" + else: + return "Dessert not found" + + +def log_out(user_id): + if user_id: + user_id = None + return user_id + + if __name__ == "__main__": # Run this file directly to create the database tables. diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000..16f6da6 Binary files /dev/null and b/static/favicon.ico differ diff --git a/templates/add.html b/templates/add.html index d3ad60c..4c2aa22 100644 --- a/templates/add.html +++ b/templates/add.html @@ -68,4 +68,4 @@