Files
RasadDam_Backend/apps/core/models.py

82 lines
2.8 KiB
Python
Raw Normal View History

from crum import get_current_user
from django.conf import settings
2025-08-18 10:08:33 +03:30
from django.contrib.auth.models import AnonymousUser
from django.db import models
from .manager import SoftDeleteManager
2025-04-30 15:03:40 +03:30
class BaseModel(models.Model):
create_date = models.DateTimeField(auto_now_add=True)
modify_date = models.DateTimeField(auto_now=True)
created_by = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name="%(class)s_createddby", # noqa
2025-04-30 15:03:40 +03:30
null=True,
blank=True,
)
modified_by = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name="%(class)s_modifiedby", # noqa
2025-04-30 15:03:40 +03:30
null=True,
blank=True,
)
creator_info = models.CharField(max_length=100, null=True)
modifier_info = models.CharField(max_length=100, null=True)
2025-04-30 15:03:40 +03:30
trash = models.BooleanField(default=False)
objects = SoftDeleteManager() # filter all records with trash=False
all_objects = SoftDeleteManager().all_with_deleted() # get all records
def soft_delete(self):
self.trash = True
self.save(update_fields=['trash'])
2025-04-30 15:03:40 +03:30
class Meta:
abstract = True
def save(self, *args, **kwargs):
2025-07-19 12:13:32 +03:30
user = get_current_user() # get user object
2025-08-18 10:08:33 +03:30
if not isinstance(user, AnonymousUser):
2025-10-06 14:02:12 +03:30
self.modified_by = user if user else None
2025-08-18 10:08:33 +03:30
if not self.creator_info:
2025-10-06 14:02:12 +03:30
self.created_by = user if user else None
self.creator_info = user.first_name + ' ' + user.last_name if user else None
self.modifier_info = user.first_name + ' ' + user.last_name if user else None
super(BaseModel, self).save(*args, **kwargs)
class MobileTest(BaseModel):
latitude = models.DecimalField(max_digits=22, decimal_places=16)
longitude = models.DecimalField(max_digits=22, decimal_places=16)
count = models.IntegerField(default=0)
time = models.DateTimeField(auto_now_add=True)
class SystemConfig(BaseModel):
key = models.CharField(max_length=100, null=True)
value = models.CharField(max_length=100, null=True)
quota = models.CharField(max_length=50, null=True)
@classmethod
def get(cls, key, quota_identity=None, default=None):
try:
if quota_identity:
return cls.objects.get(key=key, quota=quota_identity).value
return cls.objects.get(key=key).value
except cls.DoesNotExist:
return default
class Wage(BaseModel):
key = models.CharField(max_length=100, null=True)
value = models.CharField(max_length=100, null=True)
@classmethod
def get(cls, key, quota_identity=None, default=None):
try:
return cls.objects.get(key=key).value
except cls.DoesNotExist:
return default