Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.42 KB | None | 0 0
  1.         data = request.data.get('data')[0]
  2.         if request.user.groups.filter(name='manager').exists():
  3.             return Response(status=status.HTTP_403_FORBIDDEN)
  4.  
  5.         # достаем название города для
  6.         get_city_id = requests.get(CARRYALL_URL + '/api_crud/event_place/{}/'.format(data['ticket']['bn_carryall_event_place']),
  7.                                    headers=CARRYALL_HEADERS).json()['city_id']
  8.         get_city_name = requests.get(CARRYALL_URL + '/api_crud/city/{}/'.format(get_city_id),
  9.                                     headers=CARRYALL_HEADERS).json()['name']
  10.         # привожу в формат для выполнения функции (CreateTicketFromSiteSerializer.get_or_create_event_time())
  11.         data_for_seance = {'event_carryall_id': data['ticket']['bn_carryall_event'],
  12.                           'event_name': data['ticket']['bn_carryall_event_name'],
  13.                           'event_place_name': data['ticket']['bn_carryall_event_place_name'],
  14.                           'event_time_datetime': data['ticket']['bn_carryall_event_time_name'],
  15.                           'event_time_carryall_id': data['ticket']['bn_carryall_event_time'],
  16.                           'hall_name': '',
  17.                           'city_name': get_city_name}
  18.  
  19.         # информация для отправки в кериол
  20.         carryall_ticket_data = {
  21.                                 'seance_id': data_for_seance['event_time_carryall_id'],
  22.                                 'event_id': data_for_seance['event_carryall_id'],
  23.                                 'sector_id': data['ticket'].get('bn_carryall_sector'),
  24.                                 'sector_name': data['ticket'].get('bn_carryall_sector_name'),
  25.                                 'sector_slug': pytils.translit.translify(data['ticket'].get('bn_carryall_sector_name')).lower().replace(' ', '_'),
  26.                                 'location': '{}, ряд {}, место {}'.format(
  27.                                     data['ticket'].get('bn_carryall_sector_name'),
  28.                                     data['ticket'].get('row', ''),
  29.                                     data['ticket'].get('seat', ''),
  30.                                 ),
  31.                                 'state': 1,
  32.                                 'seat': '',
  33.                                 'row': data['ticket'].get('row', ''),
  34.                                 'seat_id': '',
  35.                                 'is_multiple': False,
  36.                                 'qty_available': 1,
  37.                                 'price': int(data['parser_price']),
  38.                                 'nominal_price': int(data['ticket'].get('nominal')),
  39.                                 'currency': 'rur',
  40.                                 'parser_id': 21,
  41.                                 'parser': 'bintranet2.api',
  42.                                 'is_active': True,
  43.                                 'qty_ordered': 0,
  44.                                 'last_crawled': None,
  45.                                 'provider_data': {}
  46.                                 }
  47.         # создаем/получаем сеанс
  48.         seance = main_serializers.CreateTicketFromSiteSerializer.get_or_create_event_time('это делал Владян!', data_for_seance)
  49.         # создаем/получаем сектор
  50.         sector, cr = main_models.Sector.objects.get_or_create(name=data['ticket'].get('bn_carryall_sector_name'), hall=seance.hall,
  51.                                                               defaults={'carryall_id': data['ticket'].get('bn_carryall_sector')})
  52.         # получаем кол-во мест
  53.         seats = main_serializers.BintranetTicketSerializer.get_seats(1, data['ticket'].get('seat'))
  54.         # инфа для содания билета
  55.         ticket_data = {
  56.                        'row': data['ticket'].get('row', ''),
  57.                        'seat': data['ticket'].get('seat', ''),
  58.                        'count': 1 if data['ticket'].get('count', "") == "" else data['ticket'].get('count', ""),
  59.                        'purchase': int(data['ticket'].get('purchase')),
  60.                        'nominal': int(data['ticket'].get('nominal')),
  61.                        'is_e': False,
  62.                        }
  63.         # выдергиваем ненужную инфу
  64.         data.pop('ticket')
  65.         data.pop('ticket_holder_name')
  66.         data.pop('status_name')
  67.         # информация для билета бинтранета
  68.         bn_ticket_data = {}
  69.         bn_ticket_data.update({'ticket_holder': data.get('ticket_holder')})
  70.         bn_ticket_data.update({'info': data.get('info')})
  71.         bn_ticket_data.update({'status': data.get('status')})
  72.         bn_ticket_data.update({'parser_price': int(data.get('parser_price'))})
  73.  
  74.         tickets_ids = []
  75.         import pdb
  76.         pdb.set_trace()
  77.  
  78.         if request.data.get('data')[1].length:
  79.             # создание билетов + добавление в кериол
  80.             for seat in seats:
  81.                 ticket_data.update(dict(seat=seat))
  82.                 ticket, t_create = main_models.Ticket.objects.get_or_create(**ticket_data,
  83.                                             event_time=seance,
  84.                                             sector=sector,
  85.                                             is_paid=True,
  86.                                             ticket_source=main_models.TicketSource.objects.get(name="bintranet2.api"))
  87.  
  88.                 instance = main_models.BintranetTicket.objects.get_or_create(ticket=ticket, **bn_ticket_data)[0]
  89.  
  90.                 if t_create or not ticket.carryall_id:
  91.                     # чтобы не создавались одинаковые билеты
  92.                     carryall_ticket_data.update(dict(seat=seat, seat_id=instance.pk))
  93.                     c_tick_req = requests.post(CARRYALL_URL + '/api_crud/tickets/', headers=CARRYALL_HEADERS, json=carryall_ticket_data)
  94.                     if c_tick_req != '':
  95.                         ticket.carryall_id = c_tick_req.json().get('id')
  96.                         ticket.save()
  97.  
  98.                 tickets_ids.append(instance.pk)
  99.         else:
  100.             # создание билетов + добавление в кериол
  101.             for seat in seats:
  102.                 ticket_data.update(dict(seat=seat))
  103.                 ticket, t_create = main_models.Ticket.objects.get_or_create(**ticket_data,
  104.                                             event_time=seance,
  105.                                             sector=sector,
  106.                                             is_paid=True,
  107.                                             ticket_source=main_models.TicketSource.objects.get(name="bintranet2.api"))
  108.  
  109.                 instance = main_models.BintranetTicket.objects.get_or_create(ticket=ticket, **bn_ticket_data)[0]
  110.  
  111.                 if t_create or not ticket.carryall_id:
  112.                     # чтобы не создавались одинаковые билеты
  113.                     carryall_ticket_data.update(dict(seat=seat, seat_id=instance.pk))
  114.                     c_tick_req = requests.post(CARRYALL_URL + '/api_crud/tickets/', headers=CARRYALL_HEADERS, json=carryall_ticket_data)
  115.                     if c_tick_req != '':
  116.                         ticket.carryall_id = c_tick_req.json().get('id')
  117.                         ticket.save()
  118.  
  119.                 tickets_ids.append(instance.pk)
  120.  
  121.         return Response(tickets_ids)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement