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
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
|