diff --git a/webapp/forms.py b/webapp/forms.py index 7a28867..3c44262 100644 --- a/webapp/forms.py +++ b/webapp/forms.py @@ -4,7 +4,7 @@ from django import forms from django.utils.translation import ugettext_lazy as _ from django.core.exceptions import ValidationError -from webapp.models import CustomKaehmyRole, PresetKaehmyRole +from webapp.models import CustomKaehmyRole, PresetKaehmyRole, BaseRole from webapp.models import OhlhafvChallenge, KaehmyForm, KaehmyMessage @@ -27,10 +27,26 @@ class KaehmyForm_Form(forms.ModelForm): self.fields["custom_roles"].help_text = "" self.fields["custom_roles"].label = _('Custom roles') self.fields["custom_roles"].queryset = CustomKaehmyRole.objects.all() - self.fields["preset_roles"].widget = forms.widgets.CheckboxSelectMultiple(attrs={'title': _('Preset roles')}) - self.fields["preset_roles"].help_text = "" - self.fields["preset_roles"].queryset = PresetKaehmyRole.objects.order_by('category') - self.fields["preset_roles"].label = _('Preset roles') + + for cat_id, category in BaseRole.CATEGORIES: + key = 'preset_roles_{}'.format(cat_id) + qset = PresetKaehmyRole.objects.filter(category=cat_id).order_by('category', 'is_board') + self.fields[key] = forms.ModelMultipleChoiceField(qset) + self.fields[key].widget = forms.widgets.CheckboxSelectMultiple(attrs={'title': _('Preset roles'), 'name': 'preset_roles'}) + self.fields[key].help_text = "" + self.fields[key].queryset = qset + self.fields[key].label = _(category) + self.fields[key].required = False + + def clean(self): + cleaned_data = super(KaehmyForm_Form, self).clean() + print(cleaned_data) + for key in cleaned_data.keys(): + if 'preset_roles_' in key: + cleaned_data['preset_roles'] = cleaned_data['preset_roles'] | cleaned_data[key] + + print(cleaned_data) + return cleaned_data def clean_phone_number(self): """Clean phone number field.""" @@ -48,6 +64,9 @@ class KaehmyForm_Form(forms.ModelForm): else: raise ValidationError(_('Custom role with the same name already exists.')) + def non_role_fields(self): + return [self.fields[k] for k in self.fields.keys() if not k in ["preset_roles", "custom_roles"]] + class KaehmyCommentForm(forms.ModelForm): diff --git a/webapp/templates/kaehmy.html b/webapp/templates/kaehmy.html index 5f788dc..9800121 100644 --- a/webapp/templates/kaehmy.html +++ b/webapp/templates/kaehmy.html @@ -13,7 +13,33 @@