8000 chore: merge develop-4 into release/4.1.x by fsbraun · Pull Request #7886 · django-cms/django-cms · GitHub
[go: up one dir, main page]

Skip to content

chore: merge develop-4 into release/4.1.x #7886

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 71 commits into from
Apr 23, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
fdc3639
chore: Merge back `release/4.1.x` into `develop-4` (#7731)
fsbraun Jan 5, 2024
e0c7550
fix issue #7745 (#7747)
jrief Jan 10, 2024
885ee98
docs: Update how-to use placeholder in custom models (#7742)
fsbraun Jan 10, 2024
df0831d
adopt <form id="…"> to proper model (#7753)
jrief Jan 10, 2024
082214b
fix: Incorrect commands to migrate database in docs (#7754)
sakhawy Jan 10, 2024
10e9b53
fix: Replace the VCS pip installs with release name in docs (#7755)
sakhawy Jan 10, 2024
b1bca46
build(deps): bump actions/setup-python from 2 to 5 (#7760)
dependabot[bot] Jan 12, 2024
dc4fab1
build(deps): bump jinja2 from 3.1.2 to 3.1.3 in /docs (#7761)
dependabot[bot] Jan 13, 2024
074dba2
build(deps): bump github/codeql-action from 2 to 3 (#7759)
dependabot[bot] Jan 13, 2024
4538b68
build(deps): bump actions/checkout from 3 to 4 (#7758)
dependabot[bot] Jan 13, 2024
31c458f
build(deps): bump amannn/action-semantic-pull-request from 4 to 5 (#7…
dependabot[bot] Jan 13, 2024
3ba3da1
build(deps): bump actions/github-script from 5 to 7 (#7756)
dependabot[bot] Jan 13, 2024
68749cb
fix: make messages readable in dark mode, let user close long message…
fsbraun Jan 14, 2024
c20b042
build(deps): bump actions/setup-node from 3 to 4 (#7764)
dependabot[bot] Jan 15, 2024
cd6df84
fix: editing of apphooked CMS pages without apphook landing page (#7766)
Chilipp Jan 18, 2024
0f37d79
chore: Update github issue and PR templates (#7767)
fsbraun Jan 19, 2024
5981dfc
Issue 7763 is fixed (#7771)
erkesado Jan 21, 2024
23d70a9
build(deps): bump actions/cache from 3 to 4 (#7775)
dependabot[bot] Jan 22, 2024
ed7e206
build(deps): bump django from 3.2.16 to 3.2.23 in /docs (#7776)
dependabot[bot] Jan 23, 2024
f290e3d
fix: Redirect user to edit url after a successful page creation (#7772)
sakhawy Jan 26, 2024
ce8d5d5
fix: return _handle_no_page when page is None (#7786)
sakhawy Jan 27, 2024
5f3f0c9
chore: Update PR lint action (#7790)
marksweb Jan 28, 2024
9074f83
ci: Adjust CI triggers to mostly PR runs (#7791)
marksweb Jan 28, 2024
e1ba77a
ci: Added pre-commit including ruff linting & formatting (#7788)
marksweb Jan 29, 2024
ad02c75
docs: Update dev policies (#7793)
marksweb Jan 29, 2024
121ff74
fix versioning links (#7795)
Aiden-RC Jan 29, 2024
311af6c
feat: Added new contributor message based on django's own version (#7…
marksweb Jan 30, 2024
4fbd4dc
ci: Update new_contributor_pr.yml (#7803)
Aiden-RC Jan 31, 2024
9e56597
ci: Added ruff format rules (#7800)
marksweb Feb 2, 2024
26b081a
fix: Port forward #7070 - faster DOM update after editing (#7787)
fsbraun Feb 4, 2024
545ea1f
feat: add versioned deprecation warnings (#7750)
fsbraun Feb 10, 2024
2246442
ci: Fix discord notification action version (#7811)
marksweb Feb 13, 2024
8a0aa59
build(deps): bump django from 3.2.23 to 3.2.24 in /docs (#7806)
dependabot[bot] Feb 13, 2024
8c8afb0
build(deps-dev): bump ip from 1.1.5 to 1.1.9 (#7821)
dependabot[bot] Feb 21, 2024
f4c77c8
ci: Fix discord notification action inputs (#7824)
marksweb Feb 27, 2024
744f406
docs: Update to reflect new, simplified contributing process (#7827)
fsbraun Feb 28, 2024
4e085a4
Update 01-install.rst (#7823)
sparrowme Feb 28, 2024
087fa3e
fix: solved issue #7818 (#7819)
raffaellasuardini Feb 28, 2024
e264d04
fix: render content in place `redirect_on_fallback` is False (#7781)
sakhawy Feb 28, 2024
3e635d3
fix: Delete orphaned plugin management command for django CMS 4 (#7814)
fsbraun Feb 29, 2024
b0f59bb
fix: Efficient build menu for versioned and unversioned pages (#7807)
fsbraun Feb 29, 2024
08463c2
fix: 7828, try using uv as pip replacement (#7829)
Mar 5, 2024
21d6a6d
fix: Add RTL support to pagetree (#7817)
sakhawy Mar 6, 2024
d123d11
fix: Render structure view in toolbar object's language (#7846)
fsbraun Mar 21, 2024
fa7b89c
fix: `views.details` revealed existence of unpublished language (#7853)
fsbraun Mar 25, 2024
1344853
Fix documentation typo (#7860)
milosnikic Mar 28, 2024
01dc649
fix #7826
jrief Feb 28, 2024
0b43a43
fix: Redirects to newly created object (#7864)
fsbraun Apr 4, 2024
6dd06bf
build(deps): bump black from 22.12.0 to 24.3.0 in /docs (#7848)
dependabot[bot] Apr 4, 2024
3a001a2
build(deps): bump django from 3.2.24 to 3.2.25 in /docs (#7845)
dependabot[bot] Apr 4, 2024
1bd19b5 8000
build(deps-dev): bump follow-redirects from 1.15.2 to 1.15.6 (#7843)
dependabot[bot] Apr 4, 2024
570c122
build(deps): bump axios and browser-sync (#7822)
dependabot[bot] Apr 4, 2024
1bb43c9
Create FUNDING.yml (#7852)
fsbraun Apr 5, 2024
c600897
build(deps): bump urllib3 from 1.26.12 to 1.26.18 in /docs (#7778)
dependabot[bot] Apr 5, 2024
6da9de8
Merge branch 'develop-4' of github.com:fsbraun/django-cms into develop-4
fsbraun Apr 7, 2024
92a1086
feat: Add RTL support to toolbar (#7871)
sakhawy Apr 15, 2024
12ad276
build(deps): bump sqlparse from 0.4.3 to 0.5.0 in /docs (#7874)
dependabot[bot] Apr 18, 2024
ee2f469
Merge branch 'develop-4' of github.com:fsbraun/django-cms into develop-4
fsbraun Apr 18, 2024
3fba0c8
build(deps): bump idna from 3.4 to 3.7 in /docs (#7870)
dependabot[bot] Apr 18, 2024
1854ba4
Merge branch 'develop-4' of github.com:fsbraun/django-cms into develop-4
fsbraun Apr 19, 2024
564f184
docs: Add documentation for some cms.utils.plugins functions (#7884)
fsbraun Apr 19, 2024
6b78c89
Merge branch 'release/4.1.x' into develop-4
fsbraun Apr 19, 2024
566cbf4
Merge branch 'develop-4' of github.com:fsbraun/django-cms into develop-4
fsbraun Apr 19, 2024
513318c
Fix merge errors
fsbraun Apr 19, 2024
a6511da
docs: Replace Slack with Discord (#7877)
macolo Apr 20, 2024
c436cf4
fix: some Django antipatterns (#7867)
jrief Apr 20, 2024
95e9afb
Merge branch 'django-cms:develop-4' into develop-4
fsbraun Apr 20, 2024
bef0045
feat: Add RTL support to modal header and related components (#7863)
sakhawy Apr 23, 2024
7f1ec98
Merge branch 'django-cms:develop-4' into develop-4
fsbraun Apr 23, 2024
fb30434
fix: CMS widgets need not load if they are read only (#7880)
fsbraun Apr 23, 2024
6771f8b
Merge branch 'django-cms:develop-4' into develop-4
fsbraun Apr 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix: Redirects to newly created object (#7864)
  • Loading branch information
fsbraun authored Apr 4, 2024
commit 0b43a43c389b99025a022d194a17d0a16a6bf1d1
5 changes: 5 additions & 0 deletions cms/admin/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,11 @@ class AddPageForm(BasePageContentForm):
required=False,
widget=forms.HiddenInput(),
)
edit = forms.IntegerField(
# Got to edit/preview mode after adding
required=False,
widget=forms.HiddenInput(),
)
content_defaults = {
"in_navigation": True,
}
Expand Down
16 changes: 16 additions & 0 deletions cms/admin/pageadmin.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
)
from cms.admin.permissionadmin import PERMISSION_ADMIN_INLINES
from cms.cache.permissions import clear_permission_cache
from cms.constants import MODAL_HTML_REDIRECT
from cms.models import (
CMSPlugin,
EmptyPageContent,
Expand All @@ -65,6 +66,7 @@
)
from cms.plugin_pool import plugin_pool
from cms.signals.apphook import set_restart_trigger
from cms.toolbar.utils import get_object_edit_url
from cms.utils import get_current_site, page_permissions, permissions
from cms.utils.admin import jsonify_request
from cms.utils.conf import get_cms_setting
Expand Down Expand Up @@ -980,6 +982,20 @@ def change_view(self, request, object_id, form_url='', extra_context=None):

return super().change_view(request, object_id, form_url=form_url, extra_context=context)

def response_add(self, request, obj):
redirect = request.POST.get("edit", False)
if redirect == "1":
from django.core.cache import cache

from cms.cache.permissions import get_cache_key, get_cache_permission_version
cache.delete(get_cache_key(request.user, 'change_page'), version=get_cache_permission_version())

# redirect to the edit view if added from the toolbar
url = get_object_edit_url(obj) # Redirects to preview if necessary
return HttpResponse(MODAL_HTML_REDIRECT.format(url=url))
return super().response_add(request, obj)


def get_filled_languages(self, request, page):
site_id = get_site(request).pk
filled_languages = page.get_languages()
Expand Down
4 changes: 3 additions & 1 deletion cms/cms_toolbars.py
Original file line number Diff line number Diff line change
Expand Up @@ -499,7 +499,9 @@ def change_language_menu(self):
page_add_url = admin_reverse('cms_pagecontent_add')

for code, name in add:
url = add_url_parameters(page_add_url, cms_page=self.page.pk, language=code)
url = add_url_parameters(
page_add_url, cms_page=self.page.pk, parent_node=self.page.node.id, language=code
)
add_plugins_menu.add_modal_item(name, url=url)

if remove:
Expand Down
2 changes: 2 additions & 0 deletions cms/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,5 @@
SCRIPT_USERNAME = 'script'

CMS_CONFIG_NAME = 'cms_config'

MODAL_HTML_REDIRECT = '<body><a class="cms-view-new-object" target="_top" href="{url}">Redirecting...</a></body>'
8 changes: 8 additions & 0 deletions cms/static/cms/js/modules/cms.modal.js
Original file li 1E0A ne number Diff line number Diff line change
Expand Up @@ -910,6 +910,14 @@ class Modal {
return;
}

// check if we are redirected - should only happen after successful form submission
var redirect = body.find('a.cms-view-new-object').attr('href');

if (redirect) {
Helpers.reloadBrowser(redirect, false);
return true;
}

// tabindex is required for keyboard navigation
// body.attr('tabindex', '0');
iframe.on('focus', function() {
Expand Down
12 changes: 12 additions & 0 deletions cms/test_utils/testcases.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,18 @@ def add_page_permission(self, user, page, **kwargs):
return pp

def get_page_title_obj(self, page, language="en"):
import warnings

from cms.utils.compat.warnings import RemovedInDjangoCMS42Warning

warnings.warn(
"get_page_title_obj is deprecated, use get_pagecontent_obj instead",
RemovedInDjangoCMS42Warning,
stacklevel=2,
)
return PageContent.objects.get(page=page, language=language)

def get_pagecontent_obj(self, page, language="en"):
return PageContent.objects.get(page=page, language=language)

def _create_user(self, username, is_staff=False, is_superuser=False,
Expand Down
2 changes: 1 addition & 1 deletion cms/tests/test_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ def get_page(self):

def test_change_innavigation(self):
page = self.get_page()
content = self.get_page_title_obj(page, 'en')
content = self.get_pagecontent_obj(page, 'en')
permless = self.get_permless()
admin_user = self.get_admin()
pagecontent_admin = self.pagecontent_admin_class
Expand Down
2 changes: 1 addition & 1 deletion cms/tests/test_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,7 @@ def test_no_page_cache_on_toolbar_edit(self):
superuser = self.get_superuser()
# Create a test page
page = create_page("test page 1", "nav_playground.html", "en")
page_content = self.get_page_title_obj(page)
page_content = self.get_pagecontent_obj(page)
page_url = page.get_absolute_url()
page_edit_url = get_object_edit_url(page_content)

Expand Down
2 changes: 1 addition & 1 deletion cms/tests/test_extensions.py
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ def setUp(self):

def test_duplicate_extensions(self):
with self.login_user_context(self.admin):
content = self.get_page_title_obj(self.page, 'en')
content = self.get_pagecontent_obj(self.page, 'en')
# create page copy
page_data = {
'title': 'type1', 'slug': 'type1', '_save': 1, 'template': 'nav_playground.html',
Expand Down
52 changes: 49 additions & 3 deletions cms/tests/test_page_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
LanguageOverride,
UserLoginContext,
)
from cms.toolbar.utils import get_object_edit_url
from cms.utils.compat import DJANGO_4_2
from cms.utils.compat.dj import installed_apps
from cms.utils.conf import get_cms_setting
Expand Down Expand Up @@ -1310,7 +1311,7 @@ def test_form_url_page_change(self):
with self.login_user_context(superuser):
content_admin = PageContentAdmin(PageContent, admin.site)
page = self.get_page()
content = self.get_page_title_obj(page, 'en')
content = self.get_pagecontent_obj(page, 'en')
form_url = self.get_page_change_uri('en', page)
# Middleware is needed to correctly setup the environment for the admin
request = self.get_request()
Expand Down Expand Up @@ -1558,6 +1559,51 @@ def test_page_tree_render_localized_page_ids(self):
self.assertEqual(response.status_code, 200)


class PageActionsTestCase(PageTestBase):
def setUp(self):
self.admin = self.get_superuser()
self.site = Site.objects.get(pk=1)
self.page = create_page(
'My Page', 'nav_playground.html', 'en',
slug="ok",
site=self.site, created_by=self.admin)

def test_add_page_redirect(self):
"""When adding the edit parameter to the add page form, the user should be redirected to the edit endpoint
of the new page."""
with self.login_user_context(self.admin):
# add page
page_data = {
'title': 'another page', 'slug': 'type1', 'template': 'nav_playground.html',
'language': 'en',
'edit': 1,
}
self.assertEqual(Page.objects.all().count(), 1)
response = self.client.post(
self.get_admin_url(PageContent, 'add'),
data=page_data,
)
redirect_url = get_object_edit_url(PageContent.objects.get(title='another page'))
self.assertContains(response, f'href="{redirect_url}"')
self.assertEqual(Page.objects.all().count(), 2)

def test_add_page_no_redirect(self):
with self.login_user_context(self.admin):
# add page
page_data = {
'title': 'another page', 'slug': 'type1', 'template': 'nav_playground.html',
'language': 'en',
'edit': 0,
}
self.assertEqual(Page.objects.all().count(), 1)
response = self.client.post(
self.get_admin_url(PageContent, 'add'),
data=page_data,
)
redirect_url = self.get_admin_url(PageContent, 'changelist') + "?language=en"
self.assertRedirects(response, redirect_url)
self.assertEqual(Page.objects.all().count(), 2)

class PermissionsTestCase(PageTestBase):

def _add_translation_to_page(self, page):
Expand Down Expand Up @@ -2912,7 +2958,7 @@ def test_user_can_copy_plugins_to_language(self):
"""
page = self.get_permissions_test_page()
staff_user = self.get_staff_user_with_no_permissions()
source_translation = self.get_page_title_obj(page, 'en')
source_translation = self.get_pagecontent_obj(page, 'en')
target_translation = self._add_translation_to_page(page)
endpoint = self.get_admin_url(PageContent, 'copy_language', source_translation.pk)
plugins = [
Expand Down Expand Up @@ -4320,7 +4366,7 @@ def test_user_can_copy_plugins_to_language(self):
"""
page = self._permissions_page
staff_user = self.get_staff_user_with_no_permissions()
source_translation = self.get_page_title_obj(page, 'en')
source_translation = self.get_pagecontent_obj(page, 'en')
target_translation = self._add_translation_to_page(page)
endpoint = self.get_admin_url(PageContent, 'copy_language', source_translation.pk)
plugins = [
Expand Down
6 changes: 3 additions & 3 deletions cms/tests/test_placeholder.py
Original file line number Diff line number Diff line change
Expand Up @@ -879,7 +879,7 @@ def test_sets_source_when_title_is_created(self):
page = create_page('test page en', 'col_two.html', 'en')

# check for en
page_content_en = self.get_page_title_obj(page)
page_content_en = self.get_pagecontent_obj(page)
self.assertQuerySetEqual(
Placeholder.objects.get_for_obj(page_content_en),
page_content_en.get_placeholders(),
Expand All @@ -906,8 +906,8 @@ def test_sets_source_when_title_is_copied(self):
with self.login_user_context(self.get_superuser()):
new_page = self.copy_page(page, page, position=1)

page_content = self.get_page_title_obj(page)
new_page_content = self.get_page_title_obj(new_page)
page_content = self.get_pagecontent_obj(page)
new_page_content = self.get_pagecontent_obj(new_page)
page_content_plhs = Placeholder.objects.get_for_obj(page_content)
new_page_content_plhs = Placeholder.objects.get_for_obj(new_page_content)
self.assertEqual(page_content_plhs.count(), new_page_content_plhs.count())
Expand Down
2 changes: 1 addition & 1 deletion cms/tests/test_plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -816,7 +816,7 @@ def test_plugin_toolbar_struct(self):

def test_plugin_toolbar_struct_permissions(self):
page = self.get_permissions_test_page()
page_content = self.get_page_title_obj(page)
page_content = self.get_pagecontent_obj(page)
page_edit_url = get_object_edit_url(page_content)
staff_user = self.get_staff_user_with_no_permissions()
placeholder = page.get_placeholders('en').get(slot='body')
Expand Down
4 changes: 2 additions & 2 deletions cms/tests/test_rendering.py
Original file line number Diff line number Diff line change
Expand Up @@ -734,7 +734,7 @@ def test_render_placeholder_toolbar(self):
placeholder.pk = placeholder.id = 99

with self.login_user_context(self.get_superuser()):
page_content = self.get_page_title_obj(self.test_page)
page_content = self.get_pagecontent_obj(self.test_page)
request = self.get_request(get_object_edit_url(page_content))
request.session = {}
request.toolbar = CMSToolbar(request)
Expand Down Expand Up @@ -771,7 +771,7 @@ def test_render_plugin_toolbar_markup(self):
]

with self.login_user_context(self.get_superuser()):
page_content = self.get_page_title_obj(page)
page_content = self.get_pagecontent_obj(page)
request = self.get_request(get_object_edit_url(page_content))
request.session = {}
request.toolbar = CMSToolbar(request)
Expand Down
10 changes: 5 additions & 5 deletions cms/tests/test_templatetags.py
Original file line number Diff line number Diff line change
Expand Up @@ -462,7 +462,7 @@ def test_render_plugin_editable(self):
from django.core.cache import cache
cache.clear()
page = create_page('Test', 'col_two.html', 'en')
page_content = self.get_page_title_obj(page)
page_content = self.get_pagecontent_obj(page)
placeholder = page.get_placeholders('en')[0]
plugin = add_plugin(placeholder, TextPlugin, 'en', body='<b>Test</b>')
template = "{% load cms_tags %}{% render_plugin plugin %}"
Expand Down Expand Up @@ -500,7 +500,7 @@ def test_render_plugin_not_editable(self):

def test_render_plugin_no_context(self):
page = create_page('Test', 'col_two.html', 'en')
page_content = self.get_page_title_obj(page)
page_content = self.get_pagecontent_obj(page)
placeholder = Placeholder.objects.create(slot='test')
plugin = add_plugin(placeholder, TextPlugin, 'en', body='Test')
superuser = self.get_superuser()
Expand Down Expand Up @@ -557,7 +557,7 @@ def test_render_model_with_deferred_fields(self):
Category.objects.create(name='foo', depth=1)
cache.clear()
page = create_page('Test', 'col_two.html', 'en')
page_content = self.get_page_title_obj(page)
page_content = self.get_pagecontent_obj(page)
template = "{% load cms_tags %}{% render_model category 'name' %}"
user = self._create_user("admin", True, True)
request = RequestFactory().get(get_object_edit_url(page_content))
Expand Down Expand Up @@ -589,7 +589,7 @@ def test_render_model_add(self):

cache.clear()
page = create_page('Test', 'col_two.html', 'en')
page_content = self.get_page_title_obj(page)
page_content = self.get_pagecontent_obj(page)
template = "{% load cms_tags %}{% render_model_add category %}"
user = self._create_user("admin", True, True)
request = RequestFactory().get(get_object_edit_url(page_content))
Expand Down Expand Up @@ -627,7 +627,7 @@ def test_render_model_add_block(self):

cache.clear()
page = create_page('Test', 'col_two.html', 'en')
page_content = self.get_page_title_obj(page)
page_content = self.get_pagecontent_obj(page)
template = "{% load cms_tags %}{% render_model_add_block category %}wrapped{% endrender_model_add_block %}"
user = self._create_user("admin", True, True)
request = RequestFactory().get(get_object_edit_url(page_content))
Expand Down
Loading
0