Publisher workflow for django models and Django CMS pages.
Project description
Publisher workflow for django models and Django CMS pages.
This is a fork of andersinno/django-model-publisher-ai which is a fork of the origin jp74/django-model-publisher.
Features
Django CMS page support.
Add request/reject buttons in Django CMS toolbar.
Django CMS placeholders support.
Hvad/Parler support.
Restrict user access to publish functions with user permissions.
base info
We have these three user types:
A user with only a few rights (we call it ‘reporter’)
A user with more rights (We call it ‘editor’)
The superuser with all rights
The user case is following:
‘reporter’:
can only change draft content
can’t change public content
can’t delete publisher model entries or CMS pages.
can send a (un-)publish request to the ‘editor’ with a text node.
‘editor’:
can response open publishing request from ‘reporter’.
can change drafts and public content, but only if there is no pending request.
can delete publisher model entries or CMS pages.
can’t delete/manipulate publisher state model entries.
permissions
Permissions for ‘reporter’ who can only create (un-)publish requests:
... [ ] 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> ...
Permissions for ‘editor’ who can accept/reject (un-)publish requests:
... [*] 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> ...
Important: To prevent a privilege escalation, both users must not have access to these models:
django.contrib.auth.models.Permission
django.contrib.auth.models.Group
cms.models.PagePermission
Test users:
See user permission tests in:
Django compatibility
django-ya-model-publisher |
django version |
python |
---|---|---|
>=v0.5.x |
1.8, 1.9, 1.10, 1.11 |
3.5, 3.6 |
v0.4.x |
1.8, 1.9, 1.10, 1.11 |
2.7, 3.4, 3.5, 3.6 |
Note: See travis/tox config files for current test matrix
run tests
run tests via py.test with current python/environment:
$ make test or $ ./setup.py test or $ python tests/manage.py test myapp
run test via tox e.g.:
$ make tox or $ ./setup.py tox or $ tox
run test project
You can run the test environment by:
$ ./run_test_project_dev_server.sh
or:
$ ./publisher_test_project/manage.py run_test_project_dev_server
The following steps will be executed:
Create django users if not exists:
A django ‘superuser’
The user editor: He can accept/reject un-/publish requests
The user reporter: He can create un-/publish requests
note: Both users will used the same password as the ‘superuser’ !
run migration
insert test fixtures (Create Django CMS pages)
collect static files
run the django development server on localhost
You can pass arguments to the helper script, e.g.:
$ ./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] ...
To ‘reset’ the test fixtures, run this:
$ ./publisher_test_project/manage.py create_test_data --fresh
For a complete fresh database, just remove the sqlite file, e.g.:
$ rm publisher_test_project/publisher_test_database.sqlite3
Backwards-incompatible changes
v0.6.0
The permission names changed! Please update your django user permissions, too.
These permissions are removed:
direct_publisher
ask_publisher_request
reply_publisher_request
Please read the information above.
history
v0.6.0 - 27.12.2017 - compare v0.5.1…v0.6.0
refactor permissions and publisher workflow
NEW: publisher.views.PublisherCmsViewMixin
NEW: publisher.admin.VisibilityMixin
bugfix django v1.11 compatibility
Expand tests with publisher_test_project.publisher_list_app
v0.5.1 - 20.12.2017 - compare v0.5.0…v0.5.1
fix python package (add missing parts)
change travis/tox/pytest configuration
minor code update
v0.5.0 - 19.12.2017 - compare v0.4.1…v0.5.0
Skip official support for python v2.7 and v3.4 (remove from text matrix)
Implement “request/reject/accept publishing” workflow with a shot messages and logging
Add “request/reject/accept publishing” buttons to Django CMS toolbar for cms pages.
v0.4.1 - 14.11.2017 - compare v0.4.0.dev1…v0.4.1
Refactor test run setup
bugfix project name
v0.4.0.dev1 - 14.11.2017 - compare v0.3.1…v0.4.0.dev1
Just create the fork and apply all pull requests from andersinno/django-model-publisher-ai/pull/14
links
Homepage |
|
PyPi.org |
https://pypi-hypernode.com/project/django-ya-model-publisher/ |
PyPi (legacy) |
donation
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 Distributions
Hashes for django-ya-model-publisher-0.6.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70b95945016521ef40d73d7b71b5a4cd6e7ae9f0c999395548a86a1775ac1cad |
|
MD5 | 089ecc6e6414e5b00a33d240dacfc989 |
|
BLAKE2b-256 | 2ad5a3b6c20401c52a8624ecc96a6711a31460a8851aea053c2cfb3d259efcc8 |
Hashes for django_ya_model_publisher-0.6.0-py3.5.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | cbba98408b5429fffc3d8a8593d0401741cab19016bdd443aed776e7105564ff |
|
MD5 | 6276d90b8fdaef7ebce51f85b618be1c |
|
BLAKE2b-256 | 526193a4e00881f82b5daac2e95356fc0ecbedcc276a66221523c10cfa97b724 |
Hashes for django_ya_model_publisher-0.6.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5dcc25a8604399e2d100f8fe02cc0b32ec6a5cca72612b2a9017556ccdef77f2 |
|
MD5 | ad9852a0dc64c1b3e1b8ea48374b84e4 |
|
BLAKE2b-256 | 70fd252ea962f80ad4327b6ca9ea7e35d1beac11693a5156f5deea1d6024e70a |