from django.core import serializers
from django.db import models
from django.db.models.signals import post_save, pre_delete
from main.middleware import get_current_user
class Loglar(models.Model):
user = models.ForeignKey(User, verbose_name="Kullanıcı", on_delete=models.CASCADE, blank=True, null=True)
model = models.CharField(max_length=30, default="", blank=True, null=True)
modelid = models.CharField(max_length=250, default="", blank=True, null=True)
status = models.CharField(max_length=30, default="", blank=True, null=True)
note = models.TextField(default="", blank=True, null=True)
create_date = models.DateTimeField("Kayıt Zamanı", auto_now_add=True)
class Meta:
verbose_name = "İşlem" verbose_name_plural = "İşlem Kayıtları"def onPostSave(sender, **kwargs):
try:
if not kwargs['instance']._meta.object_name in ['LogEntry', 'Loglar']: ## Log işlemlerinde sadece bizim tablolar var ise
model_instance = sender.objects.get(id=kwargs['instance'].id)
raw_data = serializers.serialize('python', [model_instance])
islem_turu = 'Yeni Kayıt' if kwargs['created'] else 'Kayıt Güncelleme' kullanici = User.objects.get(username=get_current_user())
model = modelid = note = "" for d in raw_data:
model = d['model']
modelid = d['pk']
note = dict(d['fields'])
log_kayit = Loglar(user=kullanici, status=islem_turu, model=model, modelid=modelid, note=note)
log_kayit.save()
except:
passpost_save.connect(onPostSave)
Django
hakkında diğer konular