You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

52 lines
1.6 KiB

from rest_framework import serializers
from ..models import ContentRelease, HadisDatabaseVersion
from ..utils.urls import absolute_https_url
class HadisDatabaseVersionSerializer(serializers.ModelSerializer):
"""سریالایزر دریافت آخرین اطلاعات فایل فشرده دیتابیس SQLite جهت دانلود و سینک آفلاین"""
download_url = serializers.SerializerMethodField()
class Meta:
model = HadisDatabaseVersion
fields = [
'version',
'download_url',
'file_size',
'checksum_md5',
'hadis_count',
'categories_count',
'is_active',
'notes',
'created_at',
]
def get_download_url(self, obj):
if obj.file:
request = self.context.get('request')
if request:
return absolute_https_url(obj.file.url, request)
return obj.file.url
return None
class ContentReleaseSyncSerializer(serializers.ModelSerializer):
"""Serializer for syncing content release data for offline mode with SQLite support"""
sqlite_database = serializers.SerializerMethodField()
class Meta:
model = ContentRelease
fields = [
'id',
'version_name',
'published_at',
'description',
'is_active',
'sqlite_database',
]
def get_sqlite_database(self, obj):
latest_db = HadisDatabaseVersion.get_latest_active()
if latest_db:
return HadisDatabaseVersionSerializer(latest_db, context=self.context).data
return None