在Django应用中创建简单的“如果这个,那么那个”风格的规则。附带一系列可直接使用的操作和条件,但也易于扩展,并允许针对特定模型进行操作/条件。
项目描述
在Django应用中创建简单的“如果这个,那么那个”风格规则。附带一系列可直接使用的操作和条件,但也易于扩展,并允许针对特定模型进行操作/条件。
Conditioner帮助您创建由条件(如果这个)和操作(那么那个)组成的简单规则。目前仍在开发中,但我们已成功将其用于生产环境中,并使用自定义条件和操作来发送在用户许可证到期前提醒用户的“提醒”邮件。
它被创建来“挠痒痒”,在可预见的未来,我们将优先考虑实施我们需要的用例。然而,总体目标是创建一组有用的操作和条件,可以应用于多种不同场景。
哦,还要感谢 django-polymorphic,没有它,这一切都会变得更加困难。
安装
从PyPI
$ pip install django-conditioner
用法
如果您想使用已经实现的动作和条件,您只需要安装包,将 conditioner 添加到您的 INSTALLED_APPS 列表,并运行 $ python manage.py migrate。
然后您应该在 Django 管理后台看到一个 Conditioner 部分,其中包含一个 Rule 子部分。添加新的部分应该是相当直观的。
高级用法
动作和条件类型
添加新的动作和/或条件
主要目标之一是使 conditioner 尽可能灵活,并尽可能简化添加新的动作/条件的过程。
创建动作
所有动作都需要从 BaseAction 继承并实现 run_action()。模型通用动作应将 model_specific 设置为 True,模型特定动作应将其设置为返回所需的模型类。如果您的动作是模型特定的,则模型实例将作为名为 instance 的命名参数传递给 run_action() 方法。
确保动作被 Django 捕获
您需要确保您的新创建的动作被 Django 捕获。假设它位于 sample_module 模块中的 actions.py 文件内,您的 sample_module/apps.py 应该看起来像这样
from django.apps import AppConfig
class SampleModuleAppConfig(AppConfig):
name = 'sample_module'
def ready(self):
# Make sure that all models are imported
from sample_module import actions # noqa
将动作注册到 Django 管理后台
最后,您需要将您的动作连接到 Django 管理后台的 Rule。您可以通过将其添加到可用的内联多态模型列表中来实现。
from polymorphic.admin import StackedPolymorphicInline
from conditioner.admin import ActionInline
from sample_module.actions import SampleModuleAction
# Register `SampleModuleAction` action to 'conditioner' Django Admin
class SampleModuleActionInline(StackedPolymorphicInline.Child):
model = SampleModuleAction
ActionInline.child_inlines.append(SampleModuleActionInline)
假设您将上述代码放入 sample_module/conditioner.py 文件中,您需要确保它也被 Django 捕获,通过在您的应用配置 ready() 方法中添加 from sample_module import conditioner 来实现。
现在您应该在 Django 管理后台看到您自定义的动作。
API
目前还没有正式的文档,但代码有注释,应该很容易使用。
话虽如此 - 如果有任何不清楚的地方,请随时在 GitHub 问题上提出。
测试
该包在 Python 3.4、3.5 和 3.6 以及 Django 1.8、1.9 和 1.10 的帮助下进行了测试(见 tox.ini)。
要自行运行测试,您需要在存储库内运行 tox。
$ tox
贡献
包的源代码可在 GitHub 上找到。
请随意使用、提问、分支、收藏、报告错误、修复它们、提出改进建议、添加功能以及指出任何错误。谢谢!
欢迎添加新的动作和条件,但应先进行讨论并达成一致。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分布
构建分布
django-conditioner-0.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c6401a4cc7fae5dd5d2825cbcb75b53976215a6da27e21f9a14b5f75dcb6bbf9 |
|
MD5 | a0276649f78e91e30fb31cda6096187a |
|
BLAKE2b-256 | 4d09c95ec2ecf967078cbb8e6b725e421f5169cf92661132de93d2d69a9897ad |
django_conditioner-0.1.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b0a6b4488e42365cbf37fe12d4afe163b47d0784849614df7839eb25ec569162 |
|
MD5 | ab44ba6a24e610a2ce74599171805c53 |
|
BLAKE2b-256 | 83bf8ec1db773006bb45153a7f9f2f555c8da03a155659fb3449d296bfc8e3a6 |