Skip to main content

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.

Metadata

Release files for django-delta-logger 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-delta-logger 0.1.1
File Size Uploaded
django_delta_logger-0.1.1.tar.gz 5.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-delta-logger 0.1.1
File Interpreter ABI Platform
django_delta_logger-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 13.1 kB

Release files / django_delta_logger-0.1.1.tar.gz

Download URL django_delta_logger-0.1.1.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
45cfedc680a9fecdbf2c71293c25635ddc27ca461bbcb08c174959bdb78cf89a
BLAKE2b-256 checksum
How to use checksums
a4f1d650e8de597f5fe0f5034fb7ae89951e2c38c850c34a04a64112dadc2799
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.33.0 CPython/3.5.2

Release files / django_delta_logger-0.1.1-py3-none-any.whl

Download URL django_delta_logger-0.1.1-py3-none-any.whl
Size 8.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ce14c750ce50cd141b0dc22403835e7f3f7b5f6d51ab91fc066586df203b33cb
BLAKE2b-256 checksum
How to use checksums
55cd616eca825d492de8b8a7a202c390241b515aea626da0ec941350e914a619
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.33.0 CPython/3.5.2

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page