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.
41 lines
2.2 KiB
41 lines
2.2 KiB
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()
|