manager: fix page reorder with missing param (#63650)
gitea-wip/combo/pipeline/head There was a failure building this commit Details
gitea/combo/pipeline/head Something is wrong with the build of this commit Details

This commit is contained in:
Lauréline Guérin 2022-04-08 09:19:21 +02:00
parent d24640eb7b
commit fe50a2bc05
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 31 additions and 1 deletions

View File

@ -25,7 +25,7 @@ from django.conf import settings
from django.contrib import messages
from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
from django.db import transaction
from django.http import Http404, HttpResponse, HttpResponseRedirect, JsonResponse
from django.http import Http404, HttpResponse, HttpResponseBadRequest, HttpResponseRedirect, JsonResponse
from django.shortcuts import get_object_or_404, redirect, render
from django.template import engines
from django.urls import reverse, reverse_lazy
@ -868,6 +868,10 @@ cell_order = PageCellOrder.as_view()
@staff_required
def page_order(request):
params = ['new-order', 'moved-page-id', 'moved-page-new-parent']
for param in params:
if param not in request.GET:
return HttpResponseBadRequest('missing %s parameter' % param)
new_order = [int(x) for x in request.GET['new-order'].split(',')]
moved_page = Page.objects.get(id=request.GET['moved-page-id'])
if request.GET['moved-page-new-parent']:

View File

@ -771,6 +771,32 @@ def test_page_reorder(app, admin_user):
ordered_ids = [x.id for x in Page.get_as_reordered_flat_hierarchy(Page.objects.all())]
assert ordered_ids == [page1.id, page2.id, page3.id, page4.id]
# missing get params
app.get(
'/manage/pages/order',
params={
'moved-page-new-parent': 42,
'new-order': '42',
},
status=400,
)
app.get(
'/manage/pages/order',
params={
'moved-page-id': 42,
'new-order': '42',
},
status=400,
)
app.get(
'/manage/pages/order',
params={
'moved-page-id': 42,
'moved-page-new-parent': 42,
},
status=400,
)
# missing page3 in order
app.get(
'/manage/pages/order',