A Django centric event driven rules engine for extensible and configurable responses to changes to django models and triggers.
Project description
A Django centric event driven rules engine for extensible and configurable responses to changes to django models and triggers.
Documentation
The full documentation is at https://django-dynamic-business-rules.readthedocs.io.
Use Cases
Configure Rules for sending messages to users and edit them without deploying new code
Block spam users if they perform too many suspiscious activities during a certain time frame, allow non-programmer users to edit that time frame
Trigger a required password reset if a configurable set of suspiscious behaviors are encountered
Key Ideas
The goal of this project is to allow non-technical users to be able to configure behaviors of the system, similar to a commercial tool like IFFT or Zapier. Non-developer end users of this tool are not required to be programmers but they will need to be at least somewhat technical in their understanding of the system so for the remainder of the document will will refer to them as “analysts”.
Quickstart
Install Django Dynamic Business Rules:
pip install django-dynamic-business-rules
Add it to your INSTALLED_APPS:
INSTALLED_APPS = (
...
'dynamic_business_rules.apps.DynamicBusinessRulesConfig',
...
)
Add Django Dynamic Business Rules’s URL patterns:
from dynamic_business_rules import urls as dynamic_business_rules_urls
urlpatterns = [
...
url(r'^admin/dynamic-rules/', include(dynamic_business_rules_urls)),
...
]
Create a Variable class
In one of your Django apps create a variable class in a file named dynamic_rule_variables.py (this name must be used so we can introspect apps looking for implementations of variable classes)
The Variable object translates a Django signal into a set of values that non-technical users can use when creating conditional business rules. For an example Variable object see example/dynamic_rule_variables.py you’ll notice that the variable object doesn’t inherit from any object, it’s constructor receives a django signal as kwargs and then its properties evaluate the properties of that signal (in the case of the example the post_save signal’s instance is a key value).
Create an Action class
In one of your Django apps create an action class in a file named dynamic_rule_actions.py (this name must be used so we can introspect apps looking for implementations of action classes)
The action object provides methods that rule sets can “fire” if all their conditions evaluate to true.
Screenshots of Admin
Creating a New Rule
Adding Conditions To Evaluate
Features
Allows users to implement and extend their own Variable and Action classes in a flexible way that allows you to build a business rules engine that fits the needs of your project.
Running Tests
Does the code actually work?
source <YOURVIRTUALENV>/bin/activate (myenv) $ pip install tox (myenv) $ tox
Credits
Tools used in rendering this package:
History
0.1.0 (2019-02-08)
First release on PyPI.
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
Hashes for django-dynamic-business-rules-0.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 494e9ed1cb6a7ad775fa93133953f3eec4e847bf4d1b242437a27c2412a78085 |
|
MD5 | eaf058233d03f041937ce15555c7db8b |
|
BLAKE2b-256 | 9e17a3c4213fa62872b6170089aeb5f9c41c7cfada232fae8be13009560562b3 |
Hashes for django_dynamic_business_rules-0.1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef9061e5fd950af1b244fa45fc8287e890ab4125e4fd2732da5e7657ae4d6359 |
|
MD5 | 5e6cce88107f031f3f03bf6a3fe3c08d |
|
BLAKE2b-256 | 8ec6f240f119a4de9413896d7b8bb26886a397bb118b9f2bc653c8a21544c092 |