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:
@@ -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='',
|
||||
|
||||
Reference in New Issue
Block a user