Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.95 KB | None | 0 0
  1. import kivy
  2. from kivy.uix.gridlayout import GridLayout
  3. from kivy.uix.floatlayout import FloatLayout
  4. from kivy.uix.button import Label, Button
  5. from kivy.app import App
  6. from kivy.lang import Builder
  7. from kivy.properties import BooleanProperty, ListProperty, StringProperty, ObjectProperty
  8. from kivy.uix.screenmanager import ScreenManager, Screen
  9. from kivy.uix.textinput import TextInput
  10. import requests
  11. from kivy.uix.recyclegridlayout import RecycleGridLayout
  12. from kivy.uix.behaviors import FocusBehavior
  13. from kivy.uix.recycleview.layout import LayoutSelectionBehavior
  14. from kivy.uix.button import Button
  15. from kivy.uix.recycleview.views import RecycleDataViewBehavior
  16. from kivy.clock import Clock
  17. from kivy.storage.jsonstore import JsonStore
  18. from kivy.uix.button import Button
  19. from kivy.uix.boxlayout import BoxLayout
  20. import time
  21. from kivy.uix.listview import ListItemButton, ListItemLabel
  22. from kivy.graphics import Color, Rectangle
  23.  
  24. class orderListButton(ListItemButton):
  25. def __init__(self, **kwargs):
  26. super(orderListButton, self).__init__(**kwargs)
  27. self.height = "60"
  28.  
  29. def on_press(self):
  30. # print("button pressed")
  31. orderid = self.text.split()[0]
  32. status = self.text.split()[3]
  33. # print(status)
  34. newstatus = "Completed"
  35. if status == "Pending":
  36. newstatus = "Now Preparing"
  37. elif status == "Now":
  38. newstatus = "Ready"
  39. r = requests.patch("https://nbcb-8f230.firebaseio.com/foodapp/orders/{}.json".format(orderid), data='{ "status": "'+newstatus+'" }')
  40. data = r.json()
  41. # print(r.status_code, r.reason)
  42. # print(data)
  43.  
  44. class orderListLabel(ListItemLabel):
  45. pass
  46.  
  47. class ordersScreen(Screen):
  48.  
  49. def on_pre_enter(self):
  50. Clock.schedule_interval(self.refresh, 2)
  51.  
  52. def refresh(self, *_):
  53. try:
  54. global vendorid
  55. except(NameError):
  56. global vendorid
  57. vendorid = ""
  58. # print(vendorid)
  59. readylist = [] # To filter orders that have not been into ready and late
  60. notreadylist = [] # To filter orders that have not been into pending and now preparing
  61. r = requests.get("https://nbcb-8f230.firebaseio.com/foodapp/orders.json?orderBy=%22vendorid%22&equalTo=%22{}%22&print=pretty".format(vendorid))
  62. data = r.json()
  63. # print(r.status_code, r.reason)
  64. # print(data)
  65. for k,v in data.items():
  66. if v['status'] == "Ready" or v['status'] == "Late":
  67. readylist.append("{:<15}{:<15}{:<15}{:<15}".format(k, v["customerid"], v["foodid"], v["status"]))
  68. if v['status'] == "Pending" or v['status'] == "Now Preparing":
  69. notreadylist.append("{:<15}{:<15}{:<15}{:<15}".format(k, v["customerid"], v["foodid"], v["status"]))
  70. self.ready_list.adapter.data = readylist
  71. self.ready_list._trigger_reset_populate()
  72. self.notready_list.adapter.data = notreadylist
  73. self.notready_list._trigger_reset_populate()
  74.  
  75. def logout(self,*_):
  76. self.manager.current = 'login'
  77.  
  78. def statuschange(self,*_):
  79. self.manager.current = 'orderStatus'
  80.  
  81. print('orderscreen init!')
  82.  
  83. class loginScreen(Screen):
  84.  
  85. def login(self, *_):
  86.  
  87. def error():
  88. self.errorLabel.text = 'Incorrect Username or Password'
  89.  
  90. username = self.user.text
  91. password = self.pw.text
  92. r = requests.get("https://nbcb-8f230.firebaseio.com/foodapp/vendors/{}.json?print=pretty".format(username))
  93. data = r.json()
  94. #print(r.status_code, r.reason)
  95. #print(type(data))
  96. if (data is None) or (username == ''):
  97. error()
  98. elif data['password'] == password :
  99. print("login successful!")
  100. global vendorid
  101. vendorid = username
  102. print(vendorid)
  103. self.manager.current = "orders"
  104. else:
  105. error()
  106. print("login screen init!")
  107.  
  108. class orderStatusScreen(Screen):
  109.  
  110. def logout(self,*_):
  111. self.manager.current = 'login'
  112.  
  113.  
  114. def backtoorders(self,*_):
  115. self.manager.current = 'orders'
  116.  
  117. def on_pre_enter(self):
  118. Clock.schedule_interval(self.refresh, 5)
  119.  
  120. def refresh(self, *_):
  121.  
  122. try:
  123. global vendorid
  124. except NameError:
  125. vendorid = ""
  126. r = requests.get("https://nbcb-8f230.firebaseio.com/foodapp/orders.json?orderBy=%22vendorid%22&equalTo=%22{}%22&print=pretty".format(vendorid))
  127. data = r.json()
  128. ready = [] # To filter orders that have not been into ready and late
  129. late = [] # To filter orders that have not been into ready and late
  130. pending_and_preparing = [] # To filter orders that have not been into pending and now preparing
  131. for k,v in data.items():
  132. if v['status'] == "Ready":
  133. ready.append(k)
  134. if v['status'] == "Late":
  135. late.append(k)
  136. if v['status'] == "Now Preparing":
  137. pending_and_preparing.append(k)
  138. self.ready_list.adapter.data = ready
  139. self.ready_list._trigger_reset_populate()
  140. self.preparing_list.adapter.data = pending_and_preparing
  141. self.preparing_list._trigger_reset_populate()
  142.  
  143. print("orderStatusScreen init!")
  144.  
  145. class foodVendorApp(App):
  146. def build(self):
  147. sm = ScreenManager()
  148. sm.add_widget(loginScreen(name="login"))
  149. sm.add_widget(ordersScreen(name="orders"))
  150. sm.add_widget(orderStatusScreen(name="orderStatus"))
  151. sm.current = 'login'
  152.  
  153. return sm
  154.  
  155. foodVendorApp().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement