Metadata-Version: 2.1
Name: django-cms-tools
Version: 0.7.0
Summary: Tools/helpers around Django-CMS
Home-page: https://github.com/jedie/django-cms-tools
Author: Jens Diemer
Author-email: django-cms-tools@jensdiemer.de
License: GNU General Public License v3.0 or above
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: OS Independent
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Framework :: Django
Classifier: Framework :: Django :: 1.11
Classifier: Framework :: Django :: 1.8
Classifier: Topic :: Internet
Requires-Python: >=3.5
Requires-Dist: django
Requires-Dist: django-tools (>=0.42.1)
Requires-Dist: django-cms

================
django-cms-tools
================

Miscellaneous tools/helpers for django CMS.

Look also at the siblings project: `django-tools <https://github.com/jedie/django-tools>`_ (Tools/helpers around Django).

+-----------------------------------+------------------------------------------------------+
| |Build Status on travis-ci.org|   | `travis-ci.org/jedie/django-cms-tools`_              |
+-----------------------------------+------------------------------------------------------+
| |Coverage Status on codecov.io|   | `codecov.io/gh/jedie/django-tools`_                  |
+-----------------------------------+------------------------------------------------------+
| |Coverage Status on coveralls.io| | `coveralls.io/r/jedie/django-cms-tools`_             |
+-----------------------------------+------------------------------------------------------+
| |Status on landscape.io|          | `landscape.io/github/jedie/django-cms-tools/master`_ |
+-----------------------------------+------------------------------------------------------+

.. |Build Status on travis-ci.org| image:: https://travis-ci.org/jedie/django-cms-tools.svg
.. _travis-ci.org/jedie/django-cms-tools: https://travis-ci.org/jedie/django-cms-tools/
.. |Coverage Status on codecov.io| image:: https://codecov.io/gh/jedie/django-cms-tools/branch/master/graph/badge.svg
.. _codecov.io/gh/jedie/django-tools: https://codecov.io/gh/jedie/django-cms-tools
.. |Coverage Status on coveralls.io| image:: https://coveralls.io/repos/jedie/django-cms-tools/badge.svg
.. _coveralls.io/r/jedie/django-cms-tools: https://coveralls.io/r/jedie/django-cms-tools
.. |Status on landscape.io| image:: https://landscape.io/github/jedie/django-cms-tools/master/landscape.svg
.. _landscape.io/github/jedie/django-cms-tools/master: https://landscape.io/github/jedie/django-cms-tools/master

--------------
existing stuff
--------------

Django-CMS plugins
==================

page anchor menu
----------------

Add a anchor menu to a CMS page.
More info in: `django_cms_tools/plugin_anchor_menu/README.creole <https://github.com/jedie/django-cms-tools/tree/master/django_cms_tools/plugin_anchor_menu#readme>`_

landing page
------------

A app to create landing pages.
More info in: `django_cms_tools/plugin_landing_page/README.creole <https://github.com/jedie/django-cms-tools/tree/master/django_cms_tools/plugin_landing_page#readme>`_

Test utilities
==============

Add CMS Plugin unittest test case
---------------------------------

``django_cms_tools.unittest_utils.add_cms_plugin.TestAddPluginTestCase`` - TestCase to test "add CMS plugin via admin"

Generate Add CMS Plugin unittest skeleton
-----------------------------------------

e.g.:

::

    $ ./manage.py generate_add_plugin_test_code plugin_anchor_menu.AnchorPlugin

    from django_cms_tools.unittest_utils.add_cms_plugin import TestAddPluginTestCase

    class AddPluginTestCase(TestAddPluginTestCase):
        """
        Tests for plugin_anchor_menu.AnchorPluginModel

        Based on a skeleton generated via:
            ./manage.py generate_add_plugin_test_code plugin_anchor_menu.AnchorPlugin
        """

        def test_anchorplugin_de_1(self):
            # plugin name in de: 'Anchor'
            self.create_plugin(
                language_code = "de",
                plugin_parent=None,
                plugin_type="AnchorPlugin",

                title='dummy text no. 0', # CharField, String (up to 254)
                slug='dummy-text-no-0', # SlugField, Slug (up to 255)
            )
            response = self.assert_plugin(
                language_code="de",
                must_contain_html=[
                    "<XXX></XXX>", # TODO: Add plugin html output here!
                ],
                must_contain=[
                    "dummy text no. 0",
                ],
                template_name="anchor_menu/anchor.html",
            )

        def test_anchorplugin_de_2(self):
    ...

Display usage of a CMS-Plugin
-----------------------------

List all existing plugins by calling:

``./manage.py list_page_by_plugin``

To display CMS-Plugin usage, add the plugin name as argument, e.g.:

``./manage.py list_page_by_plugin TextPlugin``

CMS related test assertments
============================

``django_cms_tools.unittest_utils.assertments`` contains CMS related test assertments:

* ``assert_public_cms_app_namespaces()`` - Check if given namespaces exists.

* ``assert_public_cms_page_urls()`` - Check if given urls exist.

test fixture creation
=====================

django_cms_tools.fixtures.pages
-------------------------------

Helper for creating Django CMS pages in test fixtures:

Class *django_cms_tools.fixtures.pages.***CmsPageCreator** can be used for create normal/plugin CMS pages.
Inherit from the class and overwrite attributes/methods for your need ;)
Example, look into the Test code.

Source: `django_cms_tools/fixtures/pages.py <https://github.com/jedie/django-cms-tools/blob/master/django_cms_tools/fixtures/pages.py>`_
Test/Example: `/tests/test_fixtures_pages.py <https://github.com/jedie/django-cms-tools/blob/master/tests/test_fixtures_pages.py>`_

create_cms_index_pages
----------------------

Create CMS home page in all existing languages (``settings.LANGUAGES``) and fill placeholder with TextPlugin, use:

* *django_cms_tools.fixtures.pages.***create_cms_index_pages**

create_cms_plugin_page
----------------------

Create CMS plugin page in all existing languages (``settings.LANGUAGES``) and add a link to the index page.

* *django_cms_tools.fixtures.pages.***create_cms_plugin_page**

django filer tools *experimental*
=================================

Activate by change your settings.py, e.g.:

::

    INSTALLED_APPS = [
        ...
        'django_cms_tools.filer_tools',
        ...
    ]

'image info' management command
-------------------------------

Display information about the number of existing, missing and ignored images. And a summary about all used images.
usage:

::

    $ ./manage.py image_info

    34 items - foo.Bar
    34 instanced checked:
       0 exist    0 missing   34 ignored - foo.BarModel.meta_image
      34 exist    0 missing    0 ignored - foo.BarModel.filer_overview_image

    ...

    total:
    	existing images..: 6171
    	missing images...: 0
    -------------------------------------------------------------------------------
    Collect all filer IDs...
    File: 2 entries
    Image: 2 entries
    Information about File:
    	Total entry count: 8042 entries.
    	Used entry count: 2 entries.
    	Total size: 13.8 GB
    	Used size: 997.5 KB
    Information about Image:
    	Total entry count: 6993 entries.
    	Used entry count: 2 entries.
    	Total size: 13.7 GB
    	Used size: 997.5 KB
    (Note: 'File' contains 'Image' ;)

'replace broken' management command
-----------------------------------

Replace all not existing files files with a given filer ID.

e.g.: You would like to make a clone of a existing installation, but without to move the real files:

#. make a DB dump on the source system

#. insert the DB dump the the cloned system

#. log into django admin of the new cloned version

#. upload a "dummy.jpg" filer image

#. write down the filer image ID (e.g.: 123)

#. start: ``$ ./manage.py replace_broken 123``

filer 'export_filer_images' management command
==============================================

The **export_filer_images** stores all used filer image files to disk. e.g.:

::

    $ ./manage.py export_filer_images my_backups

'template_info' management command
==================================

Activate e.g.:

::

    INSTALLED_APPS = [
        ...
        'django_cms_tools',
        ...
    ]

It looks like:

::

    $ ./manage.py template_info

    There are 3 public pages:
    pk:1 /en/                                     /foo/homepage.html
    pk:2 /en/foo/                                 INHERIT
    pk:3 /en/foo/bar/                             INHERIT

'cms_plugin_info' management command
====================================

Activate e.g.:

::

    INSTALLED_APPS = [
        ...
        'django_cms_tools',
        ...
    ]

It looks like:

::

    $ ./manage.py cms_plugin_info

    There are 4 CMS plugins:
    'Django CMS Tools Test'
        * RelatedPlugin (Related Plugin)
    'Generic'
        * PlaceholderPlugin (Placeholder)
        * AliasPlugin (Alias)
        * TextPlugin (Text)

----------------
run test project
----------------

::

    .../django-cms-tools$ ./run_test_project_dev_server.sh

or:

::

    .../django-cms-tools$ cd django_cms_tools_test_project/
    .../django-cms-tools/django_cms_tools_test_project$ ./manage.py run_test_project_dev_server

-------------
running tests
-------------

Run all tests in all environment combinations via tox:

::

    $ python3 setup.py tox

Run all tests in current environment via pytest:

::

    $ python3 setup.py test

--------------------
Django compatibility
--------------------

+------------------+------------+----------------+-----------------+
| django-cms-tools | Django CMS | django version | python          |
+==================+============+================+=================+
| >=v0.6           | 3.4.x      | v1.11          | 3.5, 3.6, pypy3 |
+------------------+------------+----------------+-----------------+
| >=v0.5.1         | 3.4.x      | 1.8, v1.11     | 3.5, 3.6, pypy3 |
+------------------+------------+----------------+-----------------+
| v0.4.0           |            | 1.8            | 2.7, 3.5, 3.6   |
+------------------+------------+----------------+-----------------+
| v0.1.x           |            | 1.8            | 2.7, 3.4, 3.5   |
+------------------+------------+----------------+-----------------+

Currently Django CMS v3.5 is not supported, yet.
It's on the TODO, see: `issues #1 <https://github.com/jedie/django-cms-tools/issues/1>`_
(See also combinations in `.travis.yml <https://github.com/jedie/django-cms-tools/blob/master/.travis.yml>`_ and `tox.ini <https://github.com/jedie/django-cms-tools/blob/master/tox.ini>`_)

-----
TODO:
-----

* Add tests for 'filer commands'

* Support Django CMS v3.5 and run tests against these versions.

* Support Django v2.0 and run tests against these versions.

------------------------------
Backwards-incompatible changes
------------------------------

v0.7
====

* ``django_cms_tools.fixtures`` renamed to: ``django_cms_tools.fixture_helper``

* remove ``django_cms_tools.fixtures.languages``

-------
history
-------

* *dev* - `compare v0.7.0...master <https://github.com/jedie/django-cms-tools/compare/v0.7.0...master>`_

* v0.7.0 - 18.09.2018 - `compare v0.6.11...v0.7.0 <https://github.com/jedie/django-cms-tools/compare/v0.6.11...v0.7.0>`_ 

    * ``django_cms_tools.fixtures`` renamed to: ``django_cms_tools.fixture_helper``

    * remove ``django_cms_tools.fixtures.languages``

    * NEW: ``django_cms_tools.unittest_utils.assertments``

* v0.6.11 - 21.06.2018 - `compare v0.6.10...v0.6.11 <https://github.com/jedie/django-cms-tools/compare/v0.6.10...v0.6.11>`_ 

    * Bugfix CmsPageCreator if create process will try to find the published page instance

* v0.6.10 - 05.06.2018 - `compare v0.6.9...v0.6.10 <https://github.com/jedie/django-cms-tools/compare/v0.6.9...v0.6.10>`_ 

    * NEW: management command: 'export_filer_images' to store all filer images on disk

    * Bugfix ``django_cms_tools.filer_tools.helper.collect_all_filer_ids`` if ``default_model_class`` is a string

* v0.6.9 - 04.05.2018 - `compare v0.6.8...v0.6.9 <https://github.com/jedie/django-cms-tools/compare/v0.6.8...v0.6.9>`_ 

    * Enhance 'Generate 'add cms plugin' skeleton code'

* v0.6.8 - 25.04.2018 - `compare v0.6.7...v0.6.8 <https://github.com/jedie/django-cms-tools/compare/v0.6.7...v0.6.8>`_ 

    * NEW: Display usage of a CMS-Plugin by: ``./manage.py list_page_by_plugin``

    * Change in ``create_plugin()`` the ``**plugin_kwargs`` argument to ``post_data``

* v0.6.7 - 24.04.2018 - `compare v0.6.6...v0.6.7 <https://github.com/jedie/django-cms-tools/compare/v0.6.6...v0.6.7>`_ 

    * NEW: Generate 'add cms plugin' skeleton code with ``./manage.py generate_add_plugin_test_code``

* v0.6.6 - 09.04.2018 - `compare v0.6.5...v0.6.6 <https://github.com/jedie/django-cms-tools/compare/v0.6.5...v0.6.6>`_ 

    * NEW: ``./manage.py orphaned_plugin_info`` to get a list about Django CMS uninstalled/unsaved plugins

* v0.6.5 - 22.03.2018 - `compare v0.6.4...v0.6.5 <https://github.com/jedie/django-cms-tools/compare/v0.6.4...v0.6.5>`_ 

    * Use ``ParlerDummyGenerator`` (for landing page test fixtures) from django-tools

    * ``django_cms_tools.fixtures.languages.iter_languages`` was moved to django-tools!

    * Bugfix: DummyPageGenerator creates non-published pages

* v0.6.4 - 06.03.2018 - `compare v0.6.3...v0.6.4 <https://github.com/jedie/django-cms-tools/compare/v0.6.3...v0.6.4>`_ 

    * Update ``django_cms_tools.fixtures.pages.DummyPageGenerator`` to changes API

* v0.6.3 - 23.02.2018 - `compare v0.6.2...v0.6.3 <https://github.com/jedie/django-cms-tools/compare/v0.6.2...v0.6.3>`_ 

    * Rename landing page and anchor menu plugins via django.apps.AppConfig

    * Update publisher itegration tests

* v0.6.2 - 22.02.2018 - `compare v0.6.1...v0.6.2 <https://github.com/jedie/django-cms-tools/compare/v0.6.1...v0.6.2>`_ 

    * Bugfix packaging: Include template files

* v0.6.1 - 22.02.2018 - `compare v0.6.0...v0.6.1 <https://github.com/jedie/django-cms-tools/compare/v0.6.0...v0.6.1>`_ 

    * Update "landing page" plugin to new publisher API

* v0.6.0 - 20.02.2018 - `compare v0.5.2...v0.6.0 <https://github.com/jedie/django-cms-tools/compare/v0.5.2...v0.6.0>`_ 

    * remove test runs with Django v1.8

    * NEW: Django-CMS plugin for create "landing pages"

    * NEW: Django-CMS plugin for build a page anchor menu

    * NEW: ``./manage.py cms_plugin_info`` to generate a list of all registered Django CMS plugins

* v0.5.2 - 10.01.2018 - `compare v0.5.1...v0.5.2 <https://github.com/jedie/django-cms-tools/compare/v0.5.1...v0.5.2>`_ 

    * enhance and bugfix 'replace_broken' command

* v0.5.1 - 21.12.2017 - `compare v0.5.0...v0.5.1 <https://github.com/jedie/django-cms-tools/compare/v0.5.0...v0.5.1>`_ 

    * refactor travis/tox/pytest/coverage stuff

    * Tests can be run via ``python3 setup.py tox`` and/or ``python3 setup.py test``

    * Test also with pypy3 on Travis CI.

* v0.5.0 - 19.12.2017 - `compare v0.4.0...v0.5.0 <https://github.com/jedie/django-cms-tools/compare/v0.4.0...v0.5.0>`_ 

    * Skip official support for python v2 (remove from text matrix)

    * NEW: ``./manage.py template_info``

    * NEW: ``./manage.py cms_page_info``

    * CmsPageCreator API changed:

        * the string ``CmsPageCreator.placeholder_slot`` changed to iterable ``CmsPageCreator.placeholder_slots``

        * add ``placeholder`` argument in ``CmsPageCreator.get_dummy_text()`` and ``CmsPageCreator.get_add_plugin_kwargs()``

        * Bugfix: use always drafts as parent pages (see also: `https://github.com/divio/django-cms/pull/6126 <https://github.com/divio/django-cms/pull/6126>`_ )

        * add unittests

* v0.4.0 - 18.09.2017 - `compare v0.3.2...v0.4.0 <https://github.com/jedie/django-cms-tools/compare/v0.3.2...v0.4.0>`_ 

    * NEW: `django_cms_tools.models.RelatedPluginModelMixin <https://github.com/jedie/django-cms-tools/blob/master/django_cms_tools/models.py>`_

    * NEW: `DummyPageGenerator <https://github.com/jedie/django-cms-tools/blob/master/django_cms_tools/fixtures/pages.py>`_

    * NEW: `ModelPermissionMixin <https://github.com/jedie/django-cms-tools/blob/master/django_cms_tools/permissions.py>`_

    * misc updates/changes

* v0.3.2 - 22.05.2017 - `compare v0.3.1...v0.3.2 <https://github.com/jedie/django-cms-tools/compare/v0.3.1...v0.3.2>`_ 

    * Bugfix in ``{% el_pagination_placeholder %``} and render all plugins after the tag.

* v0.3.1 - 04.05.2017 - `compare v0.3.0...v0.3.1 <https://github.com/jedie/django-cms-tools/compare/v0.3.0...v0.3.1>`_ 

    * Bugfix in ``CmsPageCreator``: evaluate lazy "language name" translation in the right language (e.g.: e.g.: ``settings.LANGUAGE_CODE`` is not "en")

* v0.3.0 - 27.04.2017 - `compare v0.2.0...v0.3.0 <https://github.com/jedie/django-cms-tools/compare/v0.2.0...v0.3.0>`_ 

    * NEW: *django_cms_tools.fixtures.pages.***CmsPageCreator** for creating Django CMS pages in test fixtures

* v0.2.0 - 10.04.2017 - `compare v0.1.2...v0.2.0 <https://github.com/jedie/django-cms-tools/compare/v0.1.2...v0.2.0>`_ 

    * Experimental: Filer management commands: 'image_info' and 'replace_broken'

* v0.1.2 - 28.03.2017 - `compare v0.1.1...v0.1.2 <https://github.com/jedie/django-cms-tools/compare/v0.1.1...v0.1.2>`_ 

    * Change: create pages with translated language name

* v0.1.1 - 27.03.2017 - `compare v0.1.0...v0.1.1 <https://github.com/jedie/django-cms-tools/compare/v0.1.0...v0.1.1>`_ 

    * Fix pypi package stuff

* v0.1.0 - 27.03.2017

    * NEW: create_cms_index_pages

    * NEW: create_cms_plugin_page

-----
links
-----

+----------+-----------------------------------------------+
| Homepage | `http://github.com/jedie/django-cms-tools`_   |
+----------+-----------------------------------------------+
| PyPi     | `https://pypi.org/project/django-cms-tools/`_ |
+----------+-----------------------------------------------+

.. _http://github.com/jedie/django-cms-tools: http://github.com/jedie/django-cms-tools
.. _https://pypi.org/project/django-cms-tools/: https://pypi.org/project/django-cms-tools/

--------
donation
--------

* `paypal.me/JensDiemer <https://www.paypal.me/JensDiemer>`_

* `Flattr This! <https://flattr.com/submit/auto?uid=jedie&url=https%3A%2F%2Fgithub.com%2Fjedie%2Fdjango-cms-tools%2F>`_

* Send `Bitcoins <http://www.bitcoin.org/>`_ to `1823RZ5Md1Q2X5aSXRC5LRPcYdveCiVX6F <https://blockexplorer.com/address/1823RZ5Md1Q2X5aSXRC5LRPcYdveCiVX6F>`_

