Django app which handles ORM objects' versions.
Project description
ognajDv0.2.0
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.0 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 testedjsondiff~=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 appsmv </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.
- polls showcase app code from sample-django
- index incrementer at model save from
tinfoilboy
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-ognajd-0.2.0.tar.gz
.
File metadata
- Download URL: django-ognajd-0.2.0.tar.gz
- Upload date:
- Size: 20.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ad9f79cc755f688db6f8b72bed3eeb5692fcadee70e9c272796e30276ad748b |
|
MD5 | b7c9042a6c256c2f24a954f671a9c65a |
|
BLAKE2b-256 | 2d05c5afd1a92498665f25df40755983b0fe0d548f85c0892b7f81e97afd727b |
Provenance
File details
Details for the file django_ognajd-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: django_ognajd-0.2.0-py3-none-any.whl
- Upload date:
- Size: 28.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c5daea9adbff8b6e10649279d8569e12f1035d152498a6e854ce936e2da198d |
|
MD5 | 2549cb865841437ede9b572887cce4ec |
|
BLAKE2b-256 | d3c548f80368e10a5b1326f39e876cff945029e7aa5604192bdfb46f137f0a76 |