This project is my boilerplate codebase I created to integrate some Python components with the goal of publishing OpenERP content on the web.
This stack is composed of:
- CherryPy to serve web content,
- it use Mako for HTML templating,
- Formish for HTML form generation and validation,
- OOOP to talk to OpenERP server via web services.
This project contains the experiments I did while working at Smile, when I explored the possibility of integrating these components. This code was a proof-of-concept that we leveraged later for a highly specific OpenERP project.
Because of the highly experimental nature of this project, it contains lots of stupid and failed attempts. The whole code base should be thoroughly cleaned up before it can be considered reusable.
Install system dependencies using your favorite package manager. Here is the example for an Ubuntu machine:
$ apt-get install python-dev
Initialize the buildout environment:
$ python ./bootstrap.py --distribute
Run buildout itself:
Run the following command to run the server:
Go to the following URL in your browser:
Here is a list of useful external documentation and references to help you work in this environment:
- CherryPy Tools code snippets: http://tools.cherrypy.org/wiki/TitleIndex
- Some CherryPy notes: http://helpful.knobs-dials.com/index.php/CherryPy
- An example of CherryPy application: http://bitbucket.org/Lawouach/twiseless
- Mako documentation: http://www.makotemplates.org/docs/
- Formish documentation: http://ish.io/embedded/formish/
- Formish examples: http://test.ish.io/
- OOOP examples: http://www.slideshare.net/raimonesteve/connecting-your-python-app-to-openerp-through-ooop
Profile the code with CherryPy built-in methods ?
Add a CSS compressor and combinator to save few bytes and queries. See http://blog.toms-projekte.de/?p=33 for inspiration.
Add the hash of the compiled.js file to its name (force cache invalidation).
Release dottedish 0.6.1 to Pypi and remove our ugly patch.
Use consistent localized dates accross datepickers, HTML, formish and OpenERP.
Update formish to make its internal messages translatable (errors, etc...).
Make a bug report to formish regarding multi-checkbox widget data deserialization (see: http://github.com/kdeldycke/cherrypy_mako_formish_ooop_boilerplate/commit/1ce33061c8f33a18c73c285021e69477fca0f50c ) ? Here are some relevent debug messages:
formish.Sequence(name='option_list', attr=schemaish.Sequence(schemaish.Integer())) schemaish.Sequence(schemaish.Integer()) schemaish.Integer() >
Clean and tidy up all that crappy code.
Use CherryPy tools decorator to factorize code.
Leverage CherryPy cache tools. Example: http://www.cherrypy.org/wiki/Caching and http://docs.cherrypy.org/dev/refman/lib/caching.html
Add aggressive caching of static images.
This code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
For full details, please see the file named COPYING in the top directory of the source tree. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
This tool uses external softwares, scripts, libraries and artworks:
OOOP Copyright (c) 2010-211, Pedro Gracia <email@example.com>, http://www.impulzia.com Released under the GNU GPL v3 license. Source: http://github.com/lasarux/ooop Crystal Project Icons Copyright (c) 2006-2007, Everaldo Coelho <firstname.lastname@example.org>, http://www.everaldo.com Released under the LGPL license. Source: http://www.kde-look.org/content/show.php/Crystal+Project?content=60475 Buildout's bootstrap.py Copyright (c) 2006 Zope Corporation and Contributors Distributed under the Zope Public License, version 2.1 (ZPL). Source: http://svn.zope.org/repos/main/zc.buildout/trunk/bootstrap/bootstrap.py