from rest_framework import serializers from ..models import ContentRelease, HadisDatabaseVersion from utils 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