Add user mailer backends support. GitLab issue #286.

Add support for creating dynamic forms.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2017-07-03 13:37:56 -04:00
parent 793fd74d7f
commit a72ac6eadb
20 changed files with 952 additions and 67 deletions

View File

@@ -6,6 +6,7 @@ from django import forms
from django.conf import settings
from django.contrib.auth import get_user_model
from django.db import models
from django.utils.module_loading import import_string
from django.utils.translation import ugettext_lazy as _
from .classes import Filter, Package
@@ -83,6 +84,35 @@ class DetailForm(forms.ModelForm):
)
class DynamicFormMixin(object):
def __init__(self, *args, **kwargs):
self.schema = kwargs.pop('schema')
super(DynamicFormMixin, self).__init__(*args, **kwargs)
for field in self.schema['fields']:
field_class = import_string(field['class'])
kwargs = {
'label': field['label'],
'required': field.get('required', True),
'initial': field.get('default', None),
'help_text': field.get('help_text'),
}
kwargs.update(field.get('kwargs', {}))
self.fields[field['name']] = field_class(**kwargs)
for field, widget in self.schema.get('widgets', {}).items():
self.fields[field].widget = import_string(
widget['class']
)(**widget.get('kwargs', {}))
class DynamicForm(DynamicFormMixin, forms.Form):
pass
class DynamicModelForm(DynamicFormMixin, forms.ModelForm):
pass
class FileDisplayForm(forms.Form):
text = forms.CharField(
label='',