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:
Just run the bootstrap file to get a working virtualenv with everything installed.
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! ;)
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-hypernode.com/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:
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
-
Update: pillow, django-debug-toolbar, django-compressor, sqlparse
-
switch from django-cms v3.2 to v3.3
move from cmsplugin-htmlsitemap to djangocms-htmlsitemap
WARNING: A migration will not be done! You have to migrate by hand and delete the database table cmsplugin_htmlsitemap_htmlsitemap ;)
-
rewrite to use Django-CMS
-
v1.6.x is the last PyLucid release that doesn’t based on Django-CMS
switch from django 1.4 to 1.6
-
switch from django 1.3 to 1.4
-
PyLucid.org used the first v0.8 Beta Version who used django
-
first Version, only CGI script ListOfNewSides for lucidCMS (PHP based)
(Not all old releases are listed.)
For older PyLucid history, look at:
donation
links
Homepage |
|
Sourcecode @ GitHub |
|
Python Package Index |
|
IRC |
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 PyLucid-2.1.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 93b51c31c63db03f5b26370c0df1f3ab8c1241bb8485e78c5b38feb2c88c5cb9 |
|
MD5 | bdb77a46b95025f836a30a7b3d84b0f2 |
|
BLAKE2b-256 | 053e1b2a266fe4cc19cd4b881d8dfe40bce030ab49147933f2128b321d8b75ee |