manager: add redirect view from frontoffice to backoffice (#57672)
This commit is contained in:
parent
18fcc5a35d
commit
981f2ee8a1
|
@ -31,7 +31,8 @@ from .models import Page, extract_context_from_sub_slug
|
|||
|
||||
|
||||
class MissingSubSlug(Exception):
|
||||
pass
|
||||
def __init__(self, page):
|
||||
self.page = page
|
||||
|
||||
|
||||
class ImportSiteError(Exception):
|
||||
|
@ -241,7 +242,7 @@ def get_page_from_url_parts(parts, request=None):
|
|||
break
|
||||
if page.sub_slug:
|
||||
if parts[i + 1 :] == []:
|
||||
raise MissingSubSlug
|
||||
raise MissingSubSlug(page)
|
||||
extra = extract_context_from_sub_slug(page.sub_slug, parts[i + 1])
|
||||
if extra is None:
|
||||
page = None
|
||||
|
|
|
@ -141,6 +141,11 @@ urlpatterns = [
|
|||
),
|
||||
url(r'^pages/(?P<page_pk>\d+)/order$', views.cell_order, name='combo-manager-cell-order'),
|
||||
url(r'^pages/order$', views.page_order, name='combo-manager-page-order'),
|
||||
url(
|
||||
r'^pages/(?P<page_path>[\w/_-]+)/$',
|
||||
views.page_redirect_to_edit,
|
||||
name='combo-manager-page-redirect-to-edit',
|
||||
),
|
||||
url(r'^ckeditor/upload/', ckeditor_views.upload, name='ckeditor_upload'),
|
||||
url(r'^ckeditor/browse/', never_cache(assets_views.browse), name='ckeditor_browse'),
|
||||
]
|
||||
|
|
|
@ -47,7 +47,15 @@ from django.views.generic import (
|
|||
from combo import plugins
|
||||
from combo.data.library import get_cell_class
|
||||
from combo.data.models import CellBase, LinkListCell, Page, PageSnapshot, ParentContentCell
|
||||
from combo.data.utils import ImportSiteError, export_site, export_site_tar, import_site, import_site_tar
|
||||
from combo.data.utils import (
|
||||
ImportSiteError,
|
||||
MissingSubSlug,
|
||||
export_site,
|
||||
export_site_tar,
|
||||
get_page_from_url_parts,
|
||||
import_site,
|
||||
import_site_tar,
|
||||
)
|
||||
from combo.urls_utils import staff_required
|
||||
|
||||
from .forms import (
|
||||
|
@ -572,6 +580,20 @@ class SnapshotRestoreView(ManagedPageMixin, DetailView):
|
|||
snapshot_restore = SnapshotRestoreView.as_view()
|
||||
|
||||
|
||||
class PageRedirectToEditView(RedirectView):
|
||||
permanent = False
|
||||
|
||||
def get_redirect_url(self, page_path):
|
||||
try:
|
||||
page = get_page_from_url_parts(page_path.split('/'))
|
||||
except MissingSubSlug as e:
|
||||
page = e.page
|
||||
return reverse('combo-manager-page-view', kwargs={'pk': page.pk})
|
||||
|
||||
|
||||
page_redirect_to_edit = PageRedirectToEditView.as_view()
|
||||
|
||||
|
||||
class PageAddCellView(ManagedPageMixin, RedirectView):
|
||||
permanent = False
|
||||
|
||||
|
|
|
@ -2614,3 +2614,22 @@ def test_restricted_page_edit(app, admin_user, john_doe):
|
|||
(page5.id, 1),
|
||||
(page4.id, 0),
|
||||
]
|
||||
|
||||
|
||||
def test_redirect_to_page_edit(app, admin_user):
|
||||
page = Page.objects.create(title='One', slug='one')
|
||||
page2 = Page.objects.create(title='Two', slug='two', parent=page)
|
||||
page3 = Page.objects.create(title='User', slug='users', sub_slug='(?P<blah>[a-z]+)')
|
||||
|
||||
app = login(app)
|
||||
resp = app.get('/manage/pages/one/', status=302)
|
||||
assert resp.location == '/manage/pages/%s/' % page.pk
|
||||
|
||||
resp = app.get('/manage/pages/one/two/', status=302)
|
||||
assert resp.location == '/manage/pages/%s/' % page2.pk
|
||||
|
||||
resp = app.get('/manage/pages/users/', status=302)
|
||||
assert resp.location == '/manage/pages/%s/' % page3.pk
|
||||
|
||||
resp = app.get('/manage/pages/users/xxx/', status=302)
|
||||
assert resp.location == '/manage/pages/%s/' % page3.pk
|
||||
|
|
Loading…
Reference in New Issue