Ejemplo n.º 1
0
Archivo: api.py Proyecto: nicalmi/ais
def lunchticket_check_in_by_token(request):
    """
    Get a lunch ticket by the check in token
    """

    token = request.GET.get('token')

    if token is None:
        return JsonResponse({'message': 'No token in request.'}, status=400)

    lunch_ticket = LunchTicket.objects.filter(token=token).first()

    if lunch_ticket is None:
        return JsonResponse({'message': 'Found no lunch ticket matching that code.'}, status=404)

    if lunch_ticket.used is True:
        return JsonResponse({'message': 'Lunch ticket has already been used.'}, status=403)

    lunch_ticket.used = True
    lunch_ticket.save()

    LunchTicketScan.objects.create(
        lunch_ticket=lunch_ticket,
        user=request.user
    )

    return JsonResponse({'lunch_ticket': serializers.lunch_ticket(lunch_ticket)})
Ejemplo n.º 2
0
Archivo: api.py Proyecto: nicalmi/ais
def lunchtickets_search(request):
    """
    Search lunch tickets for the current fair
    """

    fair = Fair.objects.get(current=True)
    search_query = request.GET.get('query', '')

    if search_query == '':
        return JsonResponse({'message': 'Query is empty.'}, status=400)

    names = search_query.split()

    name_query = reduce(operator.__or__, [Q(user__first_name__icontains=query) | Q(user__last_name__icontains=query) for query in names])

    lunch_tickets = LunchTicket.objects.filter(
        Q(fair=fair) &
        Q(company__name__icontains=search_query) |
        Q(email_address__icontains=search_query) |
        name_query
    ).all()

    data = {
        'result': [serializers.lunch_ticket(lunch_ticket) for lunch_ticket in lunch_tickets]
    }

    return JsonResponse(data, safe=False)
Ejemplo n.º 3
0
Archivo: views.py Proyecto: nicalmi/ais
def tickets(request, year):
    fair = get_object_or_404(Fair, year=year)
    banquet = Banquet.objects.filter(fair=fair).first()

    lunch_tickets = LunchTicket.objects.filter(fair=fair, user=request.user)
    banquet_participant = Participant.objects.filter(user=request.user, banquet=banquet).first()

    react_props = {
        'lunch_tickets': [serializers.lunch_ticket(lunch_ticket=lunch_ticket) for lunch_ticket in lunch_tickets],
        'banquet_participant': serializers.banquet_participant(banquet_participant) if banquet_participant else None
    }

    return render(request, 'fair/tickets.html', {
        'fair': fair,
        'react_props': json.dumps(react_props)
    })