Skip to content
Snippets Groups Projects

Resolve "Extensible forms broken"

Merged Nik | Klampfradler requested to merge 878-extensible-forms-broken into master
2 files
+ 16
1
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 15
1
@@ -27,7 +27,7 @@ from dynamic_preferences.types import FilePreference
from guardian.admin import GuardedModelAdmin
from guardian.core import ObjectPermissionChecker
from jsonstore.fields import IntegerField, JSONFieldMixin
from material.base import Layout, LayoutNode
from material.base import Fieldset, Layout, LayoutNode
from polymorphic.base import PolymorphicModelBase
from polymorphic.managers import PolymorphicManager
from polymorphic.models import PolymorphicModel
@@ -449,6 +449,20 @@ class ExtensibleForm(ModelForm, metaclass=_ExtensibleFormMetaclass):
cls.base_layout.append(node)
cls.layout = Layout(*cls.base_layout)
visit_nodes = [node]
while visit_nodes:
current_node = visit_nodes.pop()
if isinstance(current_node, Fieldset):
visit_nodes += node.elements
else:
field_name = (
current_node if isinstance(current_node, str) else current_node.field_name
)
field = fields_for_model(cls._meta.model, [field_name])[field_name]
cls._meta.fields.append(field_name)
cls.base_fields[field_name] = field
setattr(cls, field_name, field)
class BaseModelAdmin(GuardedModelAdmin, ObjectPermissionsModelAdmin):
"""A base class for ModelAdmin combining django-guardian and rules."""
Loading