blob: 6c2503315a8fb222ccd984fcf52d250e4af8e27f [file] [log] [blame]
from django.db import models
from django.utils import timezone
from xos.config import Config
from xos.exceptions import *
from operator import attrgetter
import json
class JournalEntry(models.Model):
objClassName = models.CharField(max_length=64)
objId = models.CharField(max_length=64, null=True, blank=True) # null=True, for objects journaled before save
objUnicode = models.CharField(max_length=1024)
operation = models.CharField(max_length=64)
msg = models.TextField(blank=True, null=True)
timestamp = models.DateTimeField(default=timezone.now)
def __unicode__(self): return u'%s' % (self.name)
def can_update(self, user):
return True
def journal_object(o, operation, msg=None, timestamp=None):
# do not journal unless it has been explicitly enabled
if not getattr(Config(), "debug_enable_journal", None):
return
# ignore objects that generate too much noise
if o.__class__.__name__ in ["Diag"]:
return
if not timestamp:
timestamp = timezone.now()
j = JournalEntry(objClassName = o.__class__.__name__,
objId = o.id,
objUnicode = str(o),
operation = operation,
msg= msg)
j.save()