{ "info": { "author": "Adam Haney", "author_email": "adam.jacob.haney@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: Django :: 2.0", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "=============================\nDjango Dynamic Business Rules\n=============================\n\n.. image:: https://badge.fury.io/py/django-dynamic-business-rules.svg\n :target: https://badge.fury.io/py/django-dynamic-business-rules\n\n.. image:: https://travis-ci.org/adamhaney/django-dynamic-business-rules.svg?branch=master\n :target: https://travis-ci.org/adamhaney/django-dynamic-business-rules\n\n.. image:: https://codecov.io/gh/adamhaney/django-dynamic-business-rules/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/adamhaney/django-dynamic-business-rules\n\nA Django centric event driven rules engine for extensible and configurable responses to changes to django models and triggers.\n\nDocumentation\n-------------\n\nThe full documentation is at https://django-dynamic-business-rules.readthedocs.io.\n\nUse Cases\n---------\n\n* Configure Rules for sending messages to users and edit them without deploying new code\n* Block spam users if they perform too many suspiscious activities during a certain time frame, allow non-programmer users to edit that time frame\n* Trigger a required password reset if a configurable set of suspiscious behaviors are encountered\n\nKey Ideas\n---------\n\nThe goal of this project is to allow non-technical users to be able to\nconfigure behaviors of the system, similar to a commercial tool like\nIFFT or Zapier. Non-developer end users of this tool are not required\nto be programmers but they will need to be at least somewhat technical\nin their understanding of the system so for the remainder of the\ndocument will will refer to them as \"analysts\".\n \n\nQuickstart\n----------\n\nInstall Django Dynamic Business Rules::\n\n pip install django-dynamic-business-rules\n\nAdd it to your `INSTALLED_APPS`:\n\n.. code-block:: python\n\n INSTALLED_APPS = (\n ...\n 'dynamic_business_rules.apps.DynamicBusinessRulesConfig',\n ...\n )\n\nAdd Django Dynamic Business Rules's URL patterns:\n\n.. code-block:: python\n\n from dynamic_business_rules import urls as dynamic_business_rules_urls\n\n\n urlpatterns = [\n ...\n url(r'^admin/dynamic-rules/', include(dynamic_business_rules_urls)),\n ...\n ]\n\nCreate a Variable class\n\nIn one of your Django apps create a variable class in a file named\n`dynamic_rule_variables.py` (this name must be used so we can\nintrospect apps looking for implementations of variable classes)\n\nThe Variable object translates a Django signal into a set of values\nthat non-technical users can use when creating conditional business\nrules. For an example Variable object see example/dynamic_rule_variables.py you'll notice\nthat the variable object doesn't inherit from any object, it's\nconstructor receives a django signal as kwargs and then its properties\nevaluate the properties of that signal (in the case of the example the\npost_save signal's instance is a key value).\n\nCreate an Action class\n\nIn one of your Django apps create an action class in a file named\n`dynamic_rule_actions.py` (this name must be used so we can\nintrospect apps looking for implementations of action classes)\n\nThe action object provides methods that rule sets can \"fire\" if all\ntheir conditions evaluate to true.\n\n\nScreenshots of Admin\n--------------------\n\nCreating a New Rule\n\n.. image:: docs/img/admin_basic_rule_setup.png\n\nAdding Conditions To Evaluate\n\n.. image:: docs/img/admin_condition_sets.png\n\n\n \nFeatures\n--------\n\n* 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.\n\nRunning Tests\n-------------\n\nDoes the code actually work?\n\n::\n\n source /bin/activate\n (myenv) $ pip install tox\n (myenv) $ tox\n\nCredits\n-------\n\nTools used in rendering this package:\n\n* Cookiecutter_\n* `cookiecutter-djangopackage`_\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`cookiecutter-djangopackage`: https://github.com/pydanny/cookiecutter-djangopackage\n\n\n\n\nHistory\n-------\n\n0.1.0 (2019-02-08)\n++++++++++++++++++\n\n* First release on PyPI.\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/adamhaney/django-dynamic-business-rules", "keywords": "django-dynamic-business-rules", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-dynamic-business-rules", "package_url": "https://pypi.org/project/django-dynamic-business-rules/", "platform": "", "project_url": "https://pypi.org/project/django-dynamic-business-rules/", "project_urls": { "Homepage": "https://github.com/adamhaney/django-dynamic-business-rules" }, "release_url": "https://pypi.org/project/django-dynamic-business-rules/0.1.2/", "requires_dist": null, "requires_python": "", "summary": "A Django centric event driven rules engine for extensible and configurable responses to changes to django models and triggers.", "version": "0.1.2" }, "last_serial": 4796269, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "5e6cce88107f031f3f03bf6a3fe3c08d", "sha256": "ef9061e5fd950af1b244fa45fc8287e890ab4125e4fd2732da5e7657ae4d6359" }, "downloads": -1, "filename": "django_dynamic_business_rules-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5e6cce88107f031f3f03bf6a3fe3c08d", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 13274, "upload_time": "2019-02-08T16:11:30", "url": "https://files.pythonhosted.org/packages/8e/c6/f240f119a4de9413896d7b8bb26886a397bb118b9f2bc653c8a21544c092/django_dynamic_business_rules-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eaf058233d03f041937ce15555c7db8b", "sha256": "494e9ed1cb6a7ad775fa93133953f3eec4e847bf4d1b242437a27c2412a78085" }, "downloads": -1, "filename": "django-dynamic-business-rules-0.1.0.tar.gz", "has_sig": false, "md5_digest": "eaf058233d03f041937ce15555c7db8b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11827, "upload_time": "2019-02-08T16:11:27", "url": "https://files.pythonhosted.org/packages/9e/17/a3c4213fa62872b6170089aeb5f9c41c7cfada232fae8be13009560562b3/django-dynamic-business-rules-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "19163d8f4f0dd8620d8ac1f9e2463900", "sha256": "b38729f0a1676d7c0e7f534939583abf2d104e8d3ddac7edc9ab28f4e24e78ca" }, "downloads": -1, "filename": "django_dynamic_business_rules-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "19163d8f4f0dd8620d8ac1f9e2463900", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 13297, "upload_time": "2019-02-08T16:15:45", "url": "https://files.pythonhosted.org/packages/92/58/89c25e54edeb0e326933449c38ab6409926dab13930b5a8ddabf9eb76cf7/django_dynamic_business_rules-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8bb70bce94f40da1dbf6ce0c5ebfafea", "sha256": "29483415c0d8758a1651118dcc7c07c07895c69e16bdcc5a3218ea30cd43c629" }, "downloads": -1, "filename": "django-dynamic-business-rules-0.1.1.tar.gz", "has_sig": false, "md5_digest": "8bb70bce94f40da1dbf6ce0c5ebfafea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11834, "upload_time": "2019-02-08T16:15:42", "url": "https://files.pythonhosted.org/packages/61/4c/22d0310e06c5a5cd98558dd279585fc92929c2ceba804e7b8b994fd09647/django-dynamic-business-rules-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "482a4eeb8e2401be41794a2986e6eb15", "sha256": "ecb5a2de5640b3c0a4a0765b24eae084cd60a3e29249efbd5aff9fffaa522e81" }, "downloads": -1, "filename": "django_dynamic_business_rules-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "482a4eeb8e2401be41794a2986e6eb15", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 11849, "upload_time": "2019-02-08T16:26:00", "url": "https://files.pythonhosted.org/packages/88/bd/975725ea97001e0fcc604eb6dc2b0d792b09373fbf7348526ec8373beb2a/django_dynamic_business_rules-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fc3f74a5d5a44ea0d3b73ef9c7f7ee36", "sha256": "b0bad97c53b54240be53b172f082e07e8dcf2eaa8f17722578273f0b2d6cf023" }, "downloads": -1, "filename": "django-dynamic-business-rules-0.1.2.tar.gz", "has_sig": false, "md5_digest": "fc3f74a5d5a44ea0d3b73ef9c7f7ee36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10928, "upload_time": "2019-02-08T16:25:58", "url": "https://files.pythonhosted.org/packages/e6/09/f2593f9643b7f1cb5bc5dd676961e953067b44ac7e8d96cf901ffe36edc9/django-dynamic-business-rules-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "482a4eeb8e2401be41794a2986e6eb15", "sha256": "ecb5a2de5640b3c0a4a0765b24eae084cd60a3e29249efbd5aff9fffaa522e81" }, "downloads": -1, "filename": "django_dynamic_business_rules-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "482a4eeb8e2401be41794a2986e6eb15", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 11849, "upload_time": "2019-02-08T16:26:00", "url": "https://files.pythonhosted.org/packages/88/bd/975725ea97001e0fcc604eb6dc2b0d792b09373fbf7348526ec8373beb2a/django_dynamic_business_rules-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fc3f74a5d5a44ea0d3b73ef9c7f7ee36", "sha256": "b0bad97c53b54240be53b172f082e07e8dcf2eaa8f17722578273f0b2d6cf023" }, "downloads": -1, "filename": "django-dynamic-business-rules-0.1.2.tar.gz", "has_sig": false, "md5_digest": "fc3f74a5d5a44ea0d3b73ef9c7f7ee36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10928, "upload_time": "2019-02-08T16:25:58", "url": "https://files.pythonhosted.org/packages/e6/09/f2593f9643b7f1cb5bc5dd676961e953067b44ac7e8d96cf901ffe36edc9/django-dynamic-business-rules-0.1.2.tar.gz" } ] }