0002-manager-add-redirect-view-from-frontoffice-to-backof.patch
combo/data/utils.py | ||
---|---|---|
31 | 31 | |
32 | 32 | |
33 | 33 |
class MissingSubSlug(Exception): |
34 |
pass |
|
34 |
def __init__(self, page): |
|
35 |
self.page = page |
|
35 | 36 | |
36 | 37 | |
37 | 38 |
class ImportSiteError(Exception): |
... | ... | |
241 | 242 |
break |
242 | 243 |
if page.sub_slug: |
243 | 244 |
if parts[i + 1 :] == []: |
244 |
raise MissingSubSlug |
|
245 |
raise MissingSubSlug(page)
|
|
245 | 246 |
extra = extract_context_from_sub_slug(page.sub_slug, parts[i + 1]) |
246 | 247 |
if extra is None: |
247 | 248 |
page = None |
combo/manager/urls.py | ||
---|---|---|
141 | 141 |
), |
142 | 142 |
url(r'^pages/(?P<page_pk>\d+)/order$', views.cell_order, name='combo-manager-cell-order'), |
143 | 143 |
url(r'^pages/order$', views.page_order, name='combo-manager-page-order'), |
144 |
url( |
|
145 |
r'^pages/(?P<page_path>[\w/_-]+)/$', |
|
146 |
views.page_redirect_to_edit, |
|
147 |
name='combo-manager-page-redirect-to-edit', |
|
148 |
), |
|
144 | 149 |
url(r'^ckeditor/upload/', ckeditor_views.upload, name='ckeditor_upload'), |
145 | 150 |
url(r'^ckeditor/browse/', never_cache(assets_views.browse), name='ckeditor_browse'), |
146 | 151 |
] |
combo/manager/views.py | ||
---|---|---|
47 | 47 |
from combo import plugins |
48 | 48 |
from combo.data.library import get_cell_class |
49 | 49 |
from combo.data.models import CellBase, LinkListCell, Page, PageSnapshot, ParentContentCell |
50 |
from combo.data.utils import ImportSiteError, export_site, export_site_tar, import_site, import_site_tar |
|
50 |
from combo.data.utils import ( |
|
51 |
ImportSiteError, |
|
52 |
MissingSubSlug, |
|
53 |
export_site, |
|
54 |
export_site_tar, |
|
55 |
get_page_from_url_parts, |
|
56 |
import_site, |
|
57 |
import_site_tar, |
|
58 |
) |
|
51 | 59 |
from combo.urls_utils import staff_required |
52 | 60 | |
53 | 61 |
from .forms import ( |
... | ... | |
572 | 580 |
snapshot_restore = SnapshotRestoreView.as_view() |
573 | 581 | |
574 | 582 | |
583 |
class PageRedirectToEditView(RedirectView): |
|
584 |
permanent = False |
|
585 | ||
586 |
def get_redirect_url(self, page_path): |
|
587 |
try: |
|
588 |
page = get_page_from_url_parts(page_path.split('/')) |
|
589 |
except MissingSubSlug as e: |
|
590 |
page = e.page |
|
591 |
return reverse('combo-manager-page-view', kwargs={'pk': page.pk}) |
|
592 | ||
593 | ||
594 |
page_redirect_to_edit = PageRedirectToEditView.as_view() |
|
595 | ||
596 | ||
575 | 597 |
class PageAddCellView(ManagedPageMixin, RedirectView): |
576 | 598 |
permanent = False |
577 | 599 |
tests/test_manager.py | ||
---|---|---|
2598 | 2598 |
(page5.id, 1), |
2599 | 2599 |
(page4.id, 0), |
2600 | 2600 |
] |
2601 | ||
2602 | ||
2603 |
def test_redirect_to_page_edit(app, admin_user): |
|
2604 |
page = Page.objects.create(title='One', slug='one') |
|
2605 |
page2 = Page.objects.create(title='Two', slug='two', parent=page) |
|
2606 |
page3 = Page.objects.create(title='User', slug='users', sub_slug='(?P<blah>[a-z]+)') |
|
2607 | ||
2608 |
app = login(app) |
|
2609 |
resp = app.get('/manage/pages/one/', status=302) |
|
2610 |
assert resp.location == '/manage/pages/%s/' % page.pk |
|
2611 | ||
2612 |
resp = app.get('/manage/pages/one/two/', status=302) |
|
2613 |
assert resp.location == '/manage/pages/%s/' % page2.pk |
|
2614 | ||
2615 |
resp = app.get('/manage/pages/users/', status=302) |
|
2616 |
assert resp.location == '/manage/pages/%s/' % page3.pk |
|
2617 | ||
2618 |
resp = app.get('/manage/pages/users/xxx/', status=302) |
|
2619 |
assert resp.location == '/manage/pages/%s/' % page3.pk |
|
2601 |
- |