8000 Fixed #6141 -- Copy plugins for each translation of page (#6142) · django-cms/django-cms@f3978ba · GitHub
[go: up one dir, main page]

Skip to content

Commit f3978ba

Browse files
authored
Fixed #6141 -- Copy plugins for each translation of page (#6142)
1 parent 30680ac commit f3978ba

File tree

4 files changed

+34
-6
lines changed

4 files changed

+34
-6
lines changed

cms/models/pagemodel.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -628,16 +628,14 @@ def copy(self, site, parent_node=None, language=None,
628628
title.published = False
629629
title.publisher_public = None
630630

631-
language = title.language
632-
633631
if parent_node:
634-
base = parent_page.get_path(language)
632+
base = parent_page.get_path(title.language)
635633
path = u'%s/%s' % (base, title.slug)
636634
else:
637635
base = ''
638636
path = title.slug
639637

640-
slug = get_available_slug(site, path, language)
638+
slug = get_available_slug(site, path, title.language)
641639

642640
title.slug = slug
643641
title.path = '%s/%s' % (base, slug) if base else slug

cms/templatetags/cms_js_tags.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def render_cms_structure_js(context, renderer, obj):
4646
}
4747

4848
if static_placeholder.site_bound:
49-
kwargs['site'] = renderer.site_id
49+
kwargs['site'] = renderer.current_site.pk
5050
else:
5151
kwargs['site_id__isnull'] = True
5252

cms/templatetags/cms_tags.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ def _show_placeholder_by_id(context, placeholder_name, reverse_id,
123123
# Assume user passed in a pk directly.
124124
site_id = getattr(site, 'pk', site)
125125
else:
126-
site_id = renderer.site_id
126+
site_id = renderer.current_site.pk
127127

128128
page = _get_page_by_untyped_arg(reverse_id, request, site_id)
129129

cms/tests/test_page_admin.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -551,6 +551,36 @@ def test_copy_page(self):
551551

552552
self.assertEqual(Page.objects.drafts().count() - count, 3)
553553

554+
def test_copy_page_with_plugins(self):
555+
"""
556+
Copying a page with plugins should copy all plugins for each translation
557+
on the page into the respective translation in the new page.
558+
"""
559+
languages = ('en', 'de', 'fr', 'pt-br')
560+
cms_page = create_page("page_a_en", "nav_playground.html", "en")
561+
create_title('de', 'page_a_de', cms_page)
562+
create_title('fr', 'page_a_fr', cms_page)
563+
create_title('pt-br', 'page_a_pt-br', cms_page)
564+
placeholder = cms_page.placeholders.get(slot='body')
565+
566+
for language in languages:
567+
add_plugin(
568+
placeholder,
569+
plugin_type='LinkPlugin',
570+
language=language,
571+
name='Link {}'.format(language),
572+
external_link='https://www.django-cms.org',
573+
)
574+
575+
with self.login_user_context(self.get_superuser()):
576+
new_page = self.copy_page(cms_page, cms_page, position=1)
577+
new_placeholder = new_page.placeholders.get(slot='body')
578+
579+
for language in languages:
580+
self.assertTrue(new_placeholder.get_plugins(language).exists())
581+
plugin = new_placeholder.get_plugins(language)[0].get_bound_plugin()
582+
self.assertEqual(plugin.name, 'Link {}'.format(language))
583+
554584
def test_copy_page_to_explicit_position(self):
555585
"""
556586
User should be able to copy a single page and paste it

0 commit comments

Comments
 (0)
0