59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
from django.db import models
|
|
from django.conf import settings
|
|
from crum import get_current_user
|
|
from django.contrib.auth.models import AnonymousUser
|
|
|
|
|
|
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",
|
|
null=True,
|
|
blank=True,
|
|
)
|
|
modified_by = models.ForeignKey(
|
|
settings.AUTH_USER_MODEL,
|
|
on_delete=models.CASCADE,
|
|
related_name="%(class)s_modifiedby",
|
|
null=True,
|
|
blank=True,
|
|
)
|
|
creator_info = models.CharField(max_length=100, null=True)
|
|
modifier_info = models.CharField(max_length=100, null=True)
|
|
trash = models.BooleanField(default=False)
|
|
|
|
class Meta:
|
|
abstract = True
|
|
|
|
def save(self, *args, **kwargs):
|
|
user = get_current_user() # get user object
|
|
if not isinstance(user, AnonymousUser):
|
|
self.modified_by = user
|
|
if not self.creator_info:
|
|
self.created_by = user
|
|
self.creator_info = user.first_name + ' ' + user.last_name
|
|
self.modifier_info = user.first_name + ' ' + user.last_name
|
|
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)
|
|
|
|
@classmethod
|
|
def get(cls, key, default=None):
|
|
try:
|
|
return cls.objects.get(key=key).value
|
|
except cls.DoesNotExist:
|
|
return default
|