def main(): def create_stuff(): invoice = Invoice(person=visitor.person_ptr, is_verified=True) invoice.generate_data() invoice.save() Ticket.objects.create(invoice=invoice, ticket_type_id=1) for liu_id in liu_ids: print liu_id student = client.get_student_by_liu_id(liu=liu_id) visitor = Visitor.objects.create(**get_kwargs(student)) print unicode(visitor) create_stuff() for name, pid, email in manuals: name_split = name.split() fname, lname = name_split[0], ' '.join(name_split[1:]) visitor = Visitor.objects.create(first_name=fname, last_name=lname, pid=format_pid(pid), email=email) print unicode(visitor) create_stuff()
def public_sell(request): error = '' success = False liu_id_form = LiuIDForm(request.POST or None) ticket_type_form = PublicTicketTypeForm(request.POST or None) if liu_id_form.is_valid() and ticket_type_form.is_valid(): try: term = liu_id_form.cleaned_data['liu_id'] try: person = Person.objects.search(term=term) if person.invoice_set.exists(): raise InvoiceExists() except Person.DoesNotExist: client = KOBRAClient(settings.KOBRA_USER, settings.KOBRA_KEY) student = client.get_student(term) visitor = Visitor.objects.create(**get_kwargs(student)) person = visitor.person_ptr invoice = Invoice(person=person, is_verified=False) invoice.generate_data() invoice.save() ticket_type_ids = ticket_type_form.cleaned_data.get('ticket_type') for ticket_type_id in ticket_type_ids: ticket_type = TicketType.objects.select_for_update().get(pk=ticket_type_id) if ticket_type.ticket_set.count() >= ticket_type.max_amount: raise TicketSoldOut() Ticket.objects.create(invoice=invoice, ticket_type=ticket_type, person=person) invoice.send_verify_email() success = True liu_id_form = LiuIDForm() ticket_type_form = PublicTicketTypeForm() except TicketSoldOut: error = _('This ticket type is sold out') except InvoiceExists: error = _('An invoice already exist for this person') except StudentNotFound: error = _('Student was not found') return render(request, 'tickets/public_sell.html', {'ticket_type_form': ticket_type_form, 'liu_id_form': liu_id_form, 'error': error, 'success': success})
def try_get_from_kobra(pid, liu_id): student = None if pid: try: student = client.get_student_by_pid(pid=format_kobra_pid(pid)) except StudentNotFound: pass elif liu_id: try: student = client.get_student_by_liu_id(liu=liu_id) except StudentNotFound: pass if student: return Visitor(**get_kwargs(student)) return None
def turbo_submit(request): response = {} worker_job_count = None worker_no_contract = False error = None ticket_type_form = TicketTypeForm(request.POST or None, display_all=request.user.is_staff) turbo_form = TurboTicketForm(request.POST or None) payment_type_form = PaymentTypeForm(request.POST or None) csrf_token_value = get_token(request) if turbo_form.is_valid() and ticket_type_form.is_valid(): client = KOBRAClient(settings.KOBRA_USER, settings.KOBRA_KEY) term = turbo_form.cleaned_data.get('term') ticket_type_ids = ticket_type_form.cleaned_data.get('ticket_type') try: for ticket_type_id in ticket_type_ids: ticket_type = TicketType.objects.select_for_update().get(pk=ticket_type_id) if ticket_type.ticket_set.count() >= ticket_type.max_amount: raise TicketSoldOut() try: person = Person.objects.search(term) if Invoice.objects.filter(person=person).count() > 1: raise InvoiceExists() try: person.worker person_form = WorkerForm(instance=person) response['worker_id'] = person.id worker_job_count = person.worker.workerregistration_set.count() worker_no_contract = not person.worker.contract_approved except Worker.DoesNotExist: person_form = VisitorForm(instance=person) response['visitor_id'] = person.id except Person.DoesNotExist: # Otherwise, fetch the person from KOBRA student = client.get_student(term) person_form = VisitorForm(instance=Visitor(**get_kwargs(student))) response['is_valid'] = True response['html'] = render_to_string('tickets/partials/turbo_confirm.html', {'ticket_type_form': ticket_type_form, 'person_form': person_form, 'payment_type_form': payment_type_form, 'worker_job_count': worker_job_count, 'worker_no_contract': worker_no_contract, 'csrf_token_value': csrf_token_value}, RequestContext(request)) return HttpResponse(json.dumps(response), content_type='application/json') except TicketSoldOut: error = _('This ticket type is sold out') except StudentNotFound: error = _('Student was not found') except InvoiceExists: error = _('More than one invoice already exist for this person - automatically adding more tickets is not supported') except ValueError: error = _('Could not get the result') response['is_valid'] = False response['html'] = render_to_string('tickets/partials/turbo.html', {'ticket_type_form': ticket_type_form, 'payment_type_form': payment_type_form, 'turbo_form': turbo_form, 'error': error}, RequestContext(request)) return HttpResponse(json.dumps(response), content_type='application/json')