Skip to main content

Django app which handles ORM objects' versions.

Project description

ognajDv0.2.3

Django app which handles ORM objects' versions.

Description

ognajD is Django-compactible application which handles versionning for ORM models. Main feature is for ognjaD to be a "plug-in" Django application, thus capable to work with "little-to-no" configuring and changes to Django project.

Features

ognajd stores objects' versions in own table, relied on contenttypes application.

ognajD @ v0.2.3 can:

  • catch object's save / update signals
  • store snapshot of object in DB with:
    • timestamp
    • serialized version
    • hash
  • object version may be serialized (currently, only JSON) as:
    • diff with previous version (by default)
    • raw dumps
  • inline with versione for admin models

Usage example

sample-project is a showcase django project, based on famous polls application. You can reference to it for usage cases, examples, testing.You must never deploy sample_project in production due to exposed SECRET_KEY.

Getting Started

Dependencies

Python packages

  • django~=3.2.7 might work on lesser versions, not tested
  • jsondiff~=1.3.0 might work on lesser versions, not tested

Django applications

  • contenttypes

Installing

Using Python Package Index

  • make sure to use latest pip:

    python3 -m pip install --upgrade pip
    
  • install django-ognajd:

    python3 -m pip install django-ognajd
    

OR download package from releases

  • download release asset (.tar.gz or .whl)

  • make sure to use latest pip:

    python3 -m pip install --upgrade pip
    
  • install django-ognajd from file:

    python3 -m pip install /path/to/downloaded/asset.tar.gz # or .whl
    

OR clone from repository

  • clone project:

    git clone \
            --depth=1 \
            --branch=master \
            git@github.com:omelched/django-ognajd.git \
            </path/to/downloads>
    
  • move /django-ognajd/ognajd solely to folder containing django apps

    mv      </path/to/downloads>/django-ognajd/ognajd \
            </path/to/django/project/apps>
    
  • remove leftovers

    rm -rf  </path/to/downloads>/django-ognajd
    

Configuring

Installing application

Add ognajd to INSTALLED_APPS in your Django project settings.py. Make sure it is installed before django.contrib.admin.

If you installed package the third way, </path/to/django/project/apps> must be added to PYTHONPATH. If you not sure add code below in your Django project manage.py before calling main():

sys.path.append('</path/to/django/project/apps>')

Registering models

To register your model as eligible for versioning add attribute-class VersioningMeta to model class definition. For typing, linters, autocompletion tyou can inherit from ognajd.models.VersioningMeta.

Then set preferred options.

e.g:

# .../your_app/models.py

from django.db import models

from ognajd.models import VersioningMeta


class Question(models.Model):
    
    class VersioningMeta(VersioningMeta):
        store_diff = False

    ... # fields' definitions

VersioningMeta options

Name Description Type Default
enabled True: if model will be versioned
False: if will not
bool True
store_diff True: model's history will be stored as diffs
False: as dumps
bool True
save_empty_changes True: if empty changes will be registered
False: if will not
bool True

Authors

@omelched (Denis Omelchenko)

Contributors

Changelist

ognajD version history and changelist available at releases page.

License

This project is licensed under the GNU APGLv3 License - see the LICENSE file for details.

Acknowledgments

Inspiration, code snippets, etc.

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_ognajd-0.2.3.tar.gz (22.2 kB view details)

Uploaded Source

Built Distribution

django_ognajd-0.2.3-py3-none-any.whl (32.8 kB view details)

Uploaded Python 3

File details

Details for the file django_ognajd-0.2.3.tar.gz.

File metadata

  • Download URL: django_ognajd-0.2.3.tar.gz
  • Upload date:
  • Size: 22.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.6

File hashes

Hashes for django_ognajd-0.2.3.tar.gz
Algorithm Hash digest
SHA256 58e35ee1c1ca16072207f75cda9bb489a5e81bae4de55285159c1dfd212f6a07
MD5 a1c15e0af7da7ec701230f4b8f0e6b47
BLAKE2b-256 0e894938c46b2820a1f44ae3b0c8476f9dab3b10b6aa809a6d818adc8cd3ca2b

See more details on using hashes here.

Provenance

File details

Details for the file django_ognajd-0.2.3-py3-none-any.whl.

File metadata

File hashes

Hashes for django_ognajd-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 efbfb42119168b78b9800b82309e5e0f3faf54b5facbc10910d4fd2b2731cd23
MD5 e1337385b96646f697f67a21d9564bef
BLAKE2b-256 d24437ddbe46cc6a6c3109f16081c5063fab7c2c8abf35d3d36c5f40e53db4da

See more details on using hashes here.

Provenance

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