umarov99

Untitled

Mar 5th, 2022
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.99 KB | None | 0 0
  1. from kivy.app import App
  2. from kivy.lang import Builder
  3. from kivy.uix.screenmanager import ScreenManager, Screen
  4. from kivy.core.window import Window
  5. from kivy.clock import Clock
  6. from requests import get, post
  7.  
  8.  
  9. ENDPOINT = 'https://code-factory.site/'
  10.  
  11. Window.size = (560, 780)
  12. Window.clearcolor = (0, 0.17, 0.55, 1)
  13.  
  14.  
  15. notice_list = []
  16. try:
  17. with open('f.txt', 'r') as f:
  18. file = f.readlines()
  19. department = file[0].replace('\n', '')
  20. otk = file[1].replace('\n', '')
  21. except:
  22. department = None
  23. otk = None
  24.  
  25. buttons = """
  26. Button:
  27. id: back
  28. text: 'ВОЗВРАЩЕНИЕ ЗАКАЗА НА ДОРАБОТКУ'
  29. background_color: (0, 0.12, 0.52, 1)
  30. on_press: root.server('back', False)
  31. """ if otk == "otk" or otk == None else ''
  32.  
  33. Builder.load_string(f"""
  34. <MenuScreen>:
  35. BoxLayout:
  36. orientation: 'vertical'
  37. padding: 5, 5
  38. spacing: 5
  39.  
  40. Button:
  41. text: 'УВЕДОМЛЕНИЯ'
  42. background_color: (0, 0.12, 0.52, 1)
  43. on_press: root.clear()
  44. Image:
  45. source: 'bell-ring.png'
  46. id: bell
  47. opacity: 0
  48. size_hint: None, None
  49. size: 30, 30
  50. center_x: 330
  51. center_y: 450
  52. Button:
  53. text: 'ЗАКАЗЫ В РАБОТЕ'
  54. background_color: (0, 0.12, 0.52, 1)
  55. on_press: root.manager.current = 'foto'
  56. Button:
  57. text: 'СКАНИРОВАНИЕ QR'
  58. background_color: (0, 0.12, 0.52, 1)
  59. on_press: root.manager.current = 'scan'
  60.  
  61. <AllScreen>:
  62. BoxLayout:
  63. orientation: 'vertical'
  64. Button:
  65. text: 'KM'
  66. background_color: (0, 0.12, 0.52, 1)
  67. on_press: root.save('km')
  68. Button:
  69. text: 'KMД'
  70. background_color: (0, 0.12, 0.52, 1)
  71. on_press: root.save('kmd')
  72. Button:
  73. text: 'ТМЦ'
  74. background_color: (0, 0.12, 0.52, 1)
  75. on_press: root.save('tmc')
  76. Button:
  77. text: 'ЗАГОТОВКА'
  78. background_color: (0, 0.12, 0.52, 1)
  79. on_press: root.save('zagatovka')
  80. Button:
  81. text: 'СБОРКА'
  82. background_color: (0, 0.12, 0.52, 1)
  83. on_press: root.save('sborka')
  84. Button:
  85. text: 'СВАРКА'
  86. background_color: (0, 0.12, 0.52, 1)
  87. on_press: root.save('svarka')
  88. Button:
  89. text: 'УПАКОВКА'
  90. background_color: (0, 0.12, 0.52, 1)
  91. on_press: root.save('upakovka')
  92.  
  93. <All2Screen>:
  94. BoxLayout:
  95. orientation: 'vertical'
  96. Button:
  97. text: 'Производство'
  98. background_color: (0, 0.12, 0.52, 1)
  99. on_press: root.save('not_otk')
  100. Button:
  101. text: 'ОТК'
  102. background_color: (0, 0.12, 0.52, 1)
  103. on_press: root.save('otk')
  104.  
  105. <FotoScreen>:
  106. BoxLayout:
  107. orientation: 'vertical'
  108. Button:
  109. background_color: (0, 0.17, 0.55, 1)
  110. on_press: root.manager.current = 'menu'
  111. Image:
  112. source: 'demo_01.png'
  113. size: self.parent.size
  114.  
  115. <ScanScreen>:
  116. BoxLayout:
  117. #:import ZBarCam kivy_garden.zbarcam.ZBarCam
  118. id: box
  119. orientation: 'vertical'
  120. padding: 5, 5
  121. spacing: 5
  122. ZBarCam:
  123. id: qrcodecam
  124. Label:
  125. size_hint: None, None
  126. size: self.texture_size[0], 50
  127. id: qr_text
  128. text: ' '
  129.  
  130. Button:
  131. text: 'РАБОТА НАЧАТА'
  132. background_color: (0, 0.12, 0.52, 1)
  133. on_press: root.server('start', True)
  134. Button:
  135. text: 'РАБОТА ПРИОСТАНОВЛЕНА/ВОЗОБНОВЛЕНА'
  136. background_color: (0, 0.12, 0.52, 1)
  137. on_press: root.server('stop', True)
  138. Button:
  139. text: 'ОБРАТНО В МЕНЮ'
  140. background_color: (0, 0.12, 0.52, 1)
  141. on_press: root.manager.current = 'menu'
  142. Button:
  143. text: 'ОТСКАНИРОВАТЬ'
  144. background_color: (0, 0.12, 0.52, 1)
  145. on_press: root.get_qr()
  146. Button:
  147. text: 'РАБОТА ЗАКОНЧЕНА'
  148. background_color: (0, 0.12, 0.52, 1)
  149. on_press: root.server('end', True)
  150. """ + buttons)
  151.  
  152.  
  153. class MenuScreen(Screen):
  154. def clear(self):
  155. global notice_list
  156. notice_list.clear()
  157.  
  158.  
  159. class AllScreen(Screen):
  160. def save(self, select):
  161. global department
  162. department = select
  163.  
  164. with open('f.txt', 'w') as f:
  165. f.write(f'{department}\n')
  166.  
  167. App.get_running_app().root.current = 'select_otk'
  168.  
  169. class All2Screen(Screen):
  170. def save(self, select):
  171. global otk
  172. otk = select
  173.  
  174. with open('f.txt', 'a') as f:
  175. f.write(f'{otk}\n')
  176.  
  177. if otk != 'otk':
  178. scan_screen = App.get_running_app().root.get_screen('scan')
  179.  
  180. scan_screen.ids['box'].remove_widget(scan_screen.ids['back'])
  181.  
  182. App.get_running_app().root.current = 'menu'
  183.  
  184. class FotoScreen(Screen):
  185. pass
  186.  
  187. class ScanScreen(Screen):
  188. def server(self, command, check_otk):
  189. r = get(f'https://code-factory.site/api/give_csrf')
  190. csrf = r.text.split('=')[-1][1:-2]
  191. cookies = r.cookies.get_dict()
  192.  
  193. add = ''
  194. if check_otk and otk == 'otk':
  195. add = '_otk'
  196.  
  197. post(f'https://code-factory.site/api/{command}{add}/{department}',
  198. data = {'id': self.ids['qr_text'].text.split('\n')[0], 'csrfmiddlewaretoken': csrf},
  199. cookies = cookies)
  200.  
  201. self.ids['qr_text'].text = ''
  202.  
  203. def get_qr(self):
  204. qr = ''.join([symbol.data.decode('utf-8') for symbol in self.ids['qrcodecam'].symbols])
  205.  
  206. self.ids['qr_text'].text = qr
  207.  
  208.  
  209. def get_notice(_):
  210. for i in get(f'https://code-factory.site/api/notice/{department}').text.split(','):
  211. if i != '':
  212. notice_list.append(i)
  213.  
  214. if len(notice_list) > 0:
  215. App.get_running_app().root.get_screen('menu').ids['bell'].opacity = 1
  216. else:
  217. App.get_running_app().root.get_screen('menu').ids['bell'].opacity = 0
  218.  
  219.  
  220. class MainApp(App):
  221. def build(self):
  222. sm = ScreenManager()
  223.  
  224. sm.add_widget(MenuScreen(name='menu'))
  225. sm.add_widget(ScanScreen(name='scan'))
  226. sm.add_widget(FotoScreen(name='foto'))
  227. sm.add_widget(AllScreen(name='all'))
  228. sm.add_widget(All2Screen(name='select_otk'))
  229.  
  230. if department == None or department == 'None' or otk == None or otk == 'None':
  231. sm.current = 'all'
  232. else:
  233. sm.current = 'menu'
  234.  
  235. return sm
  236.  
  237.  
  238. if __name__=='__main__':
  239. Clock.schedule_interval(get_notice, 3)
  240.  
  241. MainApp().run()
  242.  
Advertisement
Add Comment
Please, Sign In to add comment