Socket
Socket
Sign inDemoInstall

django-data-history

Package Overview
Dependencies
6
Maintainers
1
Alerts
File Explorer

Install Socket

Detect and block malicious and high-risk dependencies

Install

    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.


Maintainers
1

Readme

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.

Keywords

FAQs


Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc