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