@valid_ajax_request_required
def reorder_view(request: WSGIRequest, pk: int) -> JsonResponse:
entry_version = get_object_or_null_obj(EntryVersion, pk=pk)
if entry_version.id is None:
return JsonResponse({'type': 'error', 'message': 'EntryVersion not found.'})
body_data = json.loads(request.body.decode('utf-8'))
order = body_data.get('order', None)
if order is None:
return JsonResponse({'type': 'error', 'message': 'Order Not Found.'})
block_id = body_data.get('block_id')
if not body_data.get('block_id'):
return JsonResponse({'type': 'error', 'message': 'Missing Required Data.'})
block = get_object_or_null_obj(EntryVersionBlock, pk=block_id)
if block.id is None:
return JsonResponse({'type': 'error', 'message': 'Block not found.'})
block.ordering_services.processor.move_to_position(
destination_objects=entry_version.blocks.active(),
position=order,
)
return JsonResponse({
'type': 'success', 'message': 'Order reordered successfully',
})