This Django CMS enable you to create and administrate hierarchical pages in a simple and powerful way.
Django page CMS is based around a placeholders concept. A placeholder is special template tag that you use in your page templates. Every time you add a placeholder in your template a field dynamically appears in the page admin.
The project repository code repository is found at this address: http://github.com/batiste/django-page-cms
This admin interface is no up to date, but could give you an idea of what the software is doing:
- admin : http://pagesdemo.piquadrat.ch/admin/
- frontend : http://pagesdemo.piquadrat.ch/pages/
- Automatic creation of localized placeholders (content area) in admin by adding placeholders tags into page templates.
- Django admin application integration.
- Multilingual support.
- Search indexation with Django haystack.
- Fine grained rights management (publisher, hierarchy manager, language manager).
- Rich Text Editors are directly available.
- Page can be moved in the tree in a visual way.
- The tree can be expanded/collapsed. A cookie remember your preferences.
- Possibility to specify a different page URL for each language.
- The frontend example provide a basic “edit in place” feature.
- Directory-like page hierarchy (page can have the same name if they are not in the same directory).
- Every page can have multiple alias URLs. It’s especially useful to migrate websites.
- Possibility to integrate 3th party apps.
Here is the list of features you can enable/disable:
- Revisions,
- Image placeholder,
- File browser with django-filebrowser,
- Support for future publication start/end date,
- Page redirection to another page,
- Page tagging,
- User input sanitizer (to avoid XSS),
- Sites framework
- Django 1.1.1, Django 1.0 with older release (1.0.5)
- Python 2.3.
- django-haystack if used
- django-authority for per object rights management.
- django-mptt-2
- django-tagging (if PAGE_TAGGING = True)
- html5lib (if PAGE_SANITIZE_USER_INPUT = True)
- django-tinymce (if PAGE_TINYMCE = True)
- Django page CMS is shipped with jQuery.
- Django page CMS works well with django-staticfiles
- Compatible with MySQL, PostgreSQL, SQLite3, some issues are known with Oracle.
Note
For install instruction go to the Installation section
I recommend to create a clone on github and make your modifications in your branch. There is a things that is nice to do:
- Add your name to the AUTHORS file.
- Follow the pep08, and the 79 characters rules.
- Add new features in the doc/changelog.rst file.
- Document how the user might use a new feature.
- It’s better if a new feature is not activated by default but with a new setting.
- Be careful of performance regresssion.
- Write tests so the test coverage stay over 90%.
- Every new CMS setting should start with PAGE_<something>
- Every new template_tag should start with pages_<something>
To test this CMS checkout the code with git:
$ git clone git://github.com/batiste/django-page-cms.git django-page-cms
Install the dependencies:
$ sudo easy_install pip
$ wget -c http://github.com/batiste/django-page-cms/raw/master/requirements/external_apps.txt
$ sudo pip install -r external_apps.txt
And then, run the development server:
$ cd example/
$ python manage.py syncdb
$ python manage.py build_static
$ python manage.py manage.py runserver
Django Page CMS try to keep the code base stable. The test coverage is higher than 80% and we try to keep it this way. To run the test suite:
python setup.py test
Note
If you are not admin you have to create the appropriate permissions to modify pages. After that you will be able to create pages.
Django page CMS include a image placeholder for basic needs. For a more advanced files browser you could use django-filebrowser:
Once the application installed try to register the FileBrowseInput widget to make it available to your placeholders.
This application is available in English, German, French, Spanish, Danish, Russian and Hebrew.