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.

Instance's history view image

django-date-history-view-preview

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.

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.1.9.tar.gz (13.9 kB view hashes)

Uploaded Source

Built Distribution

django_data_history-0.1.9-py3-none-any.whl (16.1 kB view hashes)

Uploaded Python 3

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