|
|
@ -1503,6 +1503,7 @@ class AdminBookReferenceListSerializer(serializers.ModelSerializer): |
|
|
volume = serializers.SerializerMethodField() |
|
|
volume = serializers.SerializerMethodField() |
|
|
publisher = serializers.SerializerMethodField() |
|
|
publisher = serializers.SerializerMethodField() |
|
|
year_of_publication = serializers.SerializerMethodField() |
|
|
year_of_publication = serializers.SerializerMethodField() |
|
|
|
|
|
hadis_count = serializers.SerializerMethodField() |
|
|
thumbnail = serializers.SerializerMethodField() |
|
|
thumbnail = serializers.SerializerMethodField() |
|
|
image = serializers.SerializerMethodField() |
|
|
image = serializers.SerializerMethodField() |
|
|
|
|
|
|
|
|
@ -1521,11 +1522,19 @@ class AdminBookReferenceListSerializer(serializers.ModelSerializer): |
|
|
"publisher", |
|
|
"publisher", |
|
|
"year_of_publication", |
|
|
"year_of_publication", |
|
|
"rate", |
|
|
"rate", |
|
|
|
|
|
"hadis_count", |
|
|
"thumbnail", |
|
|
"thumbnail", |
|
|
"image", |
|
|
"image", |
|
|
"created_at", |
|
|
"created_at", |
|
|
] |
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
def get_hadis_count(self, obj): |
|
|
|
|
|
if hasattr(obj, "annotated_hadis_count"): |
|
|
|
|
|
return obj.annotated_hadis_count |
|
|
|
|
|
if not obj or not obj.pk: |
|
|
|
|
|
return 0 |
|
|
|
|
|
return Hadis.objects.filter(references__book_reference=obj).distinct().count() |
|
|
|
|
|
|
|
|
def get_thumbnail(self, obj): |
|
|
def get_thumbnail(self, obj): |
|
|
first_img = obj.images.filter(book_volume__isnull=True).order_by("order", "id").first() |
|
|
first_img = obj.images.filter(book_volume__isnull=True).order_by("order", "id").first() |
|
|
if first_img and first_img.image: |
|
|
if first_img and first_img.image: |
|
|
@ -1593,6 +1602,8 @@ class AdminBookReferenceDetailSerializer(serializers.ModelSerializer): |
|
|
city_of_publication = serializers.SerializerMethodField() |
|
|
city_of_publication = serializers.SerializerMethodField() |
|
|
country_of_publication = serializers.SerializerMethodField() |
|
|
country_of_publication = serializers.SerializerMethodField() |
|
|
edition_number = serializers.SerializerMethodField() |
|
|
edition_number = serializers.SerializerMethodField() |
|
|
|
|
|
hadis_count = serializers.SerializerMethodField() |
|
|
|
|
|
child_arguments = serializers.SerializerMethodField() |
|
|
|
|
|
|
|
|
thumbnail = serializers.SerializerMethodField() |
|
|
thumbnail = serializers.SerializerMethodField() |
|
|
image = serializers.SerializerMethodField() |
|
|
image = serializers.SerializerMethodField() |
|
|
@ -1653,6 +1664,41 @@ class AdminBookReferenceDetailSerializer(serializers.ModelSerializer): |
|
|
ed = obj.editions.first() |
|
|
ed = obj.editions.first() |
|
|
return ed.edition_number if ed else "" |
|
|
return ed.edition_number if ed else "" |
|
|
|
|
|
|
|
|
|
|
|
def get_hadis_count(self, obj): |
|
|
|
|
|
if hasattr(obj, "annotated_hadis_count"): |
|
|
|
|
|
return obj.annotated_hadis_count |
|
|
|
|
|
if not obj or not obj.pk: |
|
|
|
|
|
return 0 |
|
|
|
|
|
return Hadis.objects.filter(references__book_reference=obj).distinct().count() |
|
|
|
|
|
|
|
|
|
|
|
def get_child_arguments(self, obj): |
|
|
|
|
|
if not obj or not obj.pk: |
|
|
|
|
|
return [] |
|
|
|
|
|
hadises = ( |
|
|
|
|
|
Hadis.objects.filter(references__book_reference=obj) |
|
|
|
|
|
.select_related("hadis_status", "category") |
|
|
|
|
|
.distinct() |
|
|
|
|
|
.order_by("number", "id") |
|
|
|
|
|
) |
|
|
|
|
|
return [ |
|
|
|
|
|
{ |
|
|
|
|
|
"id": h.id, |
|
|
|
|
|
"number": h.number, |
|
|
|
|
|
"title": h.title, |
|
|
|
|
|
"title_narrator": h.title_narrator, |
|
|
|
|
|
"slug": h.slug, |
|
|
|
|
|
"status": h.status, |
|
|
|
|
|
"source_type": h.category.source_type if h.category else "hadith", |
|
|
|
|
|
"status_detail": { |
|
|
|
|
|
"id": h.hadis_status.id, |
|
|
|
|
|
"title": h.hadis_status.title, |
|
|
|
|
|
"color": h.hadis_status.color, |
|
|
|
|
|
"main_color_code": getattr(h.hadis_status, "main_color_code", None), |
|
|
|
|
|
} if h.hadis_status else None, |
|
|
|
|
|
} |
|
|
|
|
|
for h in hadises |
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
class Meta: |
|
|
class Meta: |
|
|
model = BookReference |
|
|
model = BookReference |
|
|
fields = [ |
|
|
fields = [ |
|
|
@ -1683,6 +1729,8 @@ class AdminBookReferenceDetailSerializer(serializers.ModelSerializer): |
|
|
"rate", |
|
|
"rate", |
|
|
"author", |
|
|
"author", |
|
|
"author_detail", |
|
|
"author_detail", |
|
|
|
|
|
"hadis_count", |
|
|
|
|
|
"child_arguments", |
|
|
"thumbnail", |
|
|
"thumbnail", |
|
|
"image", |
|
|
"image", |
|
|
"remove_thumbnail", |
|
|
"remove_thumbnail", |
|
|
@ -1691,7 +1739,7 @@ class AdminBookReferenceDetailSerializer(serializers.ModelSerializer): |
|
|
"updated_at", |
|
|
"updated_at", |
|
|
"share_link", |
|
|
"share_link", |
|
|
] |
|
|
] |
|
|
read_only_fields = ["id", "slug", "created_at", "updated_at", "share_link"] |
|
|
|
|
|
|
|
|
read_only_fields = ["id", "slug", "hadis_count", "child_arguments", "created_at", "updated_at", "share_link"] |
|
|
|
|
|
|
|
|
def to_internal_value(self, data): |
|
|
def to_internal_value(self, data): |
|
|
import json |
|
|
import json |
|
|
|