Django app which handles ORM objects' versions.
Project description
ognajDv0.1.1
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.1.1 can:
- catch object's save / update signals
- store snapshot of object in DB with:
- timestamp
- serialized version
- hash
- object version may be serialized as:
- diff with previous version (by default)
- raw dumps
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, never 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
.
If you installed package the third way make sure that </path/to/django/project/apps>
is 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 property-class VersioningMeta
to model class definition.
Then set preferred options.
e.g:
# .../your_app/models.py
from django.db import models
class Question(models.Model):
class 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 |
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
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
Hashes for django_ognajd-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84f582114827dbb69cf99489a6cbfc9076823a7092625ab72c93aa1a93820a64 |
|
MD5 | 7d7f0f34ec035b9a372d9c049219376c |
|
BLAKE2b-256 | c927fdb2f6155bd15a02650f54d2b37746a359fd2e37bbd4fc55a33a200c7c99 |