88from cms .utils .urlutils import admin_reverse
99from django .conf import settings
1010from django .contrib .admin .utils import flatten_fieldsets
11+ from django .contrib .sites .shortcuts import get_current_site
1112from django .core .exceptions import (
1213 ImproperlyConfigured ,
1314 ObjectDoesNotExist ,
@@ -52,13 +53,10 @@ def __init__(self):
5253 @cached_property
5354 def versionables_by_content (self ):
5455 """Returns a dict of {content_model_cls: VersionableItem obj}"""
55- return {
56- versionable .content_model : versionable for versionable in self .versionables
57- }
56+ return {versionable .content_model : versionable for versionable in self .versionables }
5857
5958 def is_content_model_versioned (self , content_model ):
60- """Returns if the content model is registered for versioning.
61- """
59+ """Returns if the content model is registered for versioning."""
6260 return content_model in self .versionables_by_content
6361
6462 @cached_property
@@ -91,9 +89,7 @@ def handle_versioning_setting(self, cms_config):
9189 # still changing and needs to be calculated on the fly
9290 registered_so_far = [v .content_model for v in self .versionables ]
9391 if versionable .content_model in registered_so_far :
94- raise ImproperlyConfigured (
95- f"{ versionable .content_model !r} has already been registered"
96- )
92+ raise ImproperlyConfigured (f"{ versionable .content_model !r} has already been registered" )
9793 # Checks passed. Add versionable to our master list
9894 self .versionables .append (versionable )
9995
@@ -118,15 +114,13 @@ def handle_admin_classes(self, cms_config):
118114 with an admin model class that inherits from `versionable.content_admin_mixin`.
119115 """
120116 replace_admin_for_models (
121- [
122- (versionable .content_model , versionable .content_admin_mixin )
123- for versionable in cms_config .versioning
124- ]
117+ [(versionable .content_model , versionable .content_admin_mixin ) for versionable in cms_config .versioning ]
125118 )
126119 replace_admin_for_models (
127120 [
128121 (versionable .grouper_model , versionable .grouper_admin_mixin )
129- for versionable in cms_config .versioning if versionable .grouper_admin_mixin is not None
122+ for versionable in cms_config .versioning
123+ if versionable .grouper_admin_mixin is not None
130124 ]
131125 )
132126
@@ -153,12 +147,15 @@ def handle_content_model_manager(self, cms_config):
153147 """
154148 for versionable in cms_config .versioning :
155149 replace_manager (versionable .content_model , "objects" , PublishedContentManagerMixin )
156- replace_manager (versionable .content_model , "admin_manager" , AdminManagerMixin ,
157- _group_by_key = list (versionable .grouping_fields ))
150+ replace_manager (
151+ versionable .content_model ,
152+ "admin_manager" ,
153+ AdminManagerMixin ,
154+ _group_by_key = list (versionable .grouping_fields ),
155+ )
158156
159157 def handle_admin_field_modifiers (self , cms_config ):
160- """Allows for the transformation of a given field in the ExtendedVersionAdminMixin
161- """
158+ """Allows for the transformation of a given field in the ExtendedVersionAdminMixin"""
162159 extended_admin_field_modifiers = getattr (cms_config , "extended_admin_field_modifiers" , None )
163160 if not isinstance (extended_admin_field_modifiers , list ):
164161 raise ImproperlyConfigured ("extended_admin_field_modifiers must be list of dictionaries" )
@@ -171,9 +168,7 @@ def configure_app(self, cms_config):
171168 self .handle_admin_field_modifiers (cms_config )
172169 # Validation to ensure either the versioning or the
173170 # versioning_add_to_confirmation_context config has been defined
174- has_extra_context = hasattr (
175- cms_config , "versioning_add_to_confirmation_context"
176- )
171+ has_extra_context = hasattr (cms_config , "versioning_add_to_confirmation_context" )
177172 has_models_to_register = hasattr (cms_config , "versioning" )
178173 if not has_extra_context and not has_models_to_register :
179174 raise ImproperlyConfigured (
@@ -257,9 +252,11 @@ def get_readonly_fields(self, request, obj=None):
257252 return fields
258253
259254 def get_queryset (self , request ):
260- queryset = super ().get_queryset (request )\
255+ return (
256+ super ()
257+ .get_queryset (request )
261258 .prefetch_related (Prefetch ("versions" , to_attr = "prefetched_versions" ))
262- return queryset
259+ )
263260
264261 def copy_language (self , request , object_id ):
265262 target_language = request .POST .get ("target_language" )
@@ -338,18 +335,18 @@ def get_indicator_menu(cls, request, page_content):
338335
339336
340337class VersioningCMSConfig (CMSAppConfig ):
341- """Implement versioning for core cms models
342- """
338+ """Implement versioning for core cms models"""
339+
343340 cms_enabled = True
344- djangocms_versioning_enabled = getattr (
345- settings , "VERSIONING_CMS_MODELS_ENABLED" , True
346- )
341+ djangocms_versioning_enabled = getattr (settings , "VERSIONING_CMS_MODELS_ENABLED" , True )
347342 versioning = [
348343 VersionableItem (
349344 content_model = PageContent ,
350345 grouper_field_name = "page" ,
351346 extra_grouping_fields = ["language" ],
352- version_list_filter_lookups = {"language" : get_language_tuple },
347+ version_list_filter_lookups = {
348+ "language" : lambda * args : get_language_tuple (site_id = get_current_site (args [0 ]).pk )
349+ },
353350 copy_function = copy_page_content ,
354351 grouper_selector_option_label = label_from_instance ,
355352 on_publish = on_page_content_publish ,
0 commit comments