跳转到主要内容

Django模型和Django CMS页面发布的发布工作流程。

项目描述

Django模型和Django CMS页面发布的发布工作流程。

这是一个andersinno/django-model-publisher-ai的分支,而jp74/django-model-publisher是原始分支。

Build Status on travis-ci.org

travis-ci.org/wearehoods/django-ya-model-publisher

Coverage Status on codecov.io

codecov.io/gh/wearehoods/django-ya-model-publisher

Coverage Status on coveralls.io

coveralls.io/r/wearehoods/django-ya-model-publisher

功能

  • Django CMS页面支持。

  • 在Django CMS工具栏中添加请求/拒绝按钮。

  • Django CMS占位符支持。

  • Hvad/Parler支持。

  • 使用用户权限限制用户对发布功能的访问。

基本信息

我们有这三种用户类型

  • 只有少量权利的用户(我们称其为“报告者”)

  • 有更多权利的用户(我们称其为“编辑”)

  • 拥有所有权限的超级用户

用户案例如下

  • ‘报告者’:

    • 只能更改草稿内容

    • 不能更改公开内容

    • 不能删除发布者模型条目或CMS页面。

    • 可以发送一个带有文本节点的对“编辑”的(不)发布请求

  • “编辑”:

    • 可以响应来自“记者”的开放发布请求。

    • 可以更改草稿和公开内容,但前提是没有挂起的请求。

    • 可以删除发布者模型条目或CMS页面。

    • 不能删除/操作发布者状态模型条目。

权限

“记者”的权限,他只能创建(不)发布请求

...
[ ] cms.publish_page
...
[*] cms.add_page
[*] cms.change_page
[ ] cms.delete_page
...
[ ] publisher.add_publisherstatemodel
[*] publisher.change_publisherstatemodel
[ ] publisher.delete_publisherstatemodel
...
[ ] <app_name>.can_publish_<model_name>
...
[*] <app_name>.add_<model_name>
[*] <app_name>.change_<model_name>
[ ] <app_name>.delete_<model_name>
...

“编辑”的权限,他可以接受/拒绝(不)发布请求

...
[*] cms.publish_page
...
[*] cms.add_page
[*] cms.change_page
[*] cms.delete_page
...
[ ] publisher.add_publisherstatemodel
[*] publisher.change_publisherstatemodel
[ ] publisher.delete_publisherstatemodel
...
[*] <app_name>.can_publish_<model_name>
...
[*] <app_name>.add_<model_name>
[*] <app_name>.change_<model_name>
[*] <app_name>.delete_<model_name>
...

重要:为了防止权限升级,两个用户都不能访问这些模型

  • django.contrib.auth.models.Permission

  • django.contrib.auth.models.Group

  • cms.models.PagePermission

测试用户

请参阅用户权限测试

主键类型兼容性

使用的publisher.models.PublisherStateModelPositiveIntegerField用于GenericForeignKey,因此它只能用于具有整数主键的模型!另请参阅:https://docs.django.ac.cn/en/1.11/ref/contrib/contenttypes/#django.contrib.contenttypes.fields.GenericForeignKey

Django兼容性

django-ya-model-publisher

django cms

django版本

python

>=v0.6.x

3.4.x

1.11

3.5, 3.6

>=v0.5.x

3.4.x

1.8, 1.9, 1.10, 1.11

3.5, 3.6

v0.4.x

3.4.x

1.8, 1.9, 1.10, 1.11

2.7, 3.4, 3.5, 3.6

注意:请参阅travis/tox配置文件以获取当前的测试矩阵

目前Django CMS v3.5尚不支持。它已在待办事项列表中,请参阅:问题#10

运行测试

使用当前python/environment通过py.test运行测试

$ make test
or
$ ./setup.py test
or
$ python tests/manage.py test myapp

通过tox运行测试,例如。

$ make tox
or
$ ./setup.py tox
or
$ tox

运行测试项目

您可以通过以下方式运行测试环境

$ ./run_test_project_dev_server.sh

$ ./publisher_test_project/manage.py run_test_project_dev_server

以下步骤将被执行

  • 如果不存在,则创建django用户

    • 一个django “超级用户”

    • 用户 编辑:他可以接受/拒绝不/发布请求

    • 用户 记者:他可以创建不/发布请求

    • 注意:两个用户将使用与“超级用户”相同的密码!

  • 运行迁移

  • 插入测试固件(创建Django CMS页面)

  • 收集静态文件

  • 在localhost上运行django开发服务器

您可以将参数传递给辅助脚本,例如。

$ ./run_test_project_dev_server.sh --help
...
usage: manage.py run_test_project_dev_server [-h] [--version] [-v {0,1,2,3}]
                                             [--settings SETTINGS]
                                             [--pythonpath PYTHONPATH]
                                             [--traceback] [--no-color]
                                             [--ipv6] [--nothreading]
                                             [--noreload] [--nostatic]
                                             [--insecure]
                                             [addrport]
...

要“重置”测试固件,请运行此命令

$ ./publisher_test_project/manage.py create_test_data --fresh

要获取完整的全新数据库,只需删除sqlite文件,例如。

$ rm publisher_test_project/publisher_test_database.sqlite3

不兼容的更改

v0.7.0

PublisherCmsViewMixin, PublisherCmsDetailView, PublisherCmsListView

publisher.views

移动到

publisher_cms.views

v0.6.0

权限名称已更改!请更新您的django用户权限。

以下权限已被删除

  • direct_publisher

  • ask_publisher_request

  • reply_publisher_request

请阅读上述信息。

历史记录

  • dev 比较v0.7.0…master

  • v0.7.0 - 22.02.2018 - 比较v0.6.9…v0.7.0

    • 不兼容的更改(见上文)

    • 移除对Django 1.8的支持

    • 新增:在PublisherCmsDetailView中添加发布链接到Django CMS工具栏

    • 更改PublisherPageToolbar链接文本并添加“页面”(以便更好地区分它们与PublisherCmsDetailView链接)

  • v0.6.9 - 01.02.2018 - 比较v0.6.8…v0.6.9

    • 修复如果超级用户编辑cms页面时出现的错误AttributeError: 'PublisherPageToolbar' object has no attribute 'current_request'

  • v0.6.8 - 01.02.2018 - 比较v0.6.7…v0.6.8

  • v0.6.7 - 2018年1月31日 - 比较v0.6.6…v0.6.7

    • 新增:管理界面中的“历史”视图(例如:查看已关闭请求的状态和历史,以及只能创建请求的用户的状态)

    • 当关闭“回复”请求或删除实例时不会出现404错误。

  • v0.6.6 - 2018年1月30日 - 比较v0.6.5…v0.6.6

    • 修复:在“请求发布”后重定向可能会导致404错误,见:问题 #9

  • v0.6.5 - 2018年1月30日 - 比较v0.6.4…v0.6.5

    • 修复:在新建页面上缺少“请求发布”工具栏链接。

    • 在测试页面上添加用户名列表。

  • v0.6.4 - 2018年1月29日 - 比较v0.6.3…v0.6.4

    • 对所有非超级用户隐藏PublisherStateModel管理操作。

  • v0.6.3 - 2018年1月26日 - 比较v0.6.2…v0.6.3

    • 安全修复:没有“can_publish”权限的用户可以接受/拒绝请求。

    • 对所有非超级用户隐藏“change” PublisherStateModel管理视图。

    • 禁用所有用户的“add” PublisherStateModel管理视图。

  • v0.6.2 - 2018年1月2日 - 比较v0.6.1…v0.6.2

    • 处理带有删除实例的发布状态:添加一个管理视图来关闭请求。

    • 修复:拒绝编辑挂起请求对象。

    • 在创建(取消)发布请求后创建消息。

  • v0.6.1 - 2017年12月28日 - 比较v0.6.0…v0.6.1

    • 移除自己的“unique_together”:将"publisher_is_draft"添加到自己的“unique_together”元组中

    • 移除过时的管理命令“update_permissions”(可在django-tools中找到)

  • v0.6.0 - 2017年12月27日 - 比较v0.5.1…v0.6.0

    • 重构权限和发布工作流程

    • 新增:publisher.views.PublisherCmsViewMixin

    • 新增:publisher.admin.VisibilityMixin

    • 修复django v1.11兼容性问题

    • 使用publisher_test_project.publisher_list_app扩展测试

  • v0.5.1 - 2017年12月20日 - 比较v0.5.0…v0.5.1

    • 修复python包(添加缺失部分)

    • 更改travis/tox/pytest配置

    • 小的代码更新

  • v0.5.0 - 2017年12月19日 - 比较v0.4.1…v0.5.0

    • 跳过对python v2.7和v3.4的官方支持(从文本矩阵中删除)

    • 实现带有简短消息和日志的“请求/拒绝/接受发布”工作流程

    • 将“请求/拒绝/接受发布”按钮添加到Django CMS工具栏中的CMS页面。

  • v0.4.1 - 2017年11月14日 - 比较v0.4.0.dev1…v0.4.1

    • 重构测试运行设置

    • 修复项目名称错误

  • v0.4.0.dev1 - 2017年11月14日 - 比较v0.3.1…v0.4.0.dev1

捐赠

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

django-ya-model-publisher-0.7.0.tar.gz (74.6 kB 查看哈希值)

上传时间

构建分布

django_ya_model_publisher-0.7.0-py3.6.egg (91.1 kB 查看哈希值)

上传时间

django_ya_model_publisher-0.7.0-py2.py3-none-any.whl (99.4 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面