Skip to main content

PyLucid CMS

Project description

about PyLucid

PyLucid is an Open Source web content management system written in Python using Django-CMS.

Since the v2.0 rewrite, PyLucid is more a alternative for djangocms-installer

The goal is to simplify the Django-CMS setup:

  1. Just run the bootstrap file to get a working virtualenv with everything installed.

  2. run pylucid_installer cli program to create a django-CMS page instance

You should not use PyLucid in production, until v2.x is used on pylucid.org ;)

Try, fork and contribute! ;)

Coverage Status on coveralls.io

coveralls.io/r/jedie/PyLucid

Build Status on travis-ci.org

travis-ci.org/jedie/PyLucid

Requirements Status on requires.io

requires.io/github/jedie/PyLucid/requirements/

install

prepare

The Pillow (PIL fork) doesn’t provide binaries for Linux. Make sure you have Python’s development libraries installed. e.g.:

$ sudo apt-get install python3-dev libjpeg-dev libfreetype6-dev

more info here: https://pillow.readthedocs.org/en/latest/installation.html

You also need the development packages of libxml2 and libxslt for lxml

bootstrap PyLucid

# download bootstrap file:
/home/FooBar$ wget https://github.com/jedie/PyLucid/raw/develop/pylucid-boot.py

# Create virtualenv with all needed packages:
/home/FooBar$ python3 pylucid-boot.py ~/PyLucid_env

Now you have a virtual environment with all existing packages.

create page instance

You can create a new page instance with the pylucid_installer cli programm:

# Go into created virtualenv:
/home/FooBar$ cd ~/PyLucid_env

# activate the env:
~/PyLucid_env $ source bin/activate

# Create a page instance:
(PyLucid_env) ~/PyLucid_env $ pylucid_installer --dest=~/page_instance --name=MyCoolSite

# Go into created page instance
(PyLucid_env) ~/PyLucid_env $ cd ~/page_instance/

# Create cache tables
(PyLucid_env) ~/page_instance $ ./manage.py createcachetable

# init database
(PyLucid_env) ~/page_instance $ ./manage.py migrate

# Create a super user
(PyLucid_env) ~/page_instance $ ./manage.py createsuperuser

# run developer server:
(PyLucid_env) ~/page_instance $ ./manage.py runserver

Info: You can also create more than one page instance! All page instance will use the same environment.

optional packages

Before any pip install, go to your virtual env and activate it! e.g.:

/home/FooBar$ cd ~/PyLucid_env
~/PyLucid_env $ source bin/activate

MySQL DB API Driver:

(PyLucid_env) ~/PyLucid_env $ pip install mysqlclient

see also: Django database docs.

or use django-cymysql:

(PyLucid_env) ~/PyLucid_env $ pip install cymysql django-cymysql

and set ‘ENGINE’: ‘mysql_cymysql’

FastCGI wrapper for WSGI applications:

(PyLucid_env) ~/PyLucid_env $ pip install flipflop

see also: https://pypi.python.org/pypi/flipflop

DjangoCMS page permissions

The default permission settings is CMS_PERMISSION = True This settings enabled a fine permission system. To create a normal CMS user (and not a superuser) do the following steps:

  • create a superuser

  • create a user group and add add needed permission. e.g.: everything except models from the apps: admin, auth, content_types, reversion, session, sites

  • create a new user with staff rights and add the created user group

  • create a first page as superuser

  • from cms toolbar click on: Page / **Permissions …**

  • under Page permissions add the created user group

With this base setup you can add normal staff user which can create/edit/delete pages.

An easier way is to disable CMS_PERMISSION but then you will lost some functionality. e.g.:

  • create pages that are only visibly for some users.

  • deny editing pages for some users.

How to enable multisite support

With multisite support you can use one Django app to serve multiple domains.

It used the two projects:

Install the needed packages:

/home/FooBar$ cd ~/PyLucid_env
~/PyLucid_env $ source bin/activate
(PyLucid_env) ~/PyLucid_env $ pip install djangocms-multisite

Un-comment the multisite lines at the end of your page instance settings file.

How to start ‘design demo’

You can easy test existing settings.CMS_TEMPLATES with the included django app pylucid_design_demo

The Features:

  • preconfigurated: Start the django development server without any setting changes

  • use a temp. SQLite database

  • predefined user/password

  • precreated dummy pages

  • easy switch between all CMS_TEMPLATES via menu

To start the development server, do this:

/home/FooBar$ cd ~/PyLucid_env
~/PyLucid_env $ source bin/activate
(PyLucid_env) ~/PyLucid_env $ $ cd src/pylucid/
(PyLucid_env) ~/PyLucid_env/src/pylucid$ ./run_design_demo.py

It looks like this:

20160722_PyLucidDesignDemoApp01.PNG


unittests

# go to your virtual env and activate it:
/home/FooBar$ cd ~/PyLucid_env
~/PyLucid_env $ source bin/activate
(PyLucid_env) ~/PyLucid_env $ cd src/pylucid/

# run the tests:
(PyLucid_env) ~/PyLucid_env/src/pylucid $ ./setup.py test

PyLucid v1 migration

Use use the Multiple databases feature to migrate a old v1 installation: e.g.:

DATABASES = {
    'default': { # New, empty database for PyLucid v2 data
        ...
    },
    'legacy': { # Your old database with existing PyLucid v1 data
        ...
    }
}

You must activate some settings:

  • pylucid_migration, pylucid_todo in INSTALLED_APPS

  • Activate a ‘legacy’ named second database with the old PyLucid v1 data

  • Activate DATABASE_ROUTERS

(All parts exists in the example project settings ;) )

commands for migration, e.g.:

# create missing models (e.g. todo app)
(PyLucid_env) ~/page_instance $ ./manage.py migrate

# migrate old pages to django-cms:
(PyLucid_env) ~/page_instance $ ./manage.py migrate_pylucid --inline_script --sites=ALL

# migrate old blog entries to djangocms-blog:
(PyLucid_env) ~/page_instance $ ./manage.py migrate_blog --inline_script --sites=ALL

# export existing designs into filesystem
(PyLucid_env) ~/page_instance $ ./manage.py export_designs

NOTE: With the argument –inline_script all <script> areas would be migrate to a html-markup entry. So all <script> areas are active after migration. Without –inline_script all <script> areas will be result in escaped text.

All unsupported lucidTag entries will be migrate to the “ToDoPlugin”. SO the origin code is not away, but will be not visible for anonymous users.

upgrade the environment

# go to your virtual env and activate it:
/home/FooBar$ cd ~/PyLucid_env
~/PyLucid_env $ source bin/activate

# Upgrade pip:
(PyLucid_env) ~/PyLucid_env $ pip install --upgrade pip

# Update PyLucid
(PyLucid_env) ~/PyLucid_env $ cd src/pylucid/
(PyLucid_env) ~/PyLucid_env/src/pylucid/ $ git pull

# Upgrade all packages:
(PyLucid_env) ~/PyLucid_env/src/pylucid/ $  pip install --upgrade -r requirements/normal_installation.txt

dev info

Currently the base files are a mix of:

TODO

migration:

  • migrate User Profile data

  • migrate the information pagetree.permitViewGroup, pagemeta.permitViewGroup and pagetree.permitEditGroup

Compatible Matrix

PyLucid

Django-CMS

Django

Python

v2.1

v3.3

v1.8 LTS

3.4, 3.5

v2.0

v3.2

v1.8 LTS

3.4, 3.5

<=v1.6

v1.6

2.6, 2.7

Release History

(Not all old releases are listed.)

For older PyLucid history, look at:

donation

Project details


Release history Release notifications | RSS feed

This version

2.1.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyLucid-2.1.1.tar.gz (464.5 kB view details)

Uploaded Source

Built Distributions

PyLucid-2.1.1-py3.5.egg (498.9 kB view details)

Uploaded Source

PyLucid-2.1.1-py2.py3-none-any.whl (509.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file PyLucid-2.1.1.tar.gz.

File metadata

  • Download URL: PyLucid-2.1.1.tar.gz
  • Upload date:
  • Size: 464.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for PyLucid-2.1.1.tar.gz
Algorithm Hash digest
SHA256 7c2e04a6ec4ab9314d0f382f2ef19fe6b9c838ce5363eeb1dc1313d608d4c2fd
MD5 cf3ea0f59987889df4ff1b3d97bb720b
BLAKE2b-256 7f3ddfbe656500d78cc6885215ed660cdb522fdba2100112825d692282480809

See more details on using hashes here.

File details

Details for the file PyLucid-2.1.1-py3.5.egg.

File metadata

  • Download URL: PyLucid-2.1.1-py3.5.egg
  • Upload date:
  • Size: 498.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for PyLucid-2.1.1-py3.5.egg
Algorithm Hash digest
SHA256 33808d180d0ccef5b8e44436fb9b86714ff529738e0bd3be0d7f6f9845fe4aea
MD5 d769f6190022178f8ea4f4878c006580
BLAKE2b-256 6ab346b74fb39464d9fd2328772a437c6fa4ea386f7e54e0b012d4af54feab4a

See more details on using hashes here.

File details

Details for the file PyLucid-2.1.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for PyLucid-2.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 93b51c31c63db03f5b26370c0df1f3ab8c1241bb8485e78c5b38feb2c88c5cb9
MD5 bdb77a46b95025f836a30a7b3d84b0f2
BLAKE2b-256 053e1b2a266fe4cc19cd4b881d8dfe40bce030ab49147933f2128b321d8b75ee

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page