8000 fix: remove `copy_to_public` from page and page content extensions (#… · django-cms/django-cms@81ad858 · GitHub
[go: up one dir, main page]

Skip to content

Commit 81ad858

Browse files
authored
fix: remove copy_to_public from page and page content extensions (#7604)
* fix: remove copy_to_public from page and page content extensions * Fix: Make `copy_to_public` a no-op issuing a warning
1 parent 1f932b0 commit 81ad858

File tree

2 files changed

+18
-52
lines changed

2 files changed

+18
-52
lines changed

cms/extensions/extension_pool.py

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -51,35 +51,26 @@ def unregister(self, extension):
5151
except KeyError:
5252
pass
5353

54-
def _copy_page_extensions(self, source_page, target_page, language, clone=False):
54+
def _copy_page_extensions(self, source_page, target_page, language):
5555
for extension in self.page_extensions:
5656
for instance in extension.objects.filter(extended_object=source_page):
57-
if clone:
58-
instance.copy(target_page, language)
59-
else:
60-
instance.copy_to_public(target_page, language)
57+
instance.copy(target_page, language)
6158

62-
def _copy_content_extensions(self, source_page, target_page, language, clone=False):
59+
def _copy_content_extensions(self, source_page, target_page, language):
6360
source_content = source_page.pagecontent_set(manager="admin_manager").get(language=language)
64-
if target_page:
65-
target_title = target_page.pagecontent_set(manager="admin_manager").get(language=language)
66-
else:
67-
target_title = source_content.publisher_public
61+
target_title = target_page.pagecontent_set(manager="admin_manager").get(language=language)
6862
for extension in self.page_content_extensions:
6963
for instance in extension.objects.filter(extended_object=source_content):
70-
if clone:
71-
instance.copy(target_title, language)
72-
else:
73-
instance.copy_to_public(target_title, language)
64+
instance.copy(target_title, language)
7465

7566
def copy_extensions(self, source_page, target_page, languages=None):
7667
if not languages:
7768
languages = target_page.get_languages()
7869
if self.page_extensions:
79-
self._copy_page_extensions(source_page, target_page, None, clone=True)
70+
self._copy_page_extensions(source_page, target_page, None)
8071
for language in languages:
8172
if self.page_content_extensions:
82-
self._copy_content_extensions(source_page, target_page, language, clone=True)
73+
self._copy_content_extensions(source_page, target_page, language)
8374

8475
def get_page_extensions(self, page=None):
8576
extensions = []

cms/extensions/models.py

Lines changed: 11 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,7 @@ def _get_related_objects(cls):
4040

4141
def copy(self, target, language):
4242
"""
43-
This method copies this extension to an unrelated-target. If you intend
44-
to "publish" this extension to the publisher counterpart of target, then
45-
use copy_to_publish() instead.
43+
This method copies this extension to an unrelated-target.
4644
"""
4745
clone = self.__class__.objects.get(pk=self.pk) # get a copy of this instance
4846
clone.pk = None
@@ -60,40 +58,17 @@ def copy(self, target, language):
6058

6159
def copy_to_public(self, public_object, language):
6260
"""
63-
This method is used to "publish" this extension as part of the a larger
64-
operation on the target. If you intend to copy this extension to an
65-
unrelated object, use copy() instead.
61+
.. warning::
62+
63+
This method used to "publish" this extension as part of the a larger operation on the target.
64+
Publishing pages has been removed from django CMS core in version 4 onward.
65+
66+
For publishing functionality see `djangocms-versioning: <https://github.com/django-cms/djangocms-verisoning>`_
6667
"""
67-
this = self.__class__.objects.get(pk=self.pk) # get a copy of this instance
68-
public_extension = self.public_extension # get the public version of this instance if any
69-
70-
this.extended_object = public_object # set the new public object
71-
72-
if public_extension:
73-
# overwrite current public extension
74-
this.pk = public_extension.pk
75-
# remove public extension, or it will point to itself and raise duplicate entry
76-
this.public_extension = None
77-
78-
# Set public_extension concrete parents PKs. See issue #5494
79-
for parent, field in this._meta.parents.items():
80-
if field:
81-
setattr(this, parent._meta.pk.attname, getattr(public_extension, parent._meta.pk.attname))
82-
else:
83-
this.pk = None # create new public extension
84-
85-
# Nullify all concrete parent primary keys. See issue #5494
86-
for parent, field in this._meta.parents.items():
87-
if field:
88-
setattr(this, parent._meta.pk.attname, None)
89-
90-
this.save()
91-
self.public_extension = this
92-
self.save()
93-
94-
this.copy_relations(self, language)
95-
this.save(force_update=True)
96-
return this
68+
import warnings
69+
warnings.warn('This API function has been removed. For publishing functionality use a package that adds '
70+
'publishing, such as: djangocms-versioning.',
71+
UserWarning, stacklevel=2)
9772

9873

9974
class PageExtension(BaseExtension):

0 commit comments

Comments
 (0)
0