A mico-framework for collecting lightweight, non-crypto "signatures" for virtually anything.
Project description
Django Signoffs
A mico-framework for collecting lightweight, non-crypto "signatures" for virtually anything.
Signoff
- a permitted user agrees to something at a time.Approval
- a set ofSignoffs
that trigger a state change when theSigningOrder
is complete.Approval Process
- a sequence ofApprovals
that drive a Finite State Machine.
Quick Start
-
Install the
django-signoffs
package from PyPI$ pip install django-signoffs
-
Add
signoffs
toINSTALLED_APPS
:INSTALLED_APPS = [ ..., "signoffs", ..., ]
Features
django-signoffs
has 3 tiers. Import and use only the features you need...
signoffs.signoffs
A Signoff
records that a user agreed to some statement at a time.
signoffs.signoffs
provides a framework for defining use-cases
that fall within this broad requirement.
Core features:
AbstractSignet
andAbstractRevokedSignet
Models (persistence layer)- Base
Signoff
Types, with injectable business and presentation logic...SignoffLogic
(permissions and buisness logic)SignoffFormsManager
andSignoffRenderer
(presentation layer)SignoffUrlsManager
(custom end-points)
- Signoff "forward" relation:
SignoffOneToOneField
- Signoff "reverse" relation Manager:
SignoffSet
(many-to-one) - Declarative signing order automation:
SigningOrder
- Template tag:
{% render_signoff my_signoff %}
signoffs.approvals
An Approval
records whether some condition was met at some point in time.
Essentially, it is a 2-state machine, designed to change states
when one or more Signoffs
are completed, in some defined SigningOrder
.
Core features:
AbstractApprovalSignet
andAbstractApprovalStamp
Models (persistence layer)- Base
Approval
Types, with injectable business and presentation logic...ApprovalLogic
(business logic)ApprovalStatus
andApprovalRenderer
(presentation layer)ApprovalUrlsManager
(custom end-points)
- Approval "forward" relation:
ApprovalOneToOneField
- Approval "reverse" relation Manager:
ApprovalSet
(experimental) - Template tag:
{% render_approval my_approval %}
signoffs.process
An ApprovalsProcess
defines a sequence of Approvals
and the state changes and/or
side effects triggered by approving or revoking each of them.
Core Features:
ApprovalsProcess
(a basic linear sequence ofApprovals
)FsmApprovalsProcess
(state-changes and sequencing defined bydjango-fsm
)
Opt-in
Contrib Models
signoffs.contrib.signets
Signoffs core defines only abstract models, no migrations.
signoffs.contrib.signets
provide concrete models that cover the basic use-cases. To opt-in, you must:
INSTALLED_APPS = [
...,
"signoffs.contrib.signets",
...,
]
$ python manage.py migrate signoffs_signets
Core Features:
- Concrete Models:
Signet
, andRevokedSignet
provide persistence layer for - Concrete Signoffs:
SimpleSignoff
,RevokableSignoff
, andIrrevokableSignoff
signoffs.contrib.approvals
Approvals core defines only abstract models, no migrations.
signoffs.contrib.approvals
provide concrete models with basic relations. To opt-in you must:
INSTALLED_APPS = [
...,
"signoffs.contrib.approvals",
...,
]
$ python manage.py migrate signoffs_approvals
Core Features:
- Concrete Models:
ApprovalSignet
, andRevokedApprovalSignet
define a FK relation to... Stamp
which provides persistence layer for...SimpleApproval
andIrrevokableApproval
, which play nicely with...ApprovalSignoff
, which uses the Concrete Models for persistence.
FsmApprovalsProcess
Signoffs is integrated with django-fsm, allowing approval processes to drive a finite state machine. To opt-in:
$ pip install django-signoffs[fsm]
Get Me Some of That
Check Out the Demo App
pip install -e git+https://github.com/powderflask/django-signoffs.git#egg=django-signoffs
python manage.py migrate demo
python manage.py loaddata demo/signoff_fixture.json
python manage.py runserver
Acknowledgments
Special thanks to BC Hydro, Chartwell, and all Contributors
Technology Colophon
Without django and the django dev team, the universe would have fewer rainbows and ponies.
Signoffs approval process can be integrated on the deceptively clever django_fsm
Friendly Finite State Machine.
Signoffs uses a global registry as store for singleton code objects - thanks persisting_theory
!
This package was originally created with cookiecutter
and the cookiecutter-pypackage
project template.
For Developers
$ pip install -r reqirements_dev.txt
Tests
$ pytest
or
$ tox
Code Style / Linting
$ isort
$ black
$ flake8
Versioning
- Semantic Versioning
$ bumpver show
Docs
Build / Deploy Automation
- invoke
$ invoke -l
- GitHub Actions (see .github/workflows)
- GitHub Webhooks (see settings/hooks)
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_signoffs-0.3.0.tar.gz
.
File metadata
- Download URL: django_signoffs-0.3.0.tar.gz
- Upload date:
- Size: 84.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b05d32f434b6f10afb316f5a9893b5e17bfb3a21b5e6faeadae28765b58e6773 |
|
MD5 | 694cc5762398da3fb0ea17f579507183 |
|
BLAKE2b-256 | 77eacd44e2c35295ec2426387bc147f9dbb5573609a9e81978e8163cba3626f3 |
Provenance
File details
Details for the file django_signoffs-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: django_signoffs-0.3.0-py3-none-any.whl
- Upload date:
- Size: 94.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 811fc15462993a2c3152c24752b9bdefacd0f477ce9e8e498ecefb3e56e7891a |
|
MD5 | aac46250be0a6f55633f9977890918ae |
|
BLAKE2b-256 | 7b4a3851156bcd80a2df864dbbf09e5cb54e154be559b2ebfd4025ea0e571817 |