Metadata-Version: 1.2
Name: django-ya-model-publisher
Version: 0.7.0.dev0
Summary: Publisher workflow for django models and Django CMS pages.
Home-page: https://github.com/wearehoods/django-ya-model-publisher
Author: Jens Diemer
Author-email: model-ya-publisher@jensdiemer.de
License: BSD
Description-Content-Type: UNKNOWN
Description: ====================================
        Django (yet another) Model Publisher
        ====================================
        
        Publisher workflow for django models and Django CMS pages.
        
        This is a fork of `andersinno/django-model-publisher-ai <https://github.com/andersinno/django-model-publisher-ai>`_ which is a fork of the origin `jp74/django-model-publisher <https://github.com/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`_ |
        +-----------------------------------+--------------------------------------------------------+
        
        .. |Build Status on travis-ci.org| image:: https://travis-ci.org/wearehoods/django-ya-model-publisher.svg
        .. _travis-ci.org/wearehoods/django-ya-model-publisher: https://travis-ci.org/wearehoods/django-ya-model-publisher/
        .. |Coverage Status on codecov.io| image:: https://codecov.io/gh/wearehoods/django-ya-model-publisher/branch/develop/graph/badge.svg
        .. _codecov.io/gh/wearehoods/django-ya-model-publisher: https://codecov.io/gh/wearehoods/django-ya-model-publisher
        .. |Coverage Status on coveralls.io| image:: https://coveralls.io/repos/wearehoods/django-ya-model-publisher/badge.svg
        .. _coveralls.io/r/wearehoods/django-ya-model-publisher: https://coveralls.io/r/wearehoods/django-ya-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:
        
        * `publisher_tests.test_basics.PermissionTestCase <https://github.com/wearehoods/django-ya-model-publisher/blob/master/publisher_tests/test_basics.py>`_
        
        ------------------------------
        Primary key type compatibility
        ------------------------------
        
        The ``publisher.models.PublisherStateModel`` used a ``PositiveIntegerField`` for the ``GenericForeignKey`` so it can only be used for models with a integer primary keys!
        See also: `https://docs.djangoproject.com/en/1.11/ref/contrib/contenttypes/#django.contrib.contenttypes.fields.GenericForeignKey <https://docs.djangoproject.com/en/1.11/ref/contrib/contenttypes/#django.contrib.contenttypes.fields.GenericForeignKey>`_
        
        --------------------
        Django compatibility
        --------------------
        
        +---------------------------+------------+----------------------+--------------------+
        | django-ya-model-publisher | django cms | django version       | 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 |
        +---------------------------+------------+----------------------+--------------------+
        
        Note: See travis/tox config files for current test matrix
        
        Currently Django CMS v3.5 is not supported, yet.
        It's on the TODO, see: `issues #10 <https://github.com/wearehoods/django-ya-model-publisher/issues/10>`_
        
        ---------
        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.7.0
        ======
        
        ``PublisherCmsViewMixin, PublisherCmsDetailView, PublisherCmsListView``
        
        moved from:
        
        ``publisher.views``
        
        to:
        
        ``publisher_cms.views``
        
        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
        -------
        
        * *dev* `compare v0.7.0...master <https://github.com/wearehoods/django-ya-model-publisher/compare/v0.7.0...master>`_
        
        * v0.7.0 - 22.02.2018 - `compare v0.6.9...v0.7.0 <https://github.com/wearehoods/django-ya-model-publisher/compare/v0.6.9...v0.7.0>`_ 
        
            * Backwards-incompatible changes (see above)
        
            * Remove support for Django 1.8
        
            * NEW: Add publish links to Django CMS toolbar in ``PublisherCmsDetailView``
        
            * Change ``PublisherPageToolbar`` link text and add "page" to them (to differentiate them better from ``PublisherCmsDetailView`` links)
        
        * v0.6.9 - 01.02.2018 - `compare v0.6.8...v0.6.9 <https://github.com/wearehoods/django-ya-model-publisher/compare/v0.6.8...v0.6.9>`_ 
        
            * Bugfix ``AttributeError: 'PublisherPageToolbar' object has no attribute 'current_request'`` if superuser edit a cms page
        
        * v0.6.8 - 01.02.2018 - `compare v0.6.7...v0.6.8 <https://github.com/wearehoods/django-ya-model-publisher/compare/v0.6.7...v0.6.8>`_ 
        
            * Fix `#9 Redirect after "request publishing" <https://github.com/wearehoods/django-ya-model-publisher/issues/9>`_
        
            * Add reply/history Links in Django CMS Toolbar (specially for page with pending requests)
        
        * v0.6.7 - 31.01.2018 - `compare v0.6.6...v0.6.7 <https://github.com/wearehoods/django-ya-model-publisher/compare/v0.6.6...v0.6.7>`_ 
        
            * NEW: 'History' view in admin (e.g.: see status/history of closed request and status for users that can only create requests)
        
            * No 404 when "reply" closed requests or deleted instance.
        
        * v0.6.6 - 30.01.2018 - `compare v0.6.5...v0.6.6 <https://github.com/wearehoods/django-ya-model-publisher/compare/v0.6.5...v0.6.6>`_ 
        
            * Bugfix: redirect after "Request publishing" can result in a 404, see: `issues #9 <https://github.com/wearehoods/django-ya-model-publisher/issues/9>`_
        
        * v0.6.5 - 30.01.2018 - `compare v0.6.4...v0.6.5 <https://github.com/wearehoods/django-ya-model-publisher/compare/v0.6.4...v0.6.5>`_ 
        
            * Bugfix: Missing "Request publishing" toobar link on new created pages
        
            * Add username list on test pages
        
        * v0.6.4 - 29.01.2018 - `compare v0.6.3...v0.6.4 <https://github.com/wearehoods/django-ya-model-publisher/compare/v0.6.3...v0.6.4>`_ 
        
            * Hide PublisherStateModel admin actions for all non-superusers
        
        * v0.6.3 - 26.01.2018 - `compare v0.6.2...v0.6.3 <https://github.com/wearehoods/django-ya-model-publisher/compare/v0.6.2...v0.6.3>`_ 
        
            * Security Fix: User without 'can_publish' permission can accept/reject requests.
        
            * Hide 'change' PublisherStateModel admin view for all non-superusers
        
            * Disable 'add' PublisherStateModel admin view for all users
        
        * v0.6.2 - 02.01.2018 - `compare v0.6.1...v0.6.2 <https://github.com/wearehoods/django-ya-model-publisher/compare/v0.6.1...v0.6.2>`_ 
        
            * Handle publishes states with deletes instance: Add a admin view to close the request.
        
            * Bugfix: deny editing pending request objects
        
            * Create messages after (un-)/publish request created.
        
        * v0.6.1 - 28.12.2017 - `compare v0.6.0...v0.6.1 <https://github.com/wearehoods/django-ya-model-publisher/compare/v0.6.0...v0.6.1>`_ 
        
            * remove own "unique_together": Add ``"publisher_is_draft"`` to your own "unique_together" tuple
        
            * remove out dated manage command "update_permissions" (can be found in `django-tools <https://github.com/jedie/django-tools>`_)
        
        * v0.6.0 - 27.12.2017 - `compare v0.5.1...v0.6.0 <https://github.com/wearehoods/django-ya-model-publisher/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 <https://github.com/wearehoods/django-ya-model-publisher/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 <https://github.com/wearehoods/django-ya-model-publisher/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 <https://github.com/wearehoods/django-ya-model-publisher/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 <https://github.com/wearehoods/django-ya-model-publisher/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 <https://github.com/andersinno/django-model-publisher-ai/pull/14>`_
        
        -----
        links
        -----
        
        +---------------+-----------------------------------------------------------+
        | Homepage      | `http://github.com/wearehoods/django-ya-model-publisher`_ |
        +---------------+-----------------------------------------------------------+
        | PyPi.org      | `https://pypi.org/project/django-ya-model-publisher/`_    |
        +---------------+-----------------------------------------------------------+
        | PyPi (legacy) | `http://pypi.python.org/pypi/django-ya-model-publisher/`_ |
        +---------------+-----------------------------------------------------------+
        
        .. _http://github.com/wearehoods/django-ya-model-publisher: http://github.com/wearehoods/django-ya-model-publisher
        .. _https://pypi.org/project/django-ya-model-publisher/: https://pypi.org/project/django-ya-model-publisher/
        .. _http://pypi.python.org/pypi/django-ya-model-publisher/: http://pypi.python.org/pypi/django-ya-model-publisher/
        
        --------
        donation
        --------
        
        * `paypal.me/JensDiemer <https://www.paypal.me/JensDiemer>`_
        
        * `Flattr This! <https://flattr.com/submit/auto?uid=jedie&url=https%3A%2F%2Fgithub.com%2Fwearehoods%2Fdjango-ya-model-publisher%2F>`_
        
        * Send `Bitcoins <http://www.bitcoin.org/>`_ to `1823RZ5Md1Q2X5aSXRC5LRPcYdveCiVX6F <https://blockexplorer.com/address/1823RZ5Md1Q2X5aSXRC5LRPcYdveCiVX6F>`_
Keywords: publisher django cms parler workflow model-publisher
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Content Management System
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=2.7
