Skip to content
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

fix: validate endpoint languages and redirect if not editable #7691

Merged
merged 6 commits into from
Nov 20, 2023

Conversation

fsbraun
Copy link
Member

@fsbraun fsbraun commented Oct 30, 2023

Description

This PR ensures that content object endpoints are rendered in the language of the content object, if it has one defined (using its language property).

  • English content objects have /en/admin/placeholder/... as path
  • Italian content objects have /it/admin/placeholder/.. as path

It also completes the toolbar API by adding a object_is_editable method which checks if the toolbar object has a is_editable property as set, e.g., by djangocms_versioning.

The Page menu only offers edit page if the page content object is editable (prevents an undefined state as described in django-cms/djangocms-versioning#354).

The edit endpoint will redirect to the preview endpoint if a toolbar object is not editable, solving django-cms/djangocms-versioning#355 and django-cms/djangocms-versioning#337

Finally, optimizes the page rendering, preventing detecting the selected language multiple times.

Related resources

Checklist

  • I have opened this pull request against develop-4
  • I have added or modified the tests when changing logic
  • I have followed the conventional commits guidelines to add meaningful information into the changelog
  • I have read the contribution guidelines and I have joined #workgroup-pr-review on Slack to find a “pr review buddy” who is going to review my pull request.

@fsbraun fsbraun requested a review from marksweb October 30, 2023 09:45
@fsbraun fsbraun added the 4.1 label Oct 30, 2023
Copy link
Member

@marksweb marksweb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me 👍

@fsbraun fsbraun merged commit 7fa0b69 into django-cms:develop-4 Nov 20, 2023
78 checks passed
@fsbraun fsbraun deleted the feat/validate-endpoints branch November 20, 2023 16:19
fsbraun added a commit that referenced this pull request Dec 10, 2023
* ci: Merge back `release/4.1.x` (4.1.0rc4) into `develop-4` (#7640)

* Fix: Debug toolbar action button has too low contrast in dark mode (#7642)

* feat: django 5 support (#7648)

* Support for Django 5.0

* Fix: test.yml and django Promise handling

* Shorten github action names

* Update test.yml

* Update _cms.scss

* Update setup.py

* test: Run tests against django main branch (#7650)

* ci: Add testing against django main branch

* ci: Add dependabot github action updates

* ci: Test all dbs on django main

* Update postgres

Co-authored-by: Fabian Braun <[email protected]>

* Output django version

Co-authored-by: Fabian Braun <[email protected]>

* Output django version

Co-authored-by: Fabian Braun <[email protected]>

* ci: install requirements before django

* Remove duplicate

Co-authored-by: Fabian Braun <[email protected]>

* Replace get_storage_class with import_string

* Fix ruff

* remove unused code from util. __init__.py

* Fix incomplete property overwrite

* Fix: Lazy choice field implementation was wrong. Added test coverage

* Fix: Add `on-error-continue: true` to django-main-postgres and django-main-mysql github actions

---------

Co-authored-by: Fabian Braun <[email protected]>

* fix: When opening structure board page menu disappears or shows wrong page template (#7671)

* Fix: add .current_page to request for structure board

* Fix caching issue showing wrong selected page template

* Fix: add .current_page to request for structure board

* Fix caching issue showing wrong selected page template

* Add tests

* fix: Update RTD config (#7647)

* Add comments

---------

Co-authored-by: Mark Walker <[email protected]>

* fix: #7662, add support for python 3.12 and upgrade github actions (#7680)

* fix: #7662, add support for python 3.12 and upgrade github actions

* fix: deprecations

* fix: make some improvements to codespell and the tests for docs

* fix: add updated reqs for docs

* fix: code spell typos

* fix: code spell typos for docs

* fix: some more spell fixes

* fix: pretty much all spelling mistakes

* fix: some more spelling mistakes

* fix: skiplist further

* fix: issue with outdated deps at docs/requirements

* fix: downgrade matplotlib to a version that also builds on python 3.8

* fix: 3.8 build

* fix: try to fix some test failures

* fix: drop 3.8

* fix: upgrade sphinxcontrib-spelling to 8.0.0 so that 3.12 builds

* fix: no need to hardcode sphinx in test requirements

* fix: get the tests passing for sqlite

* fix: sqlite tests finally

* fix: use furo theme for cms 4 as well

:

* fix: use cms 4 for building docs documentation

* fix: same as in develop for cms 3.11.x

* fix: abbreviation into full form to not confused codespell

* fix: `.load` jQuery method erroneously replaced by `.on('load')` (#7679)

* Fix: `.load` jQuery method erroneously replaced by `on('load')`

* fix: Remove `can_publish` permission from django CMS 4 core (#7635)

* Fix css glitch

* Update translations source fill which was missing strings

* Fix: Remove can_publish permission

* Update _toolbar.scss

* Fix: Use svg icons for boolean values in admin (present since Dango 1.11)

* Fix: Update to use .format for icon base

* Fix: missing alt attribute

* fix: Port forward #7664 and #7657 (#7695)

* fix: preserve `view_class` in decorated views (#7664)

* Fix tests

* Bugfix: avoid InvalidCacheKey (memcached) for key-length ~249 (fixes #7595) (#7657)

* Remove docs test from test suite (since covered by separate github action)

* Remove docs requirements from the django-main test

* Add setuptools to requirements for python 3.12

* Add setuptools to requirements.txt

* Fix: Test with current ckeditor

* Undo unnecessary change

* Fix tests for Django 5.1

* Fix: Missing output_field

---------

Co-authored-by: Will Hoey <[email protected]>
Co-authored-by: wfehr <[email protected]>

* fix: validate endpoint languages and redirect if not editable (#7691)

* Fix: align language settings for preview and edit endpoints

* Rename to existing "is_editable" method.

* Add "object_is_editable" to toolbar as a common interface to decide if an object is editable

* Fix identation

* fix: Add check for Django's i18n context processor needed for wizards to work (#7699)

* Check for `django.template.context_processors.i18n` preprocessor in the i18n check (required for wizards to work)

* Fix tests ;-)

* feat: Add `djangocms` command to quickly start a project (#7702)

* fix: Localization of permission checks on deleting (#7683)

* Permission in the german version have sometimes german names.

* change django-cms to cms

* Remove specific German locale test

* Update pageadmin.py

* Undo renaming

---------

Co-authored-by: wintergruen <[email protected]>
Co-authored-by: Fabian Braun <[email protected]>

* fix: django 5's choice widget is not lazy (#7707)

* Support for Django 5.0

* Fix: test.yml and django Promise handling

* Shorten github action names

* Update test.yml

* Update _cms.scss

* Update setup.py

* Fix: Django 5 choice widget is not lazy either

* Add test

* Fix: Swapped underscore

* Deprecate SuperLazyIterator and LazyChoiceField

* fix: Page Content Extension toolbar (#7708)

* Fix: page content extension toolbar naming and use latest_content filter

* Align page content extension menu with shown page content

* Deprecate the use for more than one page content object

* fix linting issue

* Accommodate review feedback

* Add some comments

* Readability improvement `ruff format`

* One more readability improvement

* Doc-string update

* Fix typo

Co-authored-by: Jacob Rief <[email protected]>

* fix: Language chooser options pointing to the same language (#7698)

* Fix: Language chooser

* Ensure page language uniqueness

* Fix linter issue

* Add edit mode and preview mode to language chooser

* Add option to register grouper field for frontend-editable models

* Undo changes to cms_toolbars to avoid code redundancy

* Simplify toolbar utils.

* Remove not util function

* Remove unneeded imports

* fix: allow for `EmptyPageContent`

* Add CONTRIBUTING.rst and CODE_OF_CONDUCT.rst to develop-4 branch (#7713)

---------

Co-authored-by: Mark Walker <[email protected]>
Co-authored-by: Vinit Kumar <[email protected]>
Co-authored-by: Will Hoey <[email protected]>
Co-authored-by: wfehr <[email protected]>
Co-authored-by: dwintergruen <[email protected]>
Co-authored-by: wintergruen <[email protected]>
Co-authored-by: Jacob Rief <[email protected]>
fsbraun added a commit to fsbraun/django-cms that referenced this pull request Feb 7, 2024
…-cms#7691)

* Fix: align language settings for preview and edit endpoints

* Rename to existing "is_editable" method.

* Add "object_is_editable" to toolbar as a common interface to decide if an object is editable

* Fix identation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants