From 4612382ca1280fca54d2d09384f36ae637b1991a Mon Sep 17 00:00:00 2001 From: Adarnof Date: Thu, 10 Dec 2015 03:08:43 +0000 Subject: [PATCH] Corrected broadcast form group field validation --- services/forms.py | 15 +-------------- services/views.py | 12 +++++++++++- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/services/forms.py b/services/forms.py index ec76ef12..c613554d 100644 --- a/services/forms.py +++ b/services/forms.py @@ -1,20 +1,7 @@ from django import forms -from django.contrib.auth.models import Group -from util import check_if_user_has_permission - class JabberBroadcastForm(forms.Form): - def __init__(self, user, *args, **kwargs): - super(JabberBroadcastForm, self).__init__(*args, **kwargs) - allchoices = [] - if check_if_user_has_permission(user, 'jabber_broadcast_all'): - allchoices.append(('all', 'all')) - for g in Group.objects.all(): - allchoices.append((str(g.name), str(g.name))) - else: - for g in user.groups.all(): - allchoices.append((str(g.name), str(g.name))) - self.fields['group'] = forms.ChoiceField(choices=allchoices, widget=forms.Select) + group = forms.ChoiceField(widget=forms.Select) message = forms.CharField(widget=forms.Textarea) diff --git a/services/views.py b/services/views.py index 6e96bebe..83ffbce9 100755 --- a/services/views.py +++ b/services/views.py @@ -70,8 +70,17 @@ def fleet_formatter_view(request): def jabber_broadcast_view(request): logger.debug("jabber_broadcast_view called by user %s" % request.user) success = False + allchoices = [] + if check_if_user_has_permission(request.user, 'jabber_broadcast_all'): + allchoices.append(('all', 'all')) + for g in Group.objects.all(): + allchoices.append((str(g.name), str(g.name))) + else: + for g in request.user.groups.all(): + allchoices.append((str(g.name), str(g.name))) if request.method == 'POST': form = JabberBroadcastForm(request.POST) + form.fields['group'].choices = allchoices logger.debug("Received POST request containing form, valid: %s" % form.is_valid()) if form.is_valid(): user_info = AuthServicesInfo.objects.get(user=request.user) @@ -92,7 +101,8 @@ def jabber_broadcast_view(request): success = True logger.info("Sent jabber broadcast on behalf of user %s" % request.user) else: - form = JabberBroadcastForm(request.user) + form = JabberBroadcastForm() + form.fields['group'].choices = allchoices logger.debug("Generated broadcast form for user %s containing %s groups" % (request.user, len(form.fields['group'].choices))) context = {'form': form, 'success': success}