Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data = request.data.get('data')[0]
- if request.user.groups.filter(name='manager').exists():
- return Response(status=status.HTTP_403_FORBIDDEN)
- # достаем название города для
- get_city_id = requests.get(CARRYALL_URL + '/api_crud/event_place/{}/'.format(data['ticket']['bn_carryall_event_place']),
- headers=CARRYALL_HEADERS).json()['city_id']
- get_city_name = requests.get(CARRYALL_URL + '/api_crud/city/{}/'.format(get_city_id),
- headers=CARRYALL_HEADERS).json()['name']
- # привожу в формат для выполнения функции (CreateTicketFromSiteSerializer.get_or_create_event_time())
- data_for_seance = {'event_carryall_id': data['ticket']['bn_carryall_event'],
- 'event_name': data['ticket']['bn_carryall_event_name'],
- 'event_place_name': data['ticket']['bn_carryall_event_place_name'],
- 'event_time_datetime': data['ticket']['bn_carryall_event_time_name'],
- 'event_time_carryall_id': data['ticket']['bn_carryall_event_time'],
- 'hall_name': '',
- 'city_name': get_city_name}
- # информация для отправки в кериол
- carryall_ticket_data = {
- 'seance_id': data_for_seance['event_time_carryall_id'],
- 'event_id': data_for_seance['event_carryall_id'],
- 'sector_id': data['ticket'].get('bn_carryall_sector'),
- 'sector_name': data['ticket'].get('bn_carryall_sector_name'),
- 'sector_slug': pytils.translit.translify(data['ticket'].get('bn_carryall_sector_name')).lower().replace(' ', '_'),
- 'location': '{}, ряд {}, место {}'.format(
- data['ticket'].get('bn_carryall_sector_name'),
- data['ticket'].get('row', ''),
- data['ticket'].get('seat', ''),
- ),
- 'state': 1,
- 'seat': '',
- 'row': data['ticket'].get('row', ''),
- 'seat_id': '',
- 'is_multiple': False,
- 'qty_available': 1,
- 'price': int(data['parser_price']),
- 'nominal_price': int(data['ticket'].get('nominal')),
- 'currency': 'rur',
- 'parser_id': 21,
- 'parser': 'bintranet2.api',
- 'is_active': True,
- 'qty_ordered': 0,
- 'last_crawled': None,
- 'provider_data': {}
- }
- # создаем/получаем сеанс
- seance = main_serializers.CreateTicketFromSiteSerializer.get_or_create_event_time('это делал Владян!', data_for_seance)
- # создаем/получаем сектор
- sector, cr = main_models.Sector.objects.get_or_create(name=data['ticket'].get('bn_carryall_sector_name'), hall=seance.hall,
- defaults={'carryall_id': data['ticket'].get('bn_carryall_sector')})
- # получаем кол-во мест
- seats = main_serializers.BintranetTicketSerializer.get_seats(1, data['ticket'].get('seat'))
- # инфа для содания билета
- ticket_data = {
- 'row': data['ticket'].get('row', ''),
- 'seat': data['ticket'].get('seat', ''),
- 'count': 1 if data['ticket'].get('count', "") == "" else data['ticket'].get('count', ""),
- 'purchase': int(data['ticket'].get('purchase')),
- 'nominal': int(data['ticket'].get('nominal')),
- 'is_e': False,
- }
- # выдергиваем ненужную инфу
- data.pop('ticket')
- data.pop('ticket_holder_name')
- data.pop('status_name')
- # информация для билета бинтранета
- bn_ticket_data = {}
- bn_ticket_data.update({'ticket_holder': data.get('ticket_holder')})
- bn_ticket_data.update({'info': data.get('info')})
- bn_ticket_data.update({'status': data.get('status')})
- bn_ticket_data.update({'parser_price': int(data.get('parser_price'))})
- tickets_ids = []
- import pdb
- pdb.set_trace()
- if request.data.get('data')[1].length:
- # создание билетов + добавление в кериол
- for seat in seats:
- ticket_data.update(dict(seat=seat))
- ticket, t_create = main_models.Ticket.objects.get_or_create(**ticket_data,
- event_time=seance,
- sector=sector,
- is_paid=True,
- ticket_source=main_models.TicketSource.objects.get(name="bintranet2.api"))
- instance = main_models.BintranetTicket.objects.get_or_create(ticket=ticket, **bn_ticket_data)[0]
- if t_create or not ticket.carryall_id:
- # чтобы не создавались одинаковые билеты
- carryall_ticket_data.update(dict(seat=seat, seat_id=instance.pk))
- c_tick_req = requests.post(CARRYALL_URL + '/api_crud/tickets/', headers=CARRYALL_HEADERS, json=carryall_ticket_data)
- if c_tick_req != '':
- ticket.carryall_id = c_tick_req.json().get('id')
- ticket.save()
- tickets_ids.append(instance.pk)
- else:
- # создание билетов + добавление в кериол
- for seat in seats:
- ticket_data.update(dict(seat=seat))
- ticket, t_create = main_models.Ticket.objects.get_or_create(**ticket_data,
- event_time=seance,
- sector=sector,
- is_paid=True,
- ticket_source=main_models.TicketSource.objects.get(name="bintranet2.api"))
- instance = main_models.BintranetTicket.objects.get_or_create(ticket=ticket, **bn_ticket_data)[0]
- if t_create or not ticket.carryall_id:
- # чтобы не создавались одинаковые билеты
- carryall_ticket_data.update(dict(seat=seat, seat_id=instance.pk))
- c_tick_req = requests.post(CARRYALL_URL + '/api_crud/tickets/', headers=CARRYALL_HEADERS, json=carryall_ticket_data)
- if c_tick_req != '':
- ticket.carryall_id = c_tick_req.json().get('id')
- ticket.save()
- tickets_ids.append(instance.pk)
- return Response(tickets_ids)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement