Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import kivy
- from kivy.uix.gridlayout import GridLayout
- from kivy.uix.floatlayout import FloatLayout
- from kivy.uix.button import Label, Button
- from kivy.app import App
- from kivy.lang import Builder
- from kivy.properties import BooleanProperty, ListProperty, StringProperty, ObjectProperty
- from kivy.uix.screenmanager import ScreenManager, Screen
- from kivy.uix.textinput import TextInput
- import requests
- from kivy.uix.recyclegridlayout import RecycleGridLayout
- from kivy.uix.behaviors import FocusBehavior
- from kivy.uix.recycleview.layout import LayoutSelectionBehavior
- from kivy.uix.button import Button
- from kivy.uix.recycleview.views import RecycleDataViewBehavior
- from kivy.clock import Clock
- from kivy.storage.jsonstore import JsonStore
- from kivy.uix.button import Button
- from kivy.uix.boxlayout import BoxLayout
- import time
- from kivy.uix.listview import ListItemButton, ListItemLabel
- from kivy.graphics import Color, Rectangle
- class orderListButton(ListItemButton):
- def __init__(self, **kwargs):
- super(orderListButton, self).__init__(**kwargs)
- self.height = "60"
- def on_press(self):
- # print("button pressed")
- orderid = self.text.split()[0]
- status = self.text.split()[3]
- # print(status)
- newstatus = "Completed"
- if status == "Pending":
- newstatus = "Now Preparing"
- elif status == "Now":
- newstatus = "Ready"
- r = requests.patch("https://nbcb-8f230.firebaseio.com/foodapp/orders/{}.json".format(orderid), data='{ "status": "'+newstatus+'" }')
- data = r.json()
- # print(r.status_code, r.reason)
- # print(data)
- class orderListLabel(ListItemLabel):
- pass
- class ordersScreen(Screen):
- def on_pre_enter(self):
- Clock.schedule_interval(self.refresh, 2)
- def refresh(self, *_):
- try:
- global vendorid
- except(NameError):
- global vendorid
- vendorid = ""
- # print(vendorid)
- readylist = [] # To filter orders that have not been into ready and late
- notreadylist = [] # To filter orders that have not been into pending and now preparing
- r = requests.get("https://nbcb-8f230.firebaseio.com/foodapp/orders.json?orderBy=%22vendorid%22&equalTo=%22{}%22&print=pretty".format(vendorid))
- data = r.json()
- # print(r.status_code, r.reason)
- # print(data)
- for k,v in data.items():
- if v['status'] == "Ready" or v['status'] == "Late":
- readylist.append("{:<15}{:<15}{:<15}{:<15}".format(k, v["customerid"], v["foodid"], v["status"]))
- if v['status'] == "Pending" or v['status'] == "Now Preparing":
- notreadylist.append("{:<15}{:<15}{:<15}{:<15}".format(k, v["customerid"], v["foodid"], v["status"]))
- self.ready_list.adapter.data = readylist
- self.ready_list._trigger_reset_populate()
- self.notready_list.adapter.data = notreadylist
- self.notready_list._trigger_reset_populate()
- def logout(self,*_):
- self.manager.current = 'login'
- def statuschange(self,*_):
- self.manager.current = 'orderStatus'
- print('orderscreen init!')
- class loginScreen(Screen):
- def login(self, *_):
- def error():
- self.errorLabel.text = 'Incorrect Username or Password'
- username = self.user.text
- password = self.pw.text
- r = requests.get("https://nbcb-8f230.firebaseio.com/foodapp/vendors/{}.json?print=pretty".format(username))
- data = r.json()
- #print(r.status_code, r.reason)
- #print(type(data))
- if (data is None) or (username == ''):
- error()
- elif data['password'] == password :
- print("login successful!")
- global vendorid
- vendorid = username
- print(vendorid)
- self.manager.current = "orders"
- else:
- error()
- print("login screen init!")
- class orderStatusScreen(Screen):
- def logout(self,*_):
- self.manager.current = 'login'
- def backtoorders(self,*_):
- self.manager.current = 'orders'
- def on_pre_enter(self):
- Clock.schedule_interval(self.refresh, 5)
- def refresh(self, *_):
- try:
- global vendorid
- except NameError:
- vendorid = ""
- r = requests.get("https://nbcb-8f230.firebaseio.com/foodapp/orders.json?orderBy=%22vendorid%22&equalTo=%22{}%22&print=pretty".format(vendorid))
- data = r.json()
- ready = [] # To filter orders that have not been into ready and late
- late = [] # To filter orders that have not been into ready and late
- pending_and_preparing = [] # To filter orders that have not been into pending and now preparing
- for k,v in data.items():
- if v['status'] == "Ready":
- ready.append(k)
- if v['status'] == "Late":
- late.append(k)
- if v['status'] == "Now Preparing":
- pending_and_preparing.append(k)
- self.ready_list.adapter.data = ready
- self.ready_list._trigger_reset_populate()
- self.preparing_list.adapter.data = pending_and_preparing
- self.preparing_list._trigger_reset_populate()
- print("orderStatusScreen init!")
- class foodVendorApp(App):
- def build(self):
- sm = ScreenManager()
- sm.add_widget(loginScreen(name="login"))
- sm.add_widget(ordersScreen(name="orders"))
- sm.add_widget(orderStatusScreen(name="orderStatus"))
- sm.current = 'login'
- return sm
- foodVendorApp().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement