Skip to main content

A Django application that allows you to store detailed data in the change log and display the detailed information in object's history view.

Project description

django-data-history

A Django application that allows you to store detailed data in the change log and display the detailed information in object's history view.

Install

pip install django-data-history

Usage

## add app: django_middleware_global_request
## add app: django_middleware_request_id
## add app: django_static_jquery_ui
## add app: django_data_history
## put django_data_history before django.contrib.admin

INSTALLED_APPS = [
    ...
    "django_middleware_global_request",
    "django_middleware_request_id",
    "django_static_jquery_ui",
    'django_data_history',
    ...
    'django.contrib.admin',
    ...
]

## add middleware: django_middleware_global_request.middleware.GlobalRequestMiddleware
## add middleware: django_middleware_request_id.middlewares.DjangoMiddlewareRequestId
MIDDLEWARE = [
    ...
    "django_middleware_global_request.middleware.GlobalRequestMiddleware",
    "django_middleware_request_id.middlewares.DjangoMiddlewareRequestId",
    ...
]

# default to False, so you must set it to True to enable all models injection.
SAVE_DATA_HISTORIES_FOR_ALL = True 

# if SAVE_DATA_HISTORIES_FOR_ALL==False, then only these models will be injected.
# default to empty.
SAVE_DATA_HISTORIES_FOR = [
    "your_app1.model_name1"
]

# if SAVE_DATA_HISTORIES_FOR_ALL==True, these models will NOT be injected.
# default to:
# [
#    "sessions.session",
#    "contenttypes.contenttype",
#    "admin.logentry",
#    "auth.permission",
# ]
DO_NOT_SAVE_DATA_HISTORIES_FOR = [
    "your_app2.model_name2",
]

Deep usage

How to ignore some fields' values?

Some fields' value are inessential so that we want to ignore their changes. Simply add django_data_history_excludes in the model.

class TestModel(models.Model):

    django_data_history_excludes = ["mod_time"]

    mod_time = models.DateTimeField(auto_now=True)

If only mod_time changed, we are not treat the event as a change event, so that we will not make a new record.

How to save data history in separate table?

Simply add DATA_HISTORY_STORAGE_CLASS property to the model class. A new DATA_HISTORY_STORAGE_CLASS must a subclass of django_data_history.models.DataHistoryBase. A DATA_HISTORY_STORAGE_CLASS can be a real class or a absolute-dot-path to the real class.

Releases

v0.1.0

  • First release.

v0.1.1

  • Fix ugettext_lazy problem.

v0.1.2

  • Add save_data_histories_for_fk_instance to fix inline edit history missing problem.

v0.1.3

  • Fix problems that field name has "+" in fields_map.

v0.1.5

  • Using django_middleware_request_id instead of implement request_id inside the app.

v0.1.6

  • Fix requirements in setup.py.

v0.1.7

  • Fix DataHistoryModelAdmin.get_data_histories function problem.

v0.1.8

  • Fix problems in working together with django-import-export.
  • Add django_data_history_excludes support.

v0.1.9

  • Fix OneToOneField problem.

v0.2.0

  • 使用Apache License, Version 2.0开源协议。

Project details


Download files

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

Source Distribution

django-data-history-0.2.0.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

django_data_history-0.2.0-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

Details for the file django-data-history-0.2.0.tar.gz.

File metadata

  • Download URL: django-data-history-0.2.0.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for django-data-history-0.2.0.tar.gz
Algorithm Hash digest
SHA256 c923967b89059a32ca35255247ecdaf83b09437302b13ee614d55388b0b56d45
MD5 1f25f601219195dfbc8b7b0cefe3e427
BLAKE2b-256 273122505b6eecd87182bbc948e8e7a036eff9165d6bba314241b9ac9989fdbb

See more details on using hashes here.

File details

Details for the file django_data_history-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_data_history-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 221a3e3f944203aa5053e8c6196fd0ce81f5334e83e0a5325e9c350ce56fbdcc
MD5 438ac7c0e43373f9856c38bc84f77a6c
BLAKE2b-256 9fcbf44a5efa04817eb6da9de28d7308e7bc479a9e2f31807138c37bcd46697f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page