Merge branch 'develop' into 'master'

Make form nicer

See merge request !62
This commit is contained in:
Jan Tuomi
2017-10-16 14:17:11 +03:00
2 changed files with 51 additions and 6 deletions
+24 -5
View File
@@ -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):
+27 -1
View File
@@ -13,7 +13,33 @@
<div id="input_form">
<form name="kaehmyForm" action="/kaehmy/submit/" method="post" class="form">{% csrf_token %}
{% bootstrap_form form %}
{% bootstrap_field form.name %}
{% bootstrap_field form.email %}
{% bootstrap_field form.phone_number %}
{% bootstrap_field form.year %}
<h4>{% trans "Preset roles" %}</h4>
{% for preset_field in form %}
{% if "preset_roles_" in preset_field.name %}
<div class="card">
<div class="card-header">
{{ preset_field.label }}
</div>
<div class="card-block">
{% bootstrap_field preset_field show_label=False %}
</div>
</div>
{% endif %}
{% endfor %}
<div class="card">
<div class="card-block">
{% bootstrap_field form.custom_role_name %}
{% bootstrap_field form.custom_role_is_board %}
</div>
</div>
{% bootstrap_field form.text %}
{% buttons %}
<button type="submit" class="btn btn-primary">
{% trans "Submit" %}