Exemple #1
0
 def on_new_model(cls, sender, **kwargs):
     if str(sender._meta) in cls.EXCLUDE:
         return  # Ignore model
     model_id = get_model_id(sender)
     ttl = cls.get_model_ttl(model_id)
     if not ttl:
         return  # Disabled
     cls._model_ttls[model_id] = ttl
     django_signals.post_save.connect(cls.on_update_model, sender=sender)
     django_signals.post_delete.connect(cls.on_delete_model, sender=sender)
     django_signals.post_init.connect(cls.on_init_model, sender=sender)
Exemple #2
0
 def log(cls, sender, instance, op, changes):
     """
     Log into audit trail
     """
     user = get_user()  # Retrieve user from thread local storage
     if not user or not user.is_authenticated():
         return  # No user initialized, no audit trail
     if not changes:
         logger.debug("Nothing to log for %s", instance)
         return
     now = datetime.datetime.now()
     model_id = get_model_id(sender)
     cls._get_collection().insert({
         "timestamp": now,
         "user": user.username,
         "model_id": model_id,
         "object": str(instance.pk),
         "op": op,
         "changes": changes,
         "expires": now + cls._model_ttls[model_id]
     }, w=0)