From e2f7c53ccda9f6fbde07687983b081c8d8d4fd0d Mon Sep 17 00:00:00 2001 From: Wesley B <62723358+wesleyboar@users.noreply.github.com> Date: Tue, 10 Feb 2026 20:11:23 -0600 Subject: [PATCH 1/7] feat: #999 only cms admin edit static placeholder --- taccsite_cms/_settings/djangocms_plugins.py | 1 + taccsite_cms/management/commands/util.py | 31 +++++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/taccsite_cms/_settings/djangocms_plugins.py b/taccsite_cms/_settings/djangocms_plugins.py index 21c8d6dec..20e375b1b 100644 --- a/taccsite_cms/_settings/djangocms_plugins.py +++ b/taccsite_cms/_settings/djangocms_plugins.py @@ -39,6 +39,7 @@ ] DJANGOCMS_PICTURE_TEMPLATES = [ ('no_link_to_ext_image', _('Do not link to external image')), + ('header_logo', _('Header logo')), ] ######################## diff --git a/taccsite_cms/management/commands/util.py b/taccsite_cms/management/commands/util.py index 5540811ec..c00a61c4c 100644 --- a/taccsite_cms/management/commands/util.py +++ b/taccsite_cms/management/commands/util.py @@ -30,6 +30,25 @@ def add_perm(group, app_label, model_name, perm_name): else: group.permissions.add( Permission.objects.get( name=perm_name )) +def del_perm(group, app_label, model_name, perm_name): + """ + Delete specific permission from a given group + """ + logger.debug(f'Removing permission ({app_label}.{model_name}) "{perm_name}"') + if app_label and model_name: + model = model_name.lower().replace(' ', '') + content_type = ContentType.objects.get( + app_label=app_label, + model=model + ) + group.permissions.remove( + Permission.objects.get( + name=perm_name, + content_type=content_type + ) + ) + else: + group.permissions.remove(Permission.objects.get(name=perm_name)) # Page @@ -44,9 +63,15 @@ def let_view_page_and_structure(group): add_perm(group, 'cms', 'page', 'Can change page') add_perm(group, 'cms', 'placeholder', 'Can use Structure mode') - # HELP: Not necessary on TACC (as of Core-CMS v4.17.1) - # Is necessary on WTCS (as of Core-CMS v4.20.2) - add_perm(group, 'cms', 'static placeholder', 'Can change static placeholder') + # To delete undesired permission from sites that still have it: + # ```py + # add_perm(group, 'cms', 'static placeholder', 'Can change static placeholder') + # ``` + # HELP: Should "Sitewide Content Manager" keep this perm? + # SEE: https://weteachcs.org/admin/auth/group/9/change/ + # FAQ: Only superuser may edit static placeholders (footer, header-logo) + # TODO: After this is deployed on all sites once, delete this code + del_perm(group, 'cms', 'static placeholder', 'Can change static placeholder') From f52b8b27df14f9d680051d36af5bd462d2715859 Mon Sep 17 00:00:00 2001 From: Wesley B <62723358+wesleyboar@users.noreply.github.com> Date: Tue, 10 Feb 2026 20:11:47 -0600 Subject: [PATCH 2/7] feat: #999 add 'header-logo' placeholder --- taccsite_cms/settings/settings.py | 9 ++++++- .../header_logo/picture.html | 4 +++ taccsite_cms/templates/header.html | 3 +++ taccsite_cms/templates/header_logo.html | 26 ++++++++++++++++-- taccsite_cms/templatetags/header_logo_tags.py | 27 +++++++++++++++++++ 5 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 taccsite_cms/templates/djangocms_picture/header_logo/picture.html create mode 100644 taccsite_cms/templatetags/header_logo_tags.py diff --git a/taccsite_cms/settings/settings.py b/taccsite_cms/settings/settings.py index 47dd38e95..4f820ea25 100644 --- a/taccsite_cms/settings/settings.py +++ b/taccsite_cms/settings/settings.py @@ -558,7 +558,14 @@ def get_subdirs_as_module_names(path): } CMS_PERMISSION = True -CMS_PLACEHOLDER_CONF = {} +CMS_PLACEHOLDER_CONF = { + 'header-logo': { + 'plugins': ['PicturePlugin'], + 'limits': { + 'global': 1 + }, + }, +} THUMBNAIL_HIGH_RESOLUTION = True THUMBNAIL_PROCESSORS = ( diff --git a/taccsite_cms/templates/djangocms_picture/header_logo/picture.html b/taccsite_cms/templates/djangocms_picture/header_logo/picture.html new file mode 100644 index 000000000..13ee2154a --- /dev/null +++ b/taccsite_cms/templates/djangocms_picture/header_logo/picture.html @@ -0,0 +1,4 @@ +{# Header logo from Picture plugin: pass plugin_logo and use shared header_logo.html. #} +{% load header_logo_tags %} +{% header_logo_from_picture instance picture_link as plugin_logo %} +{% include "header_logo.html" with plugin_logo=plugin_logo %} diff --git a/taccsite_cms/templates/header.html b/taccsite_cms/templates/header.html index 5da026b53..01222b02e 100644 --- a/taccsite_cms/templates/header.html +++ b/taccsite_cms/templates/header.html @@ -1,4 +1,5 @@ {# @var settings #} +{% load cms_tags %} {# WARNING: Some markup is duplicated in other repositories #} {# SEE: https://confluence.tacc.utexas.edu/x/LoCnCQ #} @@ -22,7 +23,9 @@ {% endif %} "> + {% static_placeholder "header-logo" or %} {% include "header_logo.html" %} + {% endstatic_placeholder %}