Commit cd699378 authored by Serge S. Koval's avatar Serge S. Koval

Fixed regression with inline form configuration

parent 3bf7e239
......@@ -17,11 +17,12 @@ class ModelFormField(fields.FormField):
"""
Customized ModelFormField for MongoEngine EmbeddedDocuments.
"""
def __init__(self, model, view, *args, **kwargs):
super(ModelFormField, self).__init__(*args, **kwargs)
def __init__(self, model, view, form_class, form_opts=None, **kwargs):
super(ModelFormField, self).__init__(form_class, **kwargs)
self.model = model
self.view = view
self.form_opts = form_opts
def populate_obj(self, obj, name):
candidate = getattr(obj, name, None)
......
......@@ -137,11 +137,8 @@ class CustomModelConverter(orm.ModelConverter):
view = self._get_subdocument_config(field.name)
if 'widget' not in kwargs:
form_opts = form.FormOpts(widget_args=getattr(view, 'form_widget_args', None),
form_rules=view._form_rules)
kwargs['widget'] = InlineFormWidget(form_opts)
form_opts = form.FormOpts(widget_args=getattr(view, 'form_widget_args', None),
form_rules=view._form_rules)
form_class = view.get_form()
if form_class is None:
......@@ -155,7 +152,7 @@ class CustomModelConverter(orm.ModelConverter):
form_class = view.postprocess_form(form_class)
return ModelFormField(field.document_type_obj, view, form_class, **kwargs)
return ModelFormField(field.document_type_obj, view, form_class, form_opts=form_opts, **kwargs)
@orm.converts('ReferenceField')
def conv_Reference(self, model, field, kwargs):
......
......@@ -188,7 +188,7 @@ class InlineModelFormList(InlineFieldList):
Form field type. Override to use custom field for each inline form
"""
def __init__(self, form, session, model, prop, inline_view, form_widget=None, **kwargs):
def __init__(self, form, session, model, prop, inline_view, **kwargs):
"""
Default constructor.
......@@ -212,13 +212,10 @@ class InlineModelFormList(InlineFieldList):
self._pk = get_primary_key(model)
# Generate inline form field
if form_widget is None:
form_opts = FormOpts(widget_args=getattr(inline_view, 'form_widget_args', None),
form_rules=inline_view._form_rules)
form_opts = FormOpts(widget_args=getattr(inline_view, 'form_widget_args', None),
form_rules=inline_view._form_rules)
form_widget = InlineFormWidget(form_opts)
form_field = self.form_field_type(form, self._pk, widget=form_widget)
form_field = self.form_field_type(form, self._pk, form_opts=form_opts)
super(InlineModelFormList, self).__init__(form_field, **kwargs)
......
......@@ -102,10 +102,11 @@ class InlineModelFormField(FormField):
"""
widget = InlineFormWidget()
def __init__(self, form_class, pk, **kwargs):
def __init__(self, form_class, pk, form_opts=None, **kwargs):
super(InlineModelFormField, self).__init__(form_class, **kwargs)
self._pk = pk
self.form_opts = form_opts
def get_pk(self):
return getattr(self.form, self._pk).data
......
......@@ -12,12 +12,11 @@ class InlineFieldListWidget(RenderTemplateWidget):
class InlineFormWidget(RenderTemplateWidget):
def __init__(self, form_opts=None):
def __init__(self):
super(InlineFormWidget, self).__init__('admin/model/inline_form.html')
self.form_opts = form_opts
def __call__(self, field, **kwargs):
kwargs.setdefault('form_opts', self.form_opts)
kwargs.setdefault('form_opts', getattr(field, 'form_opts', None))
return super(InlineFormWidget, self).__call__(field, **kwargs)
......
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 to comment