from django.db import models from django.utils.translation import gettext_lazy as _ import os class ContentRelease(models.Model): version_name = models.CharField(max_length=50, verbose_name=_('Version Name')) # e.g., "v1.2 - Muharram Update" published_at = models.DateTimeField(auto_now_add=True, verbose_name=_("Published Date")) description = models.TextField(blank=True, verbose_name=_("Release Description")) # Optional: is_active to easily rollback updates if something breaks is_active = models.BooleanField(default=True, verbose_name=_("Active")) class Meta: ordering = ['-published_at'] class HadisDatabaseVersion(models.Model): """مدل نگهداری نسخه فعلی فایل فشرده SQLite احادیث (Single-File Architecture)""" version = models.PositiveIntegerField(default=1, verbose_name=_("شماره نسخه دیتابیس")) file = models.FileField(upload_to='hadis_db/', verbose_name=_("فایل فشرده دیتابیس (.sqlite.gz)")) file_size = models.BigIntegerField(default=0, verbose_name=_("حجم فایل (بایت)")) checksum_md5 = models.CharField(max_length=64, blank=True, verbose_name=_("هش MD5")) hadis_count = models.PositiveIntegerField(default=0, verbose_name=_("تعداد احادیث")) categories_count = models.PositiveIntegerField(default=0, verbose_name=_("تعداد دسته‌بندی‌ها")) is_active = models.BooleanField(default=True, verbose_name=_("نسخه فعال")) notes = models.TextField(blank=True, verbose_name=_("یادداشت‌های نسخه")) updated_at = models.DateTimeField(auto_now=True, verbose_name=_("آخرین به‌روزرسانی")) created_at = models.DateTimeField(auto_now_add=True, verbose_name=_("زمان ایجاد")) class Meta: ordering = ['-version'] verbose_name = _("نسخه دیتابیس SQLite احادیث") verbose_name_plural = _("نسخه‌های دیتابیس SQLite احادیث") def __str__(self): return f"Hadis SQLite DB v{self.version} ({self.hadis_count} احادیث)" @classmethod def get_latest_active(cls): return cls.objects.filter(is_active=True).order_by('-version').first()