Projet

Général

Profil

0002-manager-add-redirect-view-from-frontoffice-to-backof.patch

Valentin Deniaud, 11 octobre 2021 16:01

Télécharger (4,22 ko)

Voir les différences:

Subject: [PATCH 2/2] manager: add redirect view from frontoffice to backoffice
 (#57672)

 combo/data/utils.py    |  5 +++--
 combo/manager/urls.py  |  5 +++++
 combo/manager/views.py | 24 +++++++++++++++++++++++-
 tests/test_manager.py  | 19 +++++++++++++++++++
 4 files changed, 50 insertions(+), 3 deletions(-)
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
-