From e3da089b2cd1a3be4dbc36835aa59f9b25f2b2bc Mon Sep 17 00:00:00 2001 From: mohsentaba Date: Sun, 20 Sep 2026 15:26:41 +0330 Subject: [PATCH] fix(hadis): resolve CORS preflight headers and query param normalization - Allow 'cache-control' and 'pragma' headers in CORS_ALLOW_HEADERS to prevent CORS preflight errors on transmitter and hadith requests - Support both 'hadis' and 'hadis_id' query parameters in AdminHadisCorrectionViewSet - Support both 'category' and 'category_id' query parameters in AdminHadisInterpretationViewSet - Support both 'hadis'/'hadis_id' and 'reference'/'reference_id' in AdminHadisReferenceImageViewSet upload handler --- apps/hadis/views_admin.py | 8 ++++---- config/settings/base.py | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/hadis/views_admin.py b/apps/hadis/views_admin.py index 872f426..1d40073 100644 --- a/apps/hadis/views_admin.py +++ b/apps/hadis/views_admin.py @@ -414,7 +414,7 @@ class AdminHadisCorrectionViewSet(ModelViewSet): queryset = HadisCorrection.objects.all().select_related("hadis").prefetch_related("references", "references__images").annotate( annotated_bookmark_count=Coalesce(Subquery(bookmarks_subquery, output_field=IntegerField()), 0) ) - hadis_id = self.request.query_params.get("hadis_id") + hadis_id = self.request.query_params.get("hadis_id") or self.request.query_params.get("hadis") if hadis_id: queryset = queryset.filter(hadis_id=hadis_id) search = self.request.query_params.get("search") @@ -475,7 +475,7 @@ class AdminHadisInterpretationViewSet(ModelViewSet): def get_queryset(self): queryset = HadisInterpretation.objects.all().select_related("category").prefetch_related("references", "references__images") - category_id = self.request.query_params.get("category_id") + category_id = self.request.query_params.get("category_id") or self.request.query_params.get("category") if category_id: queryset = queryset.filter(category_id=category_id) search = self.request.query_params.get("search") @@ -647,8 +647,8 @@ class AdminHadisReferenceImageViewSet(ModelViewSet): return queryset.order_by("priority", "id") def create(self, request, *args, **kwargs): - hadis_id = request.data.get("hadis_id") - reference_id = request.data.get("reference_id") + hadis_id = request.data.get("hadis_id") or request.data.get("hadis") + reference_id = request.data.get("reference_id") or request.data.get("reference") thumbnail = request.FILES.get("thumbnail") or request.FILES.get("image") priority = request.data.get("priority", 0) diff --git a/config/settings/base.py b/config/settings/base.py index 9ea72d1..3352589 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -194,6 +194,12 @@ DATABASES = { CORS_ALLOW_ALL_ORIGINS = True +from corsheaders.defaults import default_headers + +CORS_ALLOW_HEADERS = list(default_headers) + [ + 'cache-control', + 'pragma', +] THUMBNAIL_ALIASES = { '': {