jsonAndRequest.py 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. import json
  2. import requests
  3. #Тестовый класс User и Address (ВАЖНО!!!) поля классов должны называться также как и поля json объекта
  4. #Full json order example
  5. '''
  6. {
  7. "ticket": 123,
  8. "state": 111,
  9. "id_metaservice": 1,
  10. "is_global": false,
  11. "is_visible": false,
  12. "service": 1,
  13. "service_type": 1,
  14. "time_placed": "2023-05-15T16:40:32.179777Z",
  15. "time_start": "2023-05-15T16:40:32.179777Z",
  16. "time_start_predicted": "2023-05-15T16:40:32.179777Z",
  17. "time_finish_predicted": "2023-05-15T16:40:32.179777Z",
  18. "time_start_real": "2023-05-15T16:40:32.179777Z",
  19. "time_finish_real": "2023-05-15T16:40:32.179777Z",
  20. "order_place_start": "р-н Беговой",
  21. "order_place_start_gps": "55.751941, 37.607513",
  22. "order_place_start_real": "р-н Беговой",
  23. "order_place_start_real_gps": "55.751941, 37.607513",
  24. "order_place_finish_predicted": "р-н Мещанский",
  25. "order_place_finish_predicted_gps": "55.751941, 37.607513",
  26. "order_place_finish_real": "р-н Мещанский",
  27. "order_place_finish_real_gps": "55.751941, 37.607513",
  28. "predicted_price": 1000,
  29. "real_price": 1001,
  30. "payment_transaction_id": 1,
  31. "rating_id": 1,
  32. "provider": 1,
  33. "provider_screen_name": "Vasya Ispolnitelev",
  34. "receiver": 1,
  35. "receiver_screen_name": "Marfa Clientovna",
  36. "client_id": 1,
  37. "resource_id": 1
  38. }
  39. '''
  40. #minimal acceptable as order json example
  41. '''
  42. {
  43. "ticket": 123,
  44. "state": 111,
  45. "id_metaservice": 1,
  46. "is_global": false,
  47. "is_visible": false,
  48. "service": 1,
  49. "service_type": 1,
  50. "time_placed": "2023-05-15T16:40:32.179777Z",
  51. "time_start": null,
  52. "time_start_predicted": null,
  53. "time_finish_predicted": null,
  54. "time_start_real": null,
  55. "time_finish_real": null,
  56. "order_place_start": null,
  57. "order_place_start_gps": null,
  58. "order_place_start_real": null,
  59. "order_place_start_real_gps": null,
  60. "order_place_finish_predicted": null,
  61. "order_place_finish_predicted_gps": null,
  62. "order_place_finish_real": null,
  63. "order_place_finish_real_gps": null,
  64. "predicted_price": null,
  65. "real_price": null,
  66. "payment_transaction_id": null,
  67. "rating_id": null,
  68. "provider": null,
  69. "provider_screen_name": null,
  70. "receiver": null,
  71. "receiver_screen_name": null,
  72. "client_id": null,
  73. "resource_id": null
  74. }
  75. '''
  76. class Order(object):
  77. def __init__(self, ticket, state, id_metaservice, is_global, is_visible, service, service_type, time_placed, time_start=None, time_start_predicted=None, time_finish_predicted=None, time_start_real=None, time_finish_real=None, order_place_start=None, order_place_start_gps=None, order_place_start_real=None, order_place_start_real_gps=None, order_place_finish_predicted=None, order_place_finish_predicted_gps=None, order_place_finish_real=None, order_place_finish_real_gps=None, predicted_price=None, real_price=None, payment_transaction_id=None, rating_id=None, provider=None, provider_screen_name=None, receiver=None, receiver_screen_name=None, client_id=None, resource_id=None):
  78. self.ticket = ticket
  79. self.state = state
  80. self.id_metaservice = id_metaservice
  81. self.is_global = is_global
  82. self.is_visible = is_visible
  83. self.service = service
  84. self.service_type = service_type
  85. self.time_placed = time_placed
  86. self.time_start = time_start
  87. self.time_start_predicted = time_start_predicted
  88. self.time_finish_predicted = time_finish_predicted
  89. self.time_start_real = time_start_real
  90. self.time_finish_real = time_finish_real
  91. self.order_place_start = order_place_start
  92. self.order_place_start_gps = order_place_start_gps
  93. self.order_place_start_real = order_place_start_real
  94. self.order_place_start_real_gps = order_place_start_real_gps
  95. self.order_place_finish_predicted = order_place_finish_predicted
  96. self.order_place_finish_predicted_gps = order_place_finish_predicted_gps
  97. self.order_place_finish_real = order_place_finish_real
  98. self.order_place_finish_real_gps = order_place_finish_real_gps
  99. self.predicted_price = predicted_price
  100. self.real_price = real_price
  101. self.payment_transaction_id = payment_transaction_id
  102. self.rating_id = rating_id
  103. self.provider = provider
  104. self.provider_screen_name = provider_screen_name
  105. self.receiver = receiver
  106. self.receiver_screen_name = receiver_screen_name
  107. self.client_id = client_id
  108. self.resource_id = resource_id
  109. #доделать до конца по аналогии с закоммиченным json
  110. def __str__(self):
  111. return "{0}, {1}, {2}, {3}, {4}, {5}, {6},\n{7}, {8}, {9}, {10}, {11}, {12},\n{13}, {14}, {15}, {16}, {17}, {18}, {19}, {20},\n{21}, {22}, {23}, {24},\n{25}, {26}, {27}, {28}, {29}, {30}".format(self.ticket, self.state, self.id_metaservice, self.is_global, self.is_visible, self.service, self.service_type, self.time_placed, self.time_start, self.time_start_predicted, self.time_finish_predicted, self.time_start_real, self.time_finish_real, self.order_place_start, self.order_place_start_gps, self.order_place_start_real, self.order_place_start_real_gps, self.order_place_finish_predicted, self.order_place_finish_predicted_gps, self.order_place_finish_real, self.order_place_finish_real_gps, self.predicted_price, self.real_price, self.payment_transaction_id, self.rating_id, self.provider, self.provider_screen_name, self.receiver, self.receiver_screen_name, self.client_id, self.resource_id)
  112. #\n добавляете в местах с пустой строкой в шаблоне
  113. #ticket json example
  114. '''
  115. {
  116. "id": 2,
  117. "status": 111,
  118. "created_date": "2023-05-15",
  119. "status_changed_date": "2023-05-15T17:16:22.955601Z",
  120. "priority": 0,
  121. "title": "Test",
  122. "note": "{\n \n \"ticket\": 1,\n \"state\": 1,\n \"id_metaservice\": 1,\n \"is_global\": false,\n \"is_visible\": false,\n \"service\": 1,\n \"service_type\": 1,\n\n \"time_placed\": 1}"
  123. "due_date": "2023-05-15",
  124. "task_list": 10,
  125. "created_by": 1,
  126. "type": 1,
  127. "assigned_to": 1
  128. }
  129. '''
  130. #ticket minimal example
  131. '''
  132. {
  133. "id": 2,
  134. "status": 111,
  135. "created_date": "2023-05-15",
  136. "status_changed_date": "2023-05-15T17:16:22.955601Z",
  137. "priority": 0,
  138. "title": null,
  139. "note": null,
  140. "due_date": null,
  141. "task_list": 10,
  142. "created_by": 1,
  143. "type": 1,
  144. "assigned_to": null
  145. }
  146. '''
  147. class OrderTicket(object):
  148. def __init__(self, id, status, created_date, status_changed_date, priority, title=None, note=None, due_date=None, task_list, created_by, type, assigned_to=None):
  149. self.id = id
  150. self.status = status
  151. self.created_date = created_date
  152. self.status_changed_date = status_changed_date
  153. self.priority = priority
  154. self.title = title
  155. self.note = note
  156. self.due_date = due_date
  157. self.task_list = task_list
  158. self.created_by = created_by
  159. self.type = type
  160. self.assigned_to = assigned_to
  161. def __str__(self):
  162. return "{0}, {1}, {2}, {3}, {4}, {5}, {6},\n{7}, {8}, {9}, {10}, {11}, {12},\n".format(self.id, self.status, self.created_date, self.status_changed_date, self.priority, self.title, self.note, self.due_date, self.task_list, self.created_by, self.type, self.assigned_to)
  163. #Функция преобразования json в объект класса Order
  164. def jsonToOrder(jsonstring) -> Order:
  165. jsonObj = json.loads(jsonstring)
  166. print(jsonObj)
  167. u = Order(**jsonObj)
  168. return u
  169. #Функция преобразования json в объект класса OrderTicket
  170. def jsonToTicket(jsonstring) -> OrderTicket:
  171. jsonObj = json.loads(jsonstring)
  172. print(jsonObj)
  173. u = Order(**jsonObj)
  174. return u
  175. #Функция обращения к апи и получение токена
  176. def requestGetToken(login, password, url) -> str:
  177. #login = "79876543210"
  178. #password = "admin12345@"
  179. #url = "https://user.sharix-app.org/auth/token/login/"
  180. data = {
  181. "password": password,
  182. "phone_number": login
  183. }
  184. response = requests.post(url, json=data)
  185. result = response.json()
  186. return result['auth_token']
  187. #Функция обращения к апи и получение токена
  188. def createUser(username, phone, password, url) -> str:
  189. data = {
  190. "username": username,
  191. "phone_number": phone,
  192. "password": password
  193. }
  194. response = requests.post(url, json=data)
  195. result = response.json()
  196. return result
  197. #Функция обращения к апи и получение списка пользователей
  198. def requestGetListUser():
  199. auth_token=requestGetToken()
  200. print(auth_token)
  201. headers = {'Authorization': f'Token {auth_token}'}
  202. url = 'https://user.sharix-app.org/platform/api/sharix-users/'
  203. response = requests.get(url, headers=headers)
  204. print(response)
  205. print(response.json())
  206. def requestGetList(token, url):
  207. auth_token=requestGetToken("", "", "")
  208. #print(auth_token)
  209. headers = {'Authorization': f'Token {auth_token}'}
  210. #url = 'https://user.sharix-app.org/platform/api/sharix-users/'
  211. response = requests.get(API_URL+"/metaservicesynced/api/orders/", headers=headers)
  212. print(response)
  213. print(response.json())
  214. if not json:
  215. print("Empty array")
  216. else:
  217. for i in json:
  218. try:
  219. order = Order(**i)
  220. print(order)
  221. except Exception as ex:
  222. print(ex)