|
|
|
@ -49,11 +49,12 @@ class PinnedHadisCollectionSerializer(serializers.ModelSerializer): |
|
|
|
title = LocalizedField() |
|
|
|
summary = LocalizedField() |
|
|
|
thumbnail = serializers.SerializerMethodField() |
|
|
|
hadis_ids = serializers.SerializerMethodField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = HadisCollection |
|
|
|
# فیلدهایی که برای نمایش در بخش پین شده (مثل اسلایدر یا لیست بالا) نیاز هست |
|
|
|
fields = ['id', 'title', 'slug', 'summary', 'thumbnail', 'order', 'created_at'] |
|
|
|
fields = ['id', 'title', 'slug', 'summary', 'thumbnail', 'order', 'created_at', 'hadis_ids'] |
|
|
|
|
|
|
|
def get_thumbnail(self, obj): |
|
|
|
if obj.thumbnail: |
|
|
|
@ -63,14 +64,29 @@ class PinnedHadisCollectionSerializer(serializers.ModelSerializer): |
|
|
|
return absolute_https_url(obj.thumbnail.url) |
|
|
|
return None |
|
|
|
|
|
|
|
def get_hadis_ids(self, obj): |
|
|
|
# دریافت شناسه احادیث فعال متعلق به این کالکشن به ترتیب |
|
|
|
if hasattr(obj, '_prefetched_objects_cache') and 'hadis_items' in obj._prefetched_objects_cache: |
|
|
|
items = [ |
|
|
|
item.hadis_id for item in obj.hadis_items.all() |
|
|
|
if getattr(getattr(item, 'hadis', None), 'status', True) |
|
|
|
] |
|
|
|
return items |
|
|
|
return list( |
|
|
|
obj.hadis_items.filter(hadis__status=True) |
|
|
|
.order_by('order') |
|
|
|
.values_list('hadis_id', flat=True) |
|
|
|
) |
|
|
|
|
|
|
|
class HadisCollectionListSerializer(serializers.ModelSerializer): |
|
|
|
thumbnail = serializers.SerializerMethodField() |
|
|
|
title = LocalizedField() |
|
|
|
summary = LocalizedField() |
|
|
|
hadis_ids = serializers.SerializerMethodField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = HadisCollection |
|
|
|
fields = ['id', 'title', 'summary','slug', 'thumbnail'] |
|
|
|
fields = ['id', 'title', 'summary', 'slug', 'thumbnail', 'hadis_ids'] |
|
|
|
|
|
|
|
def get_thumbnail(self, obj): |
|
|
|
if obj.thumbnail: |
|
|
|
@ -80,6 +96,20 @@ class HadisCollectionListSerializer(serializers.ModelSerializer): |
|
|
|
return absolute_https_url(obj.thumbnail.url) |
|
|
|
return None |
|
|
|
|
|
|
|
def get_hadis_ids(self, obj): |
|
|
|
# دریافت شناسه احادیث فعال متعلق به این کالکشن به ترتیب |
|
|
|
if hasattr(obj, '_prefetched_objects_cache') and 'hadis_items' in obj._prefetched_objects_cache: |
|
|
|
items = [ |
|
|
|
item.hadis_id for item in obj.hadis_items.all() |
|
|
|
if getattr(getattr(item, 'hadis', None), 'status', True) |
|
|
|
] |
|
|
|
return items |
|
|
|
return list( |
|
|
|
obj.hadis_items.filter(hadis__status=True) |
|
|
|
.order_by('order') |
|
|
|
.values_list('hadis_id', flat=True) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
class HadisSyncSerializer(serializers.ModelSerializer): |
|
|
|
"""Serializer for syncing all hadis data (grouped fields)""" |
|
|
|
|