Guest User

Untitled

a guest
Mar 15th, 2017
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.39 KB | None | 0 0
  1. import requests
  2. import datetime
  3. import settings
  4. import os
  5.  
  6. # Iiko.Biz
  7. TOKEN = os.environ.get('BIZ_TOKEN')
  8. SERVER = os.environ.get('BIZ_SERVER')
  9. USER = os.environ.get('BIZ_USER')
  10. PASS = os.environ.get('BIZ_PASS')
  11. ORG_ID = os.environ.get('BIZ_ORG_ID')
  12.  
  13. # iiko.front
  14. F_SERVER = os.environ.get('FRONT_SERVER')
  15. F_APARAMS = os.environ.get('FRONT_APARAMS')
  16.  
  17.  
  18. class APIClient:
  19.  
  20.     def auth(func):
  21.  
  22.         def auth_and_call():
  23.  
  24.             global TOKEN
  25.  
  26.             try:
  27.                 return func()
  28.             except requests.exceptions.HTTPError:
  29.                 payload = {'user_id': USER, 'user_secret': PASS}
  30.                 t = requests.get(SERVER + '/auth/access_token', params=payload).text[1:-1]
  31.                 print(t)
  32.                 TOKEN = t
  33.                 return func()
  34.         return auth_and_call
  35.  
  36.     @staticmethod
  37.     @auth
  38.     def get_stoplist():
  39.         # getting stoplist for all delivery terminals
  40.         payload = {'access_token': TOKEN, 'organization': ORG_ID}
  41.         r = requests.get(SERVER + '/stopLists/getDeliveryStopList', params=payload)
  42.         r.raise_for_status()
  43.         data = r.json()
  44.         return data
  45.  
  46.     @staticmethod
  47.     @auth
  48.     def get_delivery_points():
  49.         # getting a list of conceptions
  50.         payload = {'access_token': TOKEN, 'organization': ORG_ID}
  51.         r = requests.get(SERVER + '/deliverySettings/getDeliveryTerminals', params=payload)
  52.         r.raise_for_status()
  53.         data = r.json()
  54.         dp = [{'pointName': x['deliveryRestaurantName'][17:], 'pointId': x['deliveryTerminalId']}
  55.               for x in data['deliveryTerminals']]
  56.         return dp
  57.  
  58.     @staticmethod
  59.     @auth
  60.     def get_menu():
  61.         # getting menu
  62.         payload = {'access_token': TOKEN, 'revision': 19458}
  63.         r = requests.get(SERVER + '/nomenclature/' + ORG_ID, params=payload)
  64.         r.raise_for_status()
  65.         data = r.json()
  66.         return data
  67.  
  68.     @staticmethod
  69.     @auth
  70.     def get_couriers():
  71.         # getting the list of all registered couriers
  72.         payload = {'access_token': TOKEN, 'organization': ORG_ID}
  73.         r = requests.get(SERVER + '/rmsSettings/getCouriers', params=payload)
  74.         r.raise_for_status()
  75.         data = r.json()
  76.         couriers = [{'name': str(x['firstName'] + ' ' + x['lastName']),
  77.                      'id': x['id'], 'pin': x['pinCode']}
  78.                     for x in data['users']
  79.                     if x['firstName'] and x['lastName'] is not None
  80.                     ]
  81.         return couriers
  82.  
  83.     @staticmethod
  84.     @auth
  85.     def get_orders():
  86.  
  87.         date_from = datetime.datetime.now()
  88.         date_to = date_from + datetime.timedelta(days=1)
  89.         payload = {'access_token': TOKEN,
  90.                    'organization': ORG_ID,
  91.                    'dateFrom': datetime.datetime.strftime(date_from, "%Y-%m-%dT10:00:00"),
  92.                    'dateTo': datetime.datetime.strftime(date_to, "%Y-%m-%dT11:00:01")}
  93.         r = requests.get(SERVER + '/orders/deliveryOrders', params=payload)
  94.         r.raise_for_status()
  95.         orders = r.json()
  96.         return orders['deliveryOrders']
  97.  
  98.     @staticmethod
  99.     @auth
  100.     def get_orders_by_courier():
  101.  
  102.         courier = None
  103.         order_num = None
  104.         date_from = datetime.datetime.now()
  105.         date_to = date_from + datetime.timedelta(days=1)
  106.         payload = {'access_token': TOKEN,
  107.                    'organization': ORG_ID,
  108.                    'dateFrom': datetime.datetime.strftime(date_from, "%Y-%m-%dT10:00:00"),
  109.                    'dateTo': datetime.datetime.strftime(date_to, "%Y-%m-%dT11:00:01")}
  110.         r = requests.get(SERVER + '/orders/deliveryOrders', params=payload)
  111.         r.raise_for_status()
  112.         orders = r.json()
  113.         if order_num:
  114.             for order in orders['deliveryOrders']:
  115.                 if order['number'] == order_num:
  116.                     yield {
  117.                         'deliveryPoint': order['deliveryTerminal']['restaurantName'][17:],
  118.                         'orderNum': order['number'],
  119.                         'orderComment': order['comment'],
  120.                         'deliveryDate': order['deliveryDate'][:10],
  121.                         'deliveryTime': order['deliveryDate'][11:16],
  122.                         'guest':
  123.                             {
  124.                                 'name': order['customer']['name'],
  125.                                 'phone': order['customer']['phone'],
  126.                                 'guestAdress':
  127.                                     {
  128.                                         'street': order['address']['street'],
  129.                                         'home': order['address']['home'],
  130.                                         'housing': order['address']['housing'],
  131.                                         'Comment': order['address']['comment']
  132.                                     }
  133.                             }
  134.                     }
  135.                 else:
  136.                     if order['orderType']['orderServiceType'] == 'DELIVERY_BY_COURIER':
  137.                         if order['courierInfo'] and order['courierInfo']['courierId'] == courier:
  138.                             yield {
  139.                                 'deliveryPoint': order['deliveryTerminal']['restaurantName'][17:],
  140.                                 'orderNum': order['number'],
  141.                                 'orderComment': order['comment'],
  142.                                 'deliveryDate': order['deliveryDate'][:10],
  143.                                 'deliveryTime': order['deliveryDate'][11:16],
  144.                                 'guest':
  145.                                     {
  146.                                         'name': order['customer']['name'],
  147.                                         'phone': order['customer']['phone'],
  148.                                         'guestAdress':
  149.                                             {
  150.                                                 'street': order['address']['street'],
  151.                                                 'home': order['address']['home'],
  152.                                                 'housing': order['address']['housing'],
  153.                                                 'Comment': order['address']['comment']
  154.                                             }
  155.                                     }
  156.                             }
  157.                         else:
  158.                             pass
  159.                     else:
  160.                         pass
Add Comment
Please, Sign In to add comment