Corrected broadcast form group field validation

This commit is contained in:
Adarnof 2015-12-10 03:08:43 +00:00
parent 32a6c1307f
commit 4612382ca1
2 changed files with 12 additions and 15 deletions

View File

@ -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)

View File

@ -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}