def add_registration(request): check_events_happened() user = User.objects.get(pk=request.data['user']) event = Event.objects.get(pk=request.data['event']) p = Payment() p.event = event try: p.method = request.data['method'][0] if p.method == 'CashOnSpot': r_a = Decimal(0.0) else: r_a = Decimal(request.data['total_amount']) except KeyError: p.method = "FREE" r_a = Decimal(0.0) p.total_amount = Decimal(request.data['total_amount']) p.received_amount = r_a p.save() r = Registration() r.event_title = event.title r.user = user r.event = event r.payment = p r.number_of_tickets = request.data['number_of_tickets'] r.price = request.data['price'] r.voucher_code = "" r.total_price = Decimal(request.data['total_amount']) r.save() if p.method == 'CashOnSpot': r.voucher_code = "E" + str(event.id) + "R" + str(r.pk) + "P" + str( p.pk) + 'COS' else: r.voucher_code = "E" + str(event.id) + "R" + str(r.pk) + "P" + str( p.pk) + p.method[0] r.save() event.sold_tickets = event.sold_tickets + r.number_of_tickets event.remaining_tickets = event.total_tickets - event.sold_tickets event.save() return Response({'status': 'OK'})