Commit 2b2720da by Chif Gergő

request: Working on the request field form

Add default template: _request-field-form. Create Integer choices validation. Adjust field list template look better in bootstrap table, with using crispy fields. Added FormHelper to RequestFieldForm.
parent 36b788e0
...@@ -44,10 +44,22 @@ class RequestFieldModelForm(ModelForm): ...@@ -44,10 +44,22 @@ class RequestFieldModelForm(ModelForm):
super(RequestFieldModelForm, self).__init__(*args, **kwargs) super(RequestFieldModelForm, self).__init__(*args, **kwargs)
self.fields['choices'].required = False self.fields['choices'].required = False
@property
def helper(self):
helper = FormHelper()
return helper
def clean(self): def clean(self):
cleaned_data = super(RequestFieldModelForm, self).clean() cleaned_data = super(RequestFieldModelForm, self).clean()
if cleaned_data['type'] == 'Email' and cleaned_data['choices']: if cleaned_data['type'] == 'Email' and cleaned_data['choices']:
raise ValidationError(_("Email field can't have choices!")) raise ValidationError(_("Email field can't have choices!"))
if cleaned_data['type'] == 'Integer':
for choice in cleaned_data['choices'].split(','):
try:
int(choice)
except:
raise ValidationError(_("IntegerField choices must be \
integers"))
class EditableForm(Form): class EditableForm(Form):
......
{% extends "dashboard/base.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block content %}
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading"></div>
<div class="panel-body">
<form action={% url 'request.views.request-field-add' %} method="post">
{% include "display-form-errors.html" %}
{% csrf_token %}
{% for field in form %}
{{ field|as_crispy_field}}
{% endfor %}
<button type="submit" class="btn btn-sm btn-success">{% trans "Add" %}</button></td>
</form>
</div> <!-- .panel-body -->
</div>
</div>
</div>
{% endblock %}
{% extends "dashboard/base.html" %} {% extends "dashboard/base.html" %}
{% load i18n %} {% load i18n %}
{% load crispy_forms_tags %} {% load crispy_forms_field %}
{% block content %} {% block content %}
<div class="row"> <div class="row">
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
<form action={% url 'request.views.request-field-add' %} method="post"> <form action={% url 'request.views.request-field-add' %} method="post">
{% csrf_token %} {% csrf_token %}
{% for field in add_form %} {% for field in add_form %}
<td> {{field}}</td> <td> {% crispy_field field %}</td>
{% endfor %} {% endfor %}
<td><button type="submit" class="btn btn-sm btn-success">{% trans "Add" %}</button></td> <td><button type="submit" class="btn btn-sm btn-success">{% trans "Add" %}</button></td>
</form> </form>
......
...@@ -49,6 +49,7 @@ from django.urls import reverse_lazy ...@@ -49,6 +49,7 @@ from django.urls import reverse_lazy
class RequestFieldFormView(LoginRequiredMixin, CreateView): class RequestFieldFormView(LoginRequiredMixin, CreateView):
template_name = 'request/_request-field-form.html'
model = RequestField model = RequestField
form_class = RequestFieldModelForm form_class = RequestFieldModelForm
success_url = reverse_lazy('request.views.field-list') success_url = reverse_lazy('request.views.field-list')
...@@ -62,6 +63,7 @@ class RequestFieldListView(LoginRequiredMixin, ListView): ...@@ -62,6 +63,7 @@ class RequestFieldListView(LoginRequiredMixin, ListView):
ctx = super(RequestFieldListView, self).get_context_data(*args, ctx = super(RequestFieldListView, self).get_context_data(*args,
**kwargs) **kwargs)
ctx['add_form'] = RequestFieldModelForm() ctx['add_form'] = RequestFieldModelForm()
ctx['add_form'].helper.form_show_labels = False
ctx['requests'] = Request.objects.all() ctx['requests'] = Request.objects.all()
return ctx return ctx
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment