From 7d0ca9b22a80e7af8d549ae7f7d3db0b34f46e65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lie=20Bouttier?= Date: Sat, 23 Jul 2016 19:47:09 +0200 Subject: [PATCH] participation creation: smart users list exclude users already participating --- accounts/forms.py | 7 +++++-- accounts/views.py | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/accounts/forms.py b/accounts/forms.py index a5ce4bb..b894595 100644 --- a/accounts/forms.py +++ b/accounts/forms.py @@ -30,6 +30,9 @@ class ParticipationField(forms.ModelChoiceField): class NewParticipationForm(forms.Form): - - participant = ParticipationField(User.objects.all(), widget=Select2Widget(), + def __init__(self, *args, **kwargs): + site = kwargs.pop('site') + super().__init__(*args, **kwargs) + queryset = User.objects.exclude(participation__site=site).all() + self.fields['participant'] = ParticipationField(queryset, widget=Select2Widget(), label='Add participant from existing account') diff --git a/accounts/views.py b/accounts/views.py index 8e53f87..e83cb46 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -39,7 +39,7 @@ def profile(request): @staff_required def participation_list(request): participation_list = Participation.objects.filter(site=get_current_site(request)).all() - form = NewParticipationForm(request.POST or None) + form = NewParticipationForm(request.POST or None, site=get_current_site(request)) if request.method == 'POST' and form.is_valid(): if not Participation.objects.get(user=request.user, site=get_current_site(request)).is_orga():