Skip to content

Commit d4d833f

Browse files
committed
add sewttings for auto-component fields
1 parent 9e0273f commit d4d833f

File tree

4 files changed

+25
-4
lines changed

4 files changed

+25
-4
lines changed

djangocms_frontend/component_base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ def slot_plugin_factory(cls) -> list[type]:
193193
"module": getattr(cls._component_meta, "module", _("Component")),
194194
"allow_children": True,
195195
"edit_disabled": True,
196+
"show_add_form": False,
196197
"parent_classes": cls.__name__ + "Plugin",
197198
"render_template": cls.slot_template,
198199
**slot.kwargs,

djangocms_frontend/contrib/auto_component/apps.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,33 @@
1+
import importlib
12
import os
23
from collections import defaultdict
34

45
from django.apps import AppConfig, apps
56
from django.template import loader
67

8+
from djangocms_frontend import settings
79
from djangocms_frontend.component_base import CMSFrontendComponent
810

911

12+
default_field_context = {
13+
"djanghocms_text": "djangocms_text.fields.TextFormField",
14+
"djanghocms_text_ckeditor": "djangocms_text_ckeditor.fields.TextFormField",
15+
"djangocms_link": "djangocms_link.fields.LinkFormField",
16+
"djangocms_frontend.contrib.image": "djangocms_frontend.contrib.image.fields.ImageFormField",
17+
"djangocms_frontend.contrib.icon": "djangocms_frontend.contrib.icon.fields.IconPickerField",
18+
}
19+
20+
21+
def get_field_context() -> dict:
22+
field_context = {}
23+
default_field_context.update(settings.COMPONENT_FIELDS)
24+
for key, value in default_field_context.items():
25+
if apps.is_installed(key) and "." in value:
26+
module, field_name = value.rsplit(".", 1)
27+
field_context[field_name] = importlib.import_module(module).__dict__[field_name]
28+
return field_context
29+
30+
1031
def find_cms_component_templates() -> list[str]:
1132
templates = []
1233
for app in apps.get_app_configs():
@@ -46,9 +67,9 @@ def scan_templates_for_component_declaration(templates: list[str]) -> list[CMSFr
4667
from django.forms import fields
4768

4869
components = []
49-
70+
field_context = get_field_context()
5071
for template_name in templates:
51-
context = {"_cms_components": defaultdict(list), "forms": fields, "instance": {}}
72+
context = {"_cms_components": defaultdict(list), "forms": fields, "instance": {}, **field_context}
5273
loader.render_to_string(template_name, context)
5374
cms_component = context["_cms_components"].get("cms_component", [])
5475
fields = context["_cms_components"].get("fields", [])

djangocms_frontend/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676

7777
FORM_OPTIONS = getattr(django_settings, "DJANGOCMS_FRONTEND_FORM_OPTIONS", {})
7878

79+
COMPONENT_FIELDS = getattr(django_settings, "DJANGOCMS_FRONTEND_COMPONENT_FIELDS", {})
7980

8081
framework = getattr(django_settings, "DJANGOCMS_FRONTEND_FRAMEWORK", "bootstrap5")
8182
theme = getattr(django_settings, "DJANGOCMS_FRONTEND_THEME", "djangocms_frontend")

djangocms_frontend/templatetags/frontend.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,6 @@ def render_tag(self, context, instance, plugin_type, verbose_name, nodelist):
243243
and len(context["_cms_components"]["cms_component"]) == 1
244244
):
245245
args, kwargs = context["_cms_components"]["cms_component"][0]
246-
print(plugin_type, verbose_name)
247246
if plugin_type is None:
248247
# If tag is used, default to allow_children=True
249248
kwargs.setdefault("allow_children", True)
@@ -253,7 +252,6 @@ def render_tag(self, context, instance, plugin_type, verbose_name, nodelist):
253252
kwargs["slots"].append((plugin_type, verbose_name))
254253
else:
255254
kwargs["slots"] = [(plugin_type, verbose_name)]
256-
print(kwargs)
257255
context["_cms_components"]["cms_component"][0] = (args, kwargs)
258256

259257
context.push()

0 commit comments

Comments
 (0)