Skip to content

gizmag/django-simple-audit

 
 

Repository files navigation

django simple audit

This applications was created to audit model's changes and maintain a log of them

https://travis-ci.org/gizmag/django-simple-audit.svg?branch=master

Installation

You can install django-simple-audit in 2 ways: using pip or by setup.py install

$ pip install django-simple-audit

Then modify your settings.py, adding the package simple_audit in INSTALLED_APPS and in MIDDLEWARE_CLASSES add simple_audit.middleware.TrackingRequestOnThreadLocalMiddleware:

INSTALLED_APPS = [
    '...',
    'simple_audit',
]

MIDDLEWARE_CLASSES = [
     '...',
     'simple_audit.middleware.TrackingRequestOnThreadLocalMiddleware',
]

Usage

Tracking changes on a model

to audit a model you need import simple_audit and then register the model to be audited.

from django.db import models
import simple_audit


class Message(models.Model):

    title = models.CharField(max_length=50, blank=False)
    text = models.TextField(blank=False)

    def __unicode__(self):
        return self.text


class Owner(models.Model):

    name = models.CharField(max_length=50, blank=False)

    def __unicode__(self):
        return self.name


class VirtualMachine(models.Model):

    name = models.CharField(max_length=50, blank=False)
    cpus = models.IntegerField()
    owner = models.ForeignKey(Owner)
    so = models.CharField(max_length=100, blank=False)
    started = models.BooleanField()

    def __unicode__(self):
        return self.name


simple_audit.register(Message, Owner, VirtualMachine)

Advanced Usage (without httprequest or our middleware)

You can use django-simple-audit without an http request (for example in management command). In this situation there is no http request on thread context. To ensure gathering all modification on a single AuditRequest, you can specify it:

AuditRequest.new_request(path, user, ip)
try:
    # my code... in same thread
finally:
    AuditRequest.cleanup_request()

Tracking m2m fields changes

Tracking m2m fields changes is still experimental, but you can enable it with the following variable:

DJANGO_SIMPLE_AUDIT_M2M_FIELDS = True

You need to have at least one cache backend set in your django settings, otherwise the previous settings will be set to False.

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique',
        'TIMEOUT': 300,
    }
}

Dependencies

  • Django >= 1.8
  • django.contrib.contenttypes installed in INSTALLED_APPS

TODO

  • Improve tests

CHANGELOG

  • 0.2.2
    • Add support for Django 1.9.
  • 0.2.1
    • Drop South, require Django 1.8 or newer.
  • 0.2.0
    • Use South for migrations
  • 0.1.12
    • Created some simple tests
    • Enable many to many fiedls tracking (see Usage)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 93.1%
  • HTML 4.6%
  • Makefile 1.6%
  • Shell 0.7%