pycms is a minimalist component based web content management system built upon CherryPy.
All the goodies of Plone/Zope: Python instead of a PHP security mess, no MySQL can of worms, clean separation of code and content, runs nicely behind a web server / cache / load balancer.
Plain text storage of all site contents and settings in JSON files.
Effortless theming. Design an HTML page in your favourite editor, put in some
$placeholder_variables, and upload. pycms cares for the rest.
Small memory footprint. We're talking about 13 MB physical memory.
pycms is aiming at frustrated Plone users (and is being developed by one). Plone is an excellent CMS, but it has several severe shortcomings:
Plone/Zope is extremly difficult to manage, especially to update, when relying on unstable third-party plugins. Yes, one should not use them, yet we all do, since those extensions often add vital functionality.
Plone/Zope puts all contents into an object database. Accessing and changing the raw data, bypassing the CMS, is only possible via cumbersome command-line work. And we're not talking at all about manually fixing broken plugins in the database.
Theming Plone is a mess. To reproduce a preconceived design in Plone, long-winded CSS hacks along with a combination of interface settings and template customisations are required.
Plone/Zope has a comparatively large memory footprint. This can be an issue on slim virtual servers.
Plone is still a great system. Its security track record, internationalisation, and workflow tools are awesome. If you have a big site with complex requirements, go for it.
Python > 3.0 http://www.python.org
There is no installation necessary. Simply run
python3 -m pycms.run
from the pycms folder.
Command Line Options
Usage: pycms.py [options] Options: --version show program's version number and exit -h, --help show this help message and exit -p PORT, --port=PORT The port to listen on. Default: 8000 -t THREADS, --threads=THREADS The number of worker threads to start. Default: 10 -a, --autoreload Turn on CherryPy's auto reloading feature.
pycms templates are plain and valid HTML files, for the ease of editing.
<link> tags must be the first tags on a single line in the HTML
pycms recognises special elements wrapped in HTML comments like this:
<!-- begin TYPE --> ... HTML, possibly with $variables ... <!-- end TYPE -->
Where TYPE is one of
'wrappednode' supports the
$content placeholder variable.
<h2> <a style="text-decoration:none;" href="URI">TITLE</a> </h2> <p style="font-size:80%">CREATOR, DATE</p> <p style="font-style:italic;">ABSTRACT</p> <div>CONTENT</div>
Wrap BlogNodes in a
div to control their rendering via CSS.
<div class="linklist"> <ul> <li><a href="URI">TITLE</a></li> ... </ul> </div>
General Page Footer
<p id="footer" style="font-size:8pt;text-align:center;"> Powered by <a href="http://florian-berger.de/en/software/pycms">pycms</a> </p>
To read the API documentation, open a shell / DOS window, navigate to the pycms directory, and run
You can create a HTML version using
pydoc -w pycms
pycms is licensed under the GPL. See the file COPYING for details.
Python Package Index: http://pypi.python.org/pypi/pycms
(c) Florian Berger
Releases are signed with my OpenPGP key.
Released on 24 June 2012.
This is the first sketch of pycms, introducing classes for Node, WrappedNode, Linklist, Page, Dublin Core Node, BlogPage, and BlogNode. pycms uses JSON files for storage, deploys the logging and optparse modules, and can emit RSS 2.0 feeds. cx_Freeze support allows for the creation of executables.
pycms-0.1.0.zip (MD5 5003b1cfba0488968ddb2383bbc1517b)
pycms-0.1.0-linux-x86-libc6.zip (MD5 b1edffd65c64f83688a2eed83a2fea34)
Older releases are available upon request.