Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 4 additions & 2 deletions djangocms_versioning/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,10 @@
content_is_unlocked_for_user,
create_version_lock,
get_admin_url,
get_current_site,
get_editable_url,
get_latest_admin_viewable_content,
get_object_live_url,
get_preview_url,
proxy_model,
remove_version_lock,
Expand Down Expand Up @@ -1097,9 +1099,9 @@ def publish_view(self, request, object_id):
self.message_user(request, _("Version published"))

# Redirect to published?
if conf.ON_PUBLISH_REDIRECT == "published":
if not requested_redirect and conf.ON_PUBLISH_REDIRECT == "published":
if hasattr(version.content, "get_absolute_url"):
requested_redirect = requested_redirect or version.content.get_absolute_url()
requested_redirect = get_object_live_url(version.content, site=get_current_site(request))

return self._internal_redirect(requested_redirect, redirect_url)

Expand Down
6 changes: 5 additions & 1 deletion djangocms_versioning/cms_toolbars.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@
from djangocms_versioning.conf import ALLOW_DELETING_VERSIONS, LOCK_VERSIONS
from djangocms_versioning.constants import DRAFT
from djangocms_versioning.helpers import (
get_current_site,
get_latest_admin_viewable_content,
get_object_live_url,
version_list_url,
)
from djangocms_versioning.models import Version
Expand Down Expand Up @@ -250,7 +252,9 @@ def _add_view_published_button(self):
if not published_version:
return

url = published_version.get_absolute_url() if hasattr(published_version, "get_absolute_url") else None
url = None
if hasattr(published_version, "get_absolute_url"):
url = get_object_live_url(published_version, site=get_current_site(self.toolbar.request))
if url and (self.toolbar.edit_mode_active or self.toolbar.preview_mode_active):
item = ButtonList(side=self.toolbar.RIGHT)
item.add_button(
Expand Down
21 changes: 17 additions & 4 deletions djangocms_versioning/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
from django.http import HttpRequest
from django.template.loader import render_to_string
from django.utils.encoding import force_str
from django.utils.translation import get_language
from django.utils.translation import get_language, override as force_language

from . import versionables
from .conf import EMAIL_NOTIFICATIONS_FAIL_SILENTLY
Expand All @@ -29,6 +29,21 @@
except ImportError:
emit_content_change = None

try:
# django CMS >= 5.1
from cms.toolbar.utils import get_object_live_url # noqa F401

Check notice

Code scanning / CodeQL

Unused import Note

Import of 'get_object_live_url' is not used.
from cms.utils import get_current_site # noqa F401

Check notice

Code scanning / CodeQL

Unused import Note

Import of 'get_current_site' is not used.
except ImportError:
# cms < 5.1
def get_object_live_url(obj, language=None, site=None) -> str:
with force_language(language):
return obj.get_absolute_url()

def get_current_site(request) -> models.Model:
from django.contrib.sites.models import Site

return Site.objects.get_current()


def is_editable(content_obj: models.Model, request: HttpRequest) -> bool:
"""Check of content_obj is editable"""
Expand Down Expand Up @@ -72,9 +87,7 @@
admin_site.register(modeladmin.model, new_admin_class)


def replace_admin_for_models(
pairs: Iterable[tuple[type[models.Model], type]], admin_site: admin.AdminSite | None = None
):
def replace_admin_for_models(pairs: tuple[type[models.Model], type], admin_site: admin.AdminSite | None = None):
"""
:param pairs: Iterable of (model class, admin mixin class) tuples
:param admin_site: AdminSite instance
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@



<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="?language={{ language }}{% if request.GET.parent_page %}&amp;parent_page={{ request.GET.parent_page }}{% endif %}{# parameter `parent_node` only for django CMS 4.1 support #}{% if request.GET.parent_node %}&amp;parent_node={{ request.GET.parent_node }}{% endif %}{%if request.GET.source %}&amp;source={{ request.GET.source }}{% endif %}" method="post" id="{{ opts.model_name }}_form">
<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="?language={{ language }}{% if request.GET.site %}&amp;site={{ request.GET.site }}{% endif %}{% if request.GET.parent_page %}&amp;parent_page={{ request.GET.parent_page }}{% endif %}{# parameter `parent_node` only for django CMS 4.1 support #}{% if request.GET.parent_node %}&amp;parent_node={{ request.GET.parent_node }}{% endif %}{%if request.GET.source %}&amp;source={{ request.GET.source }}{% endif %}" method="post" id="{{ opts.model_name }}_form">
{% csrf_token %}
{% block form_top %}{% endblock %}

Expand Down
Loading