From ece46dea78980acf071ea57511abe4968e74e1cb Mon Sep 17 00:00:00 2001 From: mohsentaba Date: Sat, 22 Aug 2026 17:29:22 +0330 Subject: [PATCH] apis updated based on panel needs --- apps/hadis/models/category.py | 7 +++++++ apps/hadis/views_admin.py | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/apps/hadis/models/category.py b/apps/hadis/models/category.py index 0ee0220..d151612 100644 --- a/apps/hadis/models/category.py +++ b/apps/hadis/models/category.py @@ -92,6 +92,13 @@ class HadisCategory(LowercaseSlugMixin, MPTTModel): f'Parent sect: {self.parent.sect.sect_type}, ' f'Your sect: {self.sect.sect_type}') ) + if self.parent and self.parent.parent is not None: + if self.source_type != self.parent.source_type: + raise ValidationError( + _('Child category must have the same source_type as its parent when parent is not a root category. ' + f'Parent source_type: {self.parent.source_type}, ' + f'Your source_type: {self.source_type}') + ) slug_source_field = 'title' diff --git a/apps/hadis/views_admin.py b/apps/hadis/views_admin.py index c742e94..c48d314 100644 --- a/apps/hadis/views_admin.py +++ b/apps/hadis/views_admin.py @@ -506,6 +506,17 @@ class AdminBookReferenceImageViewSet(ModelViewSet): queryset = queryset.filter(book_reference_id=book_reference_id) return queryset.order_by("order", "id") + @action(detail=False, methods=["post"]) + def reorder(self, request): + image_ids = request.data.get("image_ids", []) or request.data.get("ids", []) + if not image_ids: + return Response({"error": "image_ids list is required"}, status=400) + + for index, img_id in enumerate(image_ids, start=1): + BookReferenceImage.objects.filter(id=img_id).update(order=index) + + return Response({"status": "success"}) + class AdminBookReferenceDocumentViewSet(ModelViewSet): serializer_class = AdminBookReferenceDocumentSerializer