Files
@ 34509d23eb9f
Branch filter:
Location: symposion_app/pinaxcon/raffle/views.py - annotation
34509d23eb9f
1.6 KiB
text/x-python
Make vendored symposion into an installable Python package
This allows us to install with `pip install "-e vendor/symposion"` similar to
the other vendored packages. There's no good reason for this to be different to
the others and depend on PYTHONPATH hacking.
Re-add
This allows us to install with `pip install "-e vendor/symposion"` similar to
the other vendored packages. There's no good reason for this to be different to
the others and depend on PYTHONPATH hacking.
Re-add
d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c 20083bcb1639 20083bcb1639 20083bcb1639 20083bcb1639 20083bcb1639 20083bcb1639 d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c d1ff8d72533c | from django.apps import apps
from django.contrib.auth.decorators import login_required, user_passes_test
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.urls import reverse
from django.views.decorators.http import require_POST
from pinaxcon.raffle.models import Raffle, Prize
def _is_raffle_admin(user):
group = apps.get_app_config('pinaxcon_raffle').get_admin_group()
return group in user.groups.all()
@login_required
def raffle_view(request):
raffles = Raffle.objects.all()
for raffle in raffles:
raffle.tickets = list(raffle.get_tickets(user=request.user))
return render(request, 'raffle.html', {'raffles': raffles})
@login_required
@user_passes_test(_is_raffle_admin)
def draw_raffle_ticket(request, raffle_id=None):
if request.method == 'POST' and raffle_id is not None:
Raffle.objects.get(id=raffle_id).draw(user=request.user)
return HttpResponseRedirect(reverse('raffle-draw'))
if raffle_id is not None:
raffle = Raffle.objects.prefetch_related('draws', 'prizes').get(
id=raffle_id)
raffles = (raffle,)
else:
raffles = Raffle.objects.prefetch_related('draws', 'prizes')
return render(request, 'raffle_draw.html', {'raffles': raffles})
@login_required
@user_passes_test(_is_raffle_admin)
@require_POST
def raffle_redraw(request, redraw_ticket_id):
prize = Prize.objects.get(winning_ticket=redraw_ticket_id)
prize.unlock(user=request.user)
prize.remove_winner(user=request.user)
prize.raffle.draw(user=request.user)
return HttpResponseRedirect(reverse('raffle-draw'))
|