99from cms .utils .placeholder import validate_placeholder_name
1010from cms .utils .urlutils import add_url_parameters , admin_reverse
1111from django import template
12+ from django .conf import settings
1213
1314from ..constants import DEFAULT_STATIC_ALIAS_CATEGORY_NAME , USAGE_ALIAS_URL_NAME
1415from ..models import Alias , AliasContent , Category
1819
1920DeclaredStaticAlias = namedtuple ("DeclaredStaticAlias" , ["static_code" , "site" ])
2021
22+ _static_alias_editing_enabled = getattr (settings , "STATIC_ALIAS_EDITING_ENABLED" , True )
23+
2124
2225@register .simple_tag (takes_context = False )
23- def get_alias_usage_view_url (alias , ** kwargs ):
26+ def get_alias_usage_view_url (alias , ** kwargs ) -> str :
2427 url = admin_reverse (USAGE_ALIAS_URL_NAME , args = [alias .pk ])
2528 return add_url_parameters (url , ** ChainMap (kwargs ))
2629
2730
2831@register .filter ()
29- def admin_view_url (obj ):
32+ def admin_view_url (obj ) -> str :
3033 if obj and is_editable_model (obj .__class__ ):
3134 # Is obj frontend-editable?
3235 return get_object_preview_url (obj )
@@ -41,12 +44,12 @@ def admin_view_url(obj):
4144
4245
4346@register .filter ()
44- def verbose_name (obj ):
47+ def verbose_name (obj ) -> str :
4548 return obj ._meta .verbose_name
4649
4750
4851@register .simple_tag (takes_context = True )
49- def render_alias (context , instance ):
52+ def render_alias (context , instance ) -> str :
5053 request = context ["request" ]
5154
5255 toolbar = get_toolbar_from_request (request )
@@ -83,7 +86,7 @@ class StaticAlias(Tag):
8386 ],
8487 )
8588
86- def _get_alias (self , request , static_code , extra_bits ):
89+ def _get_alias (self , request , static_code , extra_bits ) -> Alias | None :
8790 alias_filter_kwargs = {
8891 "static_code" : static_code ,
8992 }
@@ -129,7 +132,7 @@ def _get_alias(self, request, static_code, extra_bits):
129132 alias ._content_cache [self .language ] = alias_content
130133 return alias
131134
132- def render_tag (self , context , static_code , extra_bits , nodelist = None ):
135+ def render_tag (self , context , static_code , extra_bits , nodelist = None ) -> str :
133136 request = context .get ("request" )
134137
135138 if not static_code or not request :
@@ -158,16 +161,18 @@ def render_tag(self, context, static_code, extra_bits, nodelist=None):
158161 context = context ,
159162 nodelist = nodelist ,
160163 use_cache = True ,
161- editable = editable ,
164+ editable = editable and _static_alias_editing_enabled ,
162165 )
163- if self .toolbar .edit_mode_active and not editable :
166+ if self .toolbar .edit_mode_active and not editable and _static_alias_editing_enabled :
164167 # Also non-editable placeholders need interactivity in the structure board
165168 content += renderer .get_placeholder_toolbar_js (placeholder )
166169 return content
167170 return ""
168171
169- def get_declaration (self ):
172+ def get_declaration (self ) -> DeclaredStaticAlias | None :
170173 """Used to identify static_alias declarations"""
174+ if not _static_alias_editing_enabled :
175+ return None
171176 static_code = str (self .kwargs ["static_code" ].var ).strip ('"' ).strip ("'" )
172177 site = False
173178 if isinstance (self .kwargs ["extra_bits" ], ListValue ):
0 commit comments