Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Model instance change logging for django models.

Project description

Django Delta Logger

A django app that provides a model class that records changes in django models.

Installation

Get the Package

pip install django_delta_logger

Update the Django Settings

Add django_delta_logger to the INSTALLED_APPS list.

INSTALLED_APPS=[
    # ...
    'django_delta_logger',
    # ...
]

Make sure JSON_ENCODER is set in the django settings. A reasonable default is provided and is directly importable into an existing settings file.

from django_delta_logger.settings import JSON_ENCODER

Usage

Django_delta_logger's primary API is a context manager:

from django_delta_logger.delta_logger import DeltaLogger

with DeltaLogger(SomeDjangoModel, SomeOtherDjangoModel):
    foo = SomeDjangoModel(name='foo')
    foo.save()

Log Results

Access the history of a model instance from the DeltaEvent model.

from django_delta_logger.models import DeltaEvent

instance = SomeModel.objects.get(pk=1)
events = DeltaEvent.objects.get_for_instance(instance).all()

for event in events:
    print(event.event_time, event.event_type, event.event_data)
from django_delta_logger.models import DeltaEvent

events = DeltaEvent.objects.get_for_model(SomeDjangoModel).all()

for event in events:
    print(event.event_time, event.event_type, event.event_data)

The Risks of Concurrency

Tracking the dirtyness of a model instance field is performant but can lead to inaccurate log data when one model instance is edited in multiple threads/processes/servers.

When data accuracy in a concurrent environment is worth the performance cost of a fetch-before-write:

from django_delta_logger.delta_logger import DeltaLogger

with DeltaLogger(SomeDjangoModel, concurrent=True):
    foo = SomeDjangoModel(name='foo')
    foo.save()

Test Suite

python setup.py test

License

This software is published under the MIT License. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for django-delta-logger, version 0.1.1
Filename, size File type Python version Upload date Hashes
Filename, size django_delta_logger-0.1.1-py3-none-any.whl (8.1 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size django_delta_logger-0.1.1.tar.gz (5.0 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page