|
@@ -3,8 +3,9 @@ import requests
|
|
|
import config
|
|
|
import ast
|
|
|
import logging
|
|
|
-import loggingConfig
|
|
|
-import pprint
|
|
|
+import loggingConfig
|
|
|
+import pprint # Форматирование текста в human readable формате
|
|
|
+import sys
|
|
|
|
|
|
#Тестовый класс User и Address (ВАЖНО!!!) поля классов должны называться также как и поля json объекта
|
|
|
'''
|
|
@@ -140,6 +141,58 @@ class Order(object):
|
|
|
}
|
|
|
'''
|
|
|
|
|
|
+orderJson = {
|
|
|
+ "ticket": 123,
|
|
|
+ "status": 111,
|
|
|
+
|
|
|
+ "priority": 1,
|
|
|
+ "title": "123",
|
|
|
+ "note": "123",
|
|
|
+ "due_date": "2000-01-01",
|
|
|
+
|
|
|
+ "id_metaservice": 1,
|
|
|
+ "is_global": False,
|
|
|
+ "is_visible": False,
|
|
|
+ "service": 1,
|
|
|
+ "service_type": 1,
|
|
|
+
|
|
|
+ "status_changed_date": "2023-05-15T17:16:22.955601Z",
|
|
|
+ "time_placed": "2023-05-15T16:40:32.179777Z",
|
|
|
+ "time_start": "2023-05-15T16:40:32.179777Z",
|
|
|
+ "time_start_predicted": "2023-05-15T16:40:32.179777Z",
|
|
|
+ "time_finish_predicted": "2023-05-15T16:40:32.179777Z",
|
|
|
+ "time_start_real": "2023-05-15T16:40:32.179777Z",
|
|
|
+ "time_finish_real": "2023-05-15T16:40:32.179777Z",
|
|
|
+
|
|
|
+ "order_place_type": "address",
|
|
|
+ "order_place_start": "р-н Беговой",
|
|
|
+ "order_place_start_gps": "55.751941, 37.607513",
|
|
|
+ "order_place_start_sector": 4,
|
|
|
+ "order_place_start_real": "р-н Беговой",
|
|
|
+ "order_place_start_real_gps": "55.751941, 37.607513",
|
|
|
+ "order_place_finish_predicted": "р-н Мещанский",
|
|
|
+ "order_place_finish_predicted_gps": "55.751941, 37.607513",
|
|
|
+ "order_place_finish_sector": 4,
|
|
|
+ "order_place_finish_real": "р-н Мещанский",
|
|
|
+ "order_place_finish_real_gps": "55.751941, 37.607513",
|
|
|
+
|
|
|
+ "predicted_price": 1000,
|
|
|
+ "real_price": 1001,
|
|
|
+ "payment_transaction_id": 1,
|
|
|
+ "rating_id": 1,
|
|
|
+
|
|
|
+ "provider": 1,
|
|
|
+ "provider_screen_name": "Vasya Ispolnitelev",
|
|
|
+ "receiver": 1,
|
|
|
+ "receiver_screen_name": "Marfa Clientovna",
|
|
|
+ "client_id": 1,
|
|
|
+ "client_screen_name": "Fedor Client",
|
|
|
+ "resource_id": None,
|
|
|
+ "attempts": None,
|
|
|
+ "state": "ok"
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
class OrderTicket(object):
|
|
|
def __init__(self, id, status, created_date, status_changed_date, priority, title=None, note=None, due_date=None, task_list=None, created_by=None, type=None, assigned_to=None):
|
|
|
self.id = id
|
|
@@ -188,6 +241,7 @@ def requestGetToken(login, password, url) -> str:
|
|
|
response = requests.post(url, json=data)
|
|
|
result = response.json()
|
|
|
return result['auth_token']
|
|
|
+
|
|
|
#Функция обращения к апи и получение токена
|
|
|
def createUser(username, phone, password, url) -> str:
|
|
|
data = {
|
|
@@ -198,6 +252,7 @@ def createUser(username, phone, password, url) -> str:
|
|
|
response = requests.post(url, json=data)
|
|
|
result = response.json()
|
|
|
return result
|
|
|
+
|
|
|
#Функция обращения к апи и получение списка пользователей
|
|
|
def requestGetListUser():
|
|
|
auth_token=requestGetToken()
|
|
@@ -212,15 +267,18 @@ def requestGetListUser():
|
|
|
logging.debug(f"Auth token: {response.json()}")
|
|
|
|
|
|
|
|
|
+
|
|
|
def requestGetList(auth_token, url):
|
|
|
#auth_token=requestGetToken(login, password, url)
|
|
|
#print(auth_token)
|
|
|
headers = {'Authorization': f'Token {auth_token}'}
|
|
|
#url = 'https://user.sharix-app.org/platform/api/sharix-users/'
|
|
|
+
|
|
|
response = requests.get(config.API_URL+"/tickets/api/tickets/?list_id=10", headers=headers)
|
|
|
+
|
|
|
#response = requests.get(config.API_URL+"/metaservicesynced/api/orders/", headers=headers)
|
|
|
#print(response)
|
|
|
- logging.debug(response)
|
|
|
+
|
|
|
#return response.json()
|
|
|
#print(response.json())
|
|
|
logging.debug(pprint.pformat(response.json()))
|
|
@@ -263,7 +321,87 @@ def requestGetList(auth_token, url):
|
|
|
return startlist
|
|
|
|
|
|
|
|
|
+def update_partially(url, field, value, headers):
|
|
|
+ """
|
|
|
+ Изменить конкретное поле
|
|
|
+ """
|
|
|
+ return
|
|
|
|
|
|
+
|
|
|
+def create(url, json, headers) -> str:
|
|
|
+ """
|
|
|
+ Создать элемент с помощью POST
|
|
|
+ Возвращает: json строку с данными созданного элемента или ошибки
|
|
|
+ Статус выполнения: проверена работа на локальном сервере
|
|
|
+ """
|
|
|
+ response = requests.post(url, json=json, headers=headers)
|
|
|
+ if response.status_code != 201:
|
|
|
+ logging.error(response.json())
|
|
|
+ return
|
|
|
+
|
|
|
+ return response.json()
|
|
|
+
|
|
|
+
|
|
|
+def createOrder(url, order, headers):
|
|
|
+ """
|
|
|
+ Создать заказ
|
|
|
+ Возвращает: json строку с данными созданного заказа или ошибки
|
|
|
+ Статус выполнения: проверена работа на локальном сервере
|
|
|
+ """
|
|
|
+ # Конвертировать объект в json
|
|
|
+ try:
|
|
|
+ json = vars(order)
|
|
|
+ except Exception as e:
|
|
|
+ logging.error("Ошибка конвертации в json", exc_info=True)
|
|
|
+ return
|
|
|
+
|
|
|
+ logging.info("Успешная конвертация в json")
|
|
|
+ logging.debug(pprint.pformat(json))
|
|
|
+
|
|
|
+ # Создать заказ
|
|
|
+ # none - ошибка создания, json строка - успешное создание
|
|
|
+ created_json = create(url, json, headers)
|
|
|
+
|
|
|
+ # Проверить успешность создания
|
|
|
+ if created_json:
|
|
|
+ logging.info("Заказ успешно создан.")
|
|
|
+ return created_json
|
|
|
+
|
|
|
+ logging.info("Ошибка создания заказа.")
|
|
|
+ return
|
|
|
+
|
|
|
+
|
|
|
+def testCreateOrder():
|
|
|
+ """
|
|
|
+ Код для тестирования создания заказа
|
|
|
+ """
|
|
|
+
|
|
|
+ test_token = "4a9333794bb8296083aaa898954affe6a74e6a20"
|
|
|
+ test_headers = {'Authorization': f'Token {test_token}'}
|
|
|
+
|
|
|
+ try:
|
|
|
+ order1 = Order(
|
|
|
+ ticket=1,
|
|
|
+ state=1,
|
|
|
+ id_metaservice=1,
|
|
|
+ is_global=1,
|
|
|
+ is_visible=1,
|
|
|
+ service=1,
|
|
|
+ service_type=1,
|
|
|
+ time_placed="2000-01-01",
|
|
|
+ order_place_finish_predicted_gps="55.751941, 37.607513"
|
|
|
+ )
|
|
|
+ except Exception as e:
|
|
|
+ logging.error("order wasn't created", exc_info=True)
|
|
|
+ sys.exit()
|
|
|
+ else:
|
|
|
+ logging.info("order created successfully")
|
|
|
+ createOrder("http://127.0.0.1:8000/openlocal/api/orderslocal/", order1, test_headers)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+'''
|
|
|
+https://testbase.sharix-app.org/openlocal/api/orderslocal/
|
|
|
уже есть:
|
|
|
чтение
|
|
|
|
|
@@ -278,3 +416,10 @@ def requestGetList(auth_token, url):
|
|
|
|
|
|
отправлять vs создать
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+вложенные json убрать (сделать одноуровневым)
|
|
|
+вернуть attempts в json
|
|
|
+
|
|
|
+xmpppy как отправлять сообшение в группу?
|
|
|
+'''
|