Skip to content
Snippets Groups Projects
Verified Commit 303c8f33 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Correctly add fields in ExtensibleFOrms if not all fields are used

parent 1d00dade
No related branches found
No related tags found
1 merge request!1285Resolve "Extensible forms broken"
Pipeline #135431 canceled
...@@ -18,6 +18,7 @@ Fixed ...@@ -18,6 +18,7 @@ Fixed
* When navigating from legacy to legacy page, the latter would reload once for no reason. * When navigating from legacy to legacy page, the latter would reload once for no reason.
* The oauth authorization page was not accessible when the service worker was active. * The oauth authorization page was not accessible when the service worker was active.
* [Docker] Clear obsolete bundle parts when adding apps using ONBUILD * [Docker] Clear obsolete bundle parts when adding apps using ONBUILD
* Extensible forms that used a subset of fields did not render properly
`3.1.1`_ - 2023-07-01 `3.1.1`_ - 2023-07-01
--------------------- ---------------------
......
...@@ -27,7 +27,7 @@ from dynamic_preferences.types import FilePreference ...@@ -27,7 +27,7 @@ from dynamic_preferences.types import FilePreference
from guardian.admin import GuardedModelAdmin from guardian.admin import GuardedModelAdmin
from guardian.core import ObjectPermissionChecker from guardian.core import ObjectPermissionChecker
from jsonstore.fields import IntegerField, JSONFieldMixin 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.base import PolymorphicModelBase
from polymorphic.managers import PolymorphicManager from polymorphic.managers import PolymorphicManager
from polymorphic.models import PolymorphicModel from polymorphic.models import PolymorphicModel
...@@ -449,6 +449,20 @@ class ExtensibleForm(ModelForm, metaclass=_ExtensibleFormMetaclass): ...@@ -449,6 +449,20 @@ class ExtensibleForm(ModelForm, metaclass=_ExtensibleFormMetaclass):
cls.base_layout.append(node) cls.base_layout.append(node)
cls.layout = Layout(*cls.base_layout) 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): class BaseModelAdmin(GuardedModelAdmin, ObjectPermissionsModelAdmin):
"""A base class for ModelAdmin combining django-guardian and rules.""" """A base class for ModelAdmin combining django-guardian and rules."""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment