Advertisement
Guest User

barpos

a guest
Dec 5th, 2019
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.25 KB | None | 0 0
  1. import json, datetime
  2. from app import app, db
  3. from flask import render_template, redirect, request, abort
  4. from .models import Category, Item, Sale, Sale_Item
  5.  
  6. @app.route("/", methods=['GET', 'POST'])
  7. def index():
  8. categories = Category.query.order_by(Category.weight).all()
  9. if not categories:
  10. return redirect("/login")
  11. return render_template("index.html", title="LogIn",
  12. categories=categories)
  13.  
  14. @app.route("/tabs")
  15. def tabs():
  16. unpaidSales = Sale.query.filter_by(paid=False).all()
  17. tabs = {}
  18.  
  19. for sale in unpaidSales:
  20. if sale.tab_name not in tabs:
  21. tabs[sale.tab_name] = {}
  22. tabs[sale.tab_name]['days'] = {}
  23. tabs[sale.tab_name]['tabTotal'] = 0
  24. if sale.time.date() not in tabs[sale.tab_name]['days']:
  25. tabs[sale.tab_name]['days'][sale.time.date()] = {}
  26. tabs[sale.tab_name]['days'][sale.time.date()]['sales'] = []
  27. tabs[sale.tab_name]['days'][sale.time.date()]['dayTotal'] = 0
  28. tabs[sale.tab_name]['days'][sale.time.date()]['sales'].append(sale)
  29. tabs[sale.tab_name]['days'][sale.time.date()]['dayTotal'] += sale.value
  30. tabs[sale.tab_name]['tabTotal'] += sale.value
  31.  
  32. return render_template("tabs.html", title="Tabs",
  33. tabs=tabs)
  34.  
  35. @app.route("/sales")
  36. @app.route("/sales/<fromDate>/<toDate>")
  37. def sales(fromDate = None, toDate = None):
  38. if(fromDate and toDate):
  39. fromDate = datetime.datetime.strptime(fromDate, "%Y-%m-%d").date()
  40. toDate = datetime.datetime.strptime(toDate, "%Y-%m-%d").date() + datetime.timedelta(days=1)
  41. sales = Sale.query.filter(Sale.time >= fromDate, Sale.time < toDate).all()
  42. items = {}
  43. total = 0
  44.  
  45. for sale in sales:
  46. for saleItem in sale.items:
  47. if saleItem.name not in items:
  48. items[saleItem.name] = []
  49. addedQuantity = False
  50. for priceQuantity in items[saleItem.name]:
  51. if saleItem.price_single == priceQuantity['price']:
  52. priceQuantity['quantity'] += saleItem.quantity
  53. addedQuantity = True
  54. if not addedQuantity:
  55. items[saleItem.name].append({"price" : saleItem.price_single, "quantity" : saleItem.quantity})
  56. total += saleItem.price_total
  57. return render_template("sales.html", title="Sales",
  58. fromDate=fromDate,
  59. toDate=toDate-datetime.timedelta(days=1),
  60. total=total,
  61. items=items)
  62.  
  63. return render_template("sales.html", title="Sales",
  64. total=0)
  65.  
  66.  
  67. @app.route("/login", methods=['GET', 'POST'])
  68. def login():
  69. categories = Category.query.order_by(Category.weight).all()
  70. items = Item.query.order_by(Item.category_id).all()
  71. return render_template("index.html", title="LogIn",
  72. categories=categories,
  73. items=items)
  74.  
  75. @app.route("/admin", methods=['GET', 'POST'])
  76. def admin():
  77. categories = Category.query.order_by(Category.weight).all()
  78. items = Item.query.order_by(Item.category_id).all()
  79. return render_template("admin.html", title="Administration",
  80. categories=categories,
  81. items=items)
  82.  
  83. @app.route("/sale", methods=['POST'])
  84. def sale():
  85. data = request.get_json(force=True)
  86. totalValue=0
  87. for item in data['cart']:
  88. totalValue+=(item['price']*item['quantity'])
  89.  
  90. sale = Sale(value=totalValue, paid=data['paid'], time=datetime.datetime.now(), tab_name=data['tab_name'])
  91. db.session.add(sale)
  92. db.session.commit()
  93. for item in data['cart']:
  94. sale_item=Sale_Item(item_id=item['id'], sale_id=sale.id, name=item['name'], price_single=item['price'], quantity=item['quantity'], price_total=(item['price']*item['quantity']))
  95. db.session.add(sale_item)
  96. db.session.commit()
  97. return "complete"
  98.  
  99. @app.route("/paytab", methods=['POST'])
  100. def payTab():
  101. unpaidSales = Sale.query.filter_by(paid=False).all()
  102. data = request.get_json(force=True)
  103. tabName = data['tabName']
  104. for sale in unpaidSales:
  105. if sale.tab_name == tabName:
  106. sale.paid = True
  107. db.session.commit()
  108. return "complete"
  109.  
  110. @app.route("/additem", methods=['POST'])
  111. def addItem():
  112. data = request.get_json(force=True)
  113. price = int(float(data['price']) * 100)
  114. category = Category.query.filter_by(name=data['category']).first()
  115. item = Item(name=data['name'], price=price, on_sale=True, category=category)
  116. db.session.add(item)
  117. db.session.commit()
  118.  
  119. return "complete"
  120.  
  121. @app.route("/edititem", methods=['POST'])
  122. def editItem():
  123. data = request.get_json(force=True)
  124. if data['operation'] == "edit":
  125. item = Item.query.filter_by(id=data['id']).first()
  126. item.name = data['name']
  127. item.price = data['price']
  128. item.category = Category.query.filter_by(id=data['category']).first()
  129. item.on_sale = data['on_sale']
  130. db.session.commit()
  131. return "complete"
  132. elif data['operation'] == "delete":
  133. item = Item.query.filter_by(id=data['id']).first()
  134. for saleitem in item.sales:
  135. db.session.delete(saleitem.sale)
  136. db.session.delete(saleitem)
  137. db.session.delete(item)
  138. db.session.commit()
  139. return "complete"
  140.  
  141. @app.route("/addcategory", methods=['POST'])
  142. def addCategory():
  143. data = request.get_json(force=True)
  144. if Category.query.filter_by(name=data['name']).first() is not None:
  145. abort(400)
  146. if Category.query.order_by(Category.weight.desc()).first() is None:
  147. newWeight = 1
  148. else:
  149. newWeight = Category.query.order_by(Category.weight.desc()).first().weight + 1
  150. category = Category(name=data['name'], weight=newWeight)
  151. db.session.add(category)
  152. db.session.commit()
  153.  
  154. return "complete"
  155.  
  156. @app.route("/editcategory", methods=['POST'])
  157. def editCategory():
  158. data = request.get_json(force=True)
  159. if data['operation'] == "edit":
  160. if (Category.query.filter(Category.name == data['name']).filter(Category.id != data['id']).first() is not None) or (Category.query.filter(Category.weight == data['weight']).filter(Category.id != data['id']).first() is not None):
  161. abort(400)
  162. category = Category.query.filter_by(id=data['id']).first()
  163. #if Category.query.filter_by(name=data['name']).first() is None:
  164. category.name = data['name']
  165. #if Category.query.filter_by(weight=data['weight']).first() is None:
  166. category.weight = data['weight']
  167. db.session.commit()
  168. return "complete"
  169. elif data['operation'] == "delete":
  170. category = Category.query.filter_by(id=data['id']).first()
  171. items = category.items
  172. for item in items:
  173. for saleitem in item.sales:
  174. db.session.delete(saleitem.sale)
  175. db.session.delete(saleitem)
  176. db.session.delete(item)
  177. db.session.delete(category)
  178. db.session.commit()
  179. return "complete"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement