Metadata-Version: 2.4
Name: django-cms-qe
Version: 4.6.0
Summary: Django CMS Quick & Easy provides all important modules to run new page withouta lot of coding. Aims to do it very easily and securely.
Home-page: https://websites.pages.nic.cz/django-cms-qe
Author: CZ.NIC, z.s.p.o.
Author-email: kontakt@nic.cz
License: BSD License
Keywords: django,cms
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Framework :: Django
Classifier: Framework :: Django :: 3.2
Classifier: Framework :: Django :: 4.0
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: django-cms<6,>=4.1
Requires-Dist: django-filer~=3.3
Requires-Dist: djangocms-admin-style~=3.3
Requires-Dist: djangocms-alias<4,>=2.0
Requires-Dist: djangocms-frontend~=2.2
Requires-Dist: djangocms-text~=0.9
Requires-Dist: djangocms-versioning~=2.4
Requires-Dist: easy-thumbnails[svg]~=2.10
Requires-Dist: argon2-cffi~=25.1
Requires-Dist: django-axes~=8.0
Requires-Dist: django-constance~=4.3
Requires-Dist: django-csp~=4.0
Requires-Dist: django-import-export~=4.3
Requires-Dist: django-tablib~=3.2
Requires-Dist: djangocms-file~=3.0
Requires-Dist: djangocms-deleted-pages~=1.0
Requires-Dist: djangocms-googlemap~=2.2
Requires-Dist: djangocms-icon~=2.1
Requires-Dist: djangocms-link~=5.1
Requires-Dist: djangocms-picture~=4.1
Requires-Dist: djangocms-render-context~=1.1
Requires-Dist: python-environ~=0.4
Requires-Dist: django-haystack~=3.3
Requires-Dist: djangocms-aldryn-forms[captcha]~=8.3
Requires-Dist: djangocms-aldryn-search~=3.1
Requires-Dist: mailchimp3~=3.0
Requires-Dist: whoosh~=2.7
Requires-Dist: Markdown~=3.9
Requires-Dist: django-filter~=25.2
Requires-Dist: django-rest-knox~=5.0
Requires-Dist: djangorestframework~=3.16
Requires-Dist: drf-spectacular~=0.28
Provides-Extra: dev
Requires-Dist: django-simple-captcha~=0.6; extra == "dev"
Requires-Dist: django-debug-toolbar~=6.0; extra == "dev"
Requires-Dist: django-extensions~=4.1; extra == "dev"
Provides-Extra: test
Requires-Dist: flake8; extra == "test"
Requires-Dist: isort; extra == "test"
Requires-Dist: mypy; extra == "test"
Requires-Dist: pylint; extra == "test"
Requires-Dist: pylint-django; extra == "test"
Requires-Dist: pytest~=8.4; extra == "test"
Requires-Dist: pytest-cov~=7.0; extra == "test"
Requires-Dist: pytest-data~=0.4; extra == "test"
Requires-Dist: pytest-django~=4.11; extra == "test"
Requires-Dist: pytest-env~=1.2; extra == "test"
Requires-Dist: pytest-pythonpath~=0.7; extra == "test"
Requires-Dist: pytest-sugar~=1.1; extra == "test"
Requires-Dist: pytest-watch~=4.2; extra == "test"
Requires-Dist: PyVirtualDisplay~=3.0; extra == "test"
Requires-Dist: webdriverwrapper~=2.8; extra == "test"
Requires-Dist: django-simple-captcha~=0.6; extra == "test"
Requires-Dist: testfixtures; extra == "test"
Requires-Dist: tzdata; extra == "test"
Provides-Extra: build
Requires-Dist: Jinja2<3.1.0; extra == "build"
Requires-Dist: Sphinx==1.8.5; extra == "build"
Provides-Extra: psql
Requires-Dist: psycopg2; extra == "psql"
Provides-Extra: mysql
Requires-Dist: mysqlclient~=2.2; extra == "mysql"
Provides-Extra: newsblog
Requires-Dist: djangocms-aldryn-newsblog~=4.0; extra == "newsblog"
Provides-Extra: cms4
Requires-Dist: django-cms~=4.1; extra == "cms4"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Django CMS QE

Django CMS Quick & Easy provides all important modules to run new page
without a lot of coding. Aims to do it very easily and securely.

For more information please read [documentation](<https://websites.pages.nic.cz/django-cms-qe>) or [GitLab](https://gitlab.nic.cz/websites/django-cms-qe).

## Development

To prepare your dev environment run this command:

    make prepare-dev  (run with apt get update)
    make prepare-env

Caution! It is allowed only Python >= 3.9 due to typing:

    VENV_PYTHON=/usr/bin/python3.9 make prepare-venv

To prepare the explicit python version into the explicit folder:

    VENV_PATH=/home/username/venv VENV_PYTHON=/usr/bin/python3.9 make prepare-venv
    export VENV_PATH=/home/username/venv

To run tests or lint use this commands:

    make test
    make lint

To run only particular test:

    make test=cms_qe_table/tests/test_utils.py::test_get_model_by_table test

To run example use this command:

    make run-example


To call other Django commands:

    make cmd  (List django commands, same like --help)
    make cmd=dbshell cmd
    make cmd='createsuperuser --username=dave --email=dave@rd.foo' cmd

To find more useful commands, run just `make`.

## Upgrade

To upgrade from version `2.2` to version >= `3.0.0`, you can use the [DjangoCMS upgrade plugins](https://gitlab.nic.cz/utils/djangocms-upgrade-plugins) tool.

## Example in Docker

Download example:

    curl https://gitlab.nic.cz/websites/django-cms-qe/-/archive/master/django-cms-qe.zip?path=example --output example.zip

Unzip and go to the example folder:

    unzip example.zip
    cd django-cms-qe*/example/

Build the site image:

    docker compose build

Run website in docker:

    docker compose up -d

See the website at http://localhost:8000/. Login into http://localhost:8000/admin/ as username ``admin`` with password ``admin``.
To run on a different port, specify the PORT parameter:

    PORT=8008 docker compose up -d

Please wait a moment before browsing the website. It takes a while for all migrations to be completed and data to be loaded.
You can monitor the status of this process in the log:

    docker compose logs -f web

Stop the website:

    docker compose down
