Initial commit - clean project structure

This commit is contained in:
2026-08-18 16:48:15 +03:30
commit 331148037e
147 changed files with 5543 additions and 0 deletions

23
statuslog/models.py Normal file
View File

@@ -0,0 +1,23 @@
from django.db import models
class StatusChangeLog(models.Model):
"""
لاگ عمومیِ تغییر Status هر مدلی در پروژه (Order، Subscription، UserOffer و...)
از طریق سیگنال statuslog.signals.status_changed ساخته می‌شه، نه مستقیم.
label به‌جای FK واقعی، چون این اپ نباید به هیچ اپ دیگه‌ای وابسته بشه
(دقیقاً همون الگوی ارجاع سبک با id که در کل پروژه استفاده شده).
"""
label = models.CharField(max_length=50, db_index=True) # مثل 'payment.Order'
object_id = models.IntegerField(db_index=True)
old_status = models.CharField(max_length=30, blank=True)
new_status = models.CharField(max_length=30)
event = models.CharField(max_length=50) # چه رویدادی باعث تغییر شده
user_id = models.IntegerField(null=True, blank=True, db_index=True)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['-created_at']
def __str__(self):
return f"{self.label}#{self.object_id}: {self.old_status}→{self.new_status} ({self.event})"