Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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
Exemplo n.º 4
0
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')