|
|
|
@ -631,3 +631,66 @@ class AdminBookReferenceDetailSerializer(serializers.ModelSerializer): |
|
|
|
if authors is not None: |
|
|
|
book.authors.set(authors) |
|
|
|
return book |
|
|
|
|
|
|
|
|
|
|
|
# Category Quran Verse Admin Serializers |
|
|
|
from ..models.category import CategoryQuranVerse, QuranSecondaryTranslation |
|
|
|
|
|
|
|
class AdminQuranSecondaryTranslationSerializer(serializers.ModelSerializer): |
|
|
|
id = serializers.IntegerField(required=False) |
|
|
|
translation_text = serializers.JSONField(default=list) |
|
|
|
translator = serializers.JSONField(default=list) |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = QuranSecondaryTranslation |
|
|
|
fields = ["id", "translation_text", "translator"] |
|
|
|
|
|
|
|
class AdminCategoryQuranVerseSerializer(serializers.ModelSerializer): |
|
|
|
surah_name = serializers.JSONField(default=list) |
|
|
|
translation = serializers.JSONField(default=list) |
|
|
|
translator = serializers.JSONField(default=list) |
|
|
|
secondary_translations = AdminQuranSecondaryTranslationSerializer(many=True, required=False) |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = CategoryQuranVerse |
|
|
|
fields = [ |
|
|
|
"id", |
|
|
|
"category", |
|
|
|
"surah_name", |
|
|
|
"ayah_number", |
|
|
|
"arabic_text", |
|
|
|
"translation", |
|
|
|
"translator", |
|
|
|
"secondary_translations", |
|
|
|
] |
|
|
|
|
|
|
|
def create(self, validated_data): |
|
|
|
secondary_data = validated_data.pop("secondary_translations", []) |
|
|
|
verse = CategoryQuranVerse.objects.create(**validated_data) |
|
|
|
for sec in secondary_data: |
|
|
|
QuranSecondaryTranslation.objects.create(quran_verse=verse, **sec) |
|
|
|
return verse |
|
|
|
|
|
|
|
def update(self, instance, validated_data): |
|
|
|
secondary_data = validated_data.pop("secondary_translations", None) |
|
|
|
instance.surah_name = validated_data.get("surah_name", instance.surah_name) |
|
|
|
instance.ayah_number = validated_data.get("ayah_number", instance.ayah_number) |
|
|
|
instance.arabic_text = validated_data.get("arabic_text", instance.arabic_text) |
|
|
|
instance.translation = validated_data.get("translation", instance.translation) |
|
|
|
instance.translator = validated_data.get("translator", instance.translator) |
|
|
|
instance.category = validated_data.get("category", instance.category) |
|
|
|
instance.save() |
|
|
|
|
|
|
|
if secondary_data is not None: |
|
|
|
keep_ids = [item.get("id") for item in secondary_data if item.get("id")] |
|
|
|
instance.secondary_translations.exclude(id__in=keep_ids).delete() |
|
|
|
for sec in secondary_data: |
|
|
|
sec_id = sec.get("id") |
|
|
|
if sec_id: |
|
|
|
QuranSecondaryTranslation.objects.filter(id=sec_id, quran_verse=instance).update( |
|
|
|
translation_text=sec.get("translation_text", []), |
|
|
|
translator=sec.get("translator", []) |
|
|
|
) |
|
|
|
else: |
|
|
|
QuranSecondaryTranslation.objects.create(quran_verse=instance, **sec) |
|
|
|
return instance |