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)
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)