|
18 | 18 | from django.http import HttpRequest |
19 | 19 | from django.template.loader import render_to_string |
20 | 20 | from django.utils.encoding import force_str |
21 | | -from django.utils.translation import get_language |
| 21 | +from django.utils.translation import get_language, override as force_language |
22 | 22 |
|
23 | 23 | from . import versionables |
24 | 24 | from .conf import EMAIL_NOTIFICATIONS_FAIL_SILENTLY |
|
29 | 29 | except ImportError: |
30 | 30 | emit_content_change = None |
31 | 31 |
|
| 32 | +try: |
| 33 | + # django CMS >= 5.1 |
| 34 | + from cms.toolbar.utils import get_object_live_url # noqa F401 |
| 35 | + from cms.utils import get_current_site # noqa F401 |
| 36 | +except ImportError: |
| 37 | + # cms < 5.1 |
| 38 | + def get_object_live_url(obj, language=None, site=None) -> str: |
| 39 | + with force_language(language): |
| 40 | + return obj.get_absolute_url() |
| 41 | + |
| 42 | + def get_current_site(request) -> models.Model: |
| 43 | + from django.contrib.sites.models import Site |
| 44 | + |
| 45 | + return Site.objects.get_current() |
| 46 | + |
32 | 47 |
|
33 | 48 | def is_editable(content_obj: models.Model, request: HttpRequest) -> bool: |
34 | 49 | """Check of content_obj is editable""" |
@@ -72,9 +87,7 @@ def _replace_admin_for_model(modeladmin: type[admin.ModelAdmin], mixin: type, ad |
72 | 87 | admin_site.register(modeladmin.model, new_admin_class) |
73 | 88 |
|
74 | 89 |
|
75 | | -def replace_admin_for_models( |
76 | | - pairs: Iterable[tuple[type[models.Model], type]], admin_site: admin.AdminSite | None = None |
77 | | -): |
| 90 | +def replace_admin_for_models(pairs: tuple[type[models.Model], type], admin_site: admin.AdminSite | None = None): |
78 | 91 | """ |
79 | 92 | :param pairs: Iterable of (model class, admin mixin class) tuples |
80 | 93 | :param admin_site: AdminSite instance |
|
0 commit comments