The Zope Web Framework
Table of Contents
BlueBream is a web framework written in Python programming language. BlueBream is a free/open source software, owned by the Zope Foundation, licensed under the Zope Public License (BSD like, GPL compatible license). BlueBream was previously known as Zope 3.
A few of the features which distinguish BlueBream among Python web frameworks.
- BlueBream is built on top of the Zope Tool Kit (ZTK), a distillation of decades of experience in meeting demanding requirements for stable, scalable software.
- BlueBream leverages the power of Buildout a build system written in Python.
- BlueBream uses the ZODB transactional object database, providing extremely powerful and easy to use persistence.
- BlueBream uses ZCML, an XML based configuration language for registering components, providing limitless flexibility. If you don’t need the power of ZCML and the complexity it adds, try Grok, which adds a layer replacing the declarative configuration of ZCML with conventions and declarations in standard Python.
- BlueBream features the Zope Component Architecture (ZCA) which implements Separation of concerns to create highly cohesive reusable components (zope.component).
- BlueBream supports WSGI using Paste, PasteScript, and PasteDeploy.
- BlueBream includes a number of compenents which provide well tested
implementation of common requirements. A few are of these are:
- zope.publisher publishes Python objects on the web, it is geared towards WSGI compatibility
- zope.security provides a generic mechanism supporting pluggable security policies
- zope.testing and zope.testbrowser offer unit and functional testing frameworks
- zope.pagetemplate is an XHTML-compliant templating language
- zope.schema and zope.formlib provide a schema engine and automatic form generation machinery
$ easy_install bluebream
Internet access to PyPI is required to perform installation of BlueBream.
The bluebream distribution provides a template based project creation based on PasteScript template. Once BlueBream is installed, run paster command to create the project directory structure. The create sub-command provided by paster will show a wizard to create the project directory structure.
$ paster create -t bluebream
This will bring a wizard asking details about your new project. If you provide package name, namespace package name and version number, you will get a working application which can be modified further. The project name will be used as the name of egg. You can also change the values provided later.
The project name can be give given as a command line argument:
$ paster create -t bluebream sampleproject
The name of namespace package also can be given from the command line:
$ paster create -t bluebream sampleproject namespace_package=mycompany
If you provide an option from the command line, it will not be prompted by the wizard. The other variables are give below, you may be give the values from command line, if required:
- interpreter – Name of custom Python interpreter
- version – Version (like 0.1)
- description – One-line description of the package
- long_description – Multi-line description (in reST)
- keywords – Space-separated keywords/tags
- author – Author name
- author_email – Author email
- url – URL of homepage
- license_name – License name
- zip_safe – True, if the package can be distributed as a .zip file othewise False.
If you are in a hurry, you can simply press Enter/Return key and change the values later. But it would be a good idea, if you provide a good name for your project.
The generated package is bundled with Buildout configuration and the Buildout bootstrap script (bootstrap.py). First you need to bootstrap the buildout itself:
$ cd sampleproject $ python2.6 bootstrap.py
The bootstrap script will install zc.buildout and setuptools package. Also, it will create the basic directory structure. Next step is building the application. To build the application, run the buildout:
The buildout script will download all dependencies and setup the environment to run your application.
The most common thing you need while developing application is running the server. BlueBream use paster command provided by PasteScript to run the WSGI server. To run the server, you can pass the PasteDeploy configuration file as the argument to serve sub-command as given here:
$ ./bin/paster serve debug.ini
Once you run the server, you can access it here: http://localhost:8080/ . The port number (8080) can be changed from the PasteDeploy configuration file (debug.ini).
The second most common thing must be running the test cases. BlueBream by create a testrunner using the zc.recipe.testrunner Buildout recipe. You can see a test command inside the bin directory. To run test cases, you can run this command:
Sometimes you may want to get the debug shell. BlueBream provides a Python prompt with your application object. You can invoke the debug shell like this:
$ ./bin/paster shell debug.ini
More about the test runner and debug shell will be exaplained in the BlueBream Manual. You can continue reading about BlueBream from the documentation site.
The bugs and issues are tracked at launchpad.
IRC Channel: #bluebream at irc.freenode.net
The source code is managed at Zope reposistory. You can perform a read-only checkout of trunk code like this (Anonymous access):
svn co svn://svn.zope.org/repos/main/bluebream/trunk bluebream
- The summary of bluebream_base template changed to: “A BlueBream project, base template”
- Enable bluebream_simple again. Documentation is available here: http://wiki.zope.org/bluebream/AlternateProjectTemplates
- Use a template to display default page for the root folder
- Use zope.formlib.form.DisplayForm as base class for views instead of zope.publisher.browser.BrowserView
- Sample application add form view name is changed from @@add to @@add_sample_app
- Add links to to BlueBream website & mailing list
- Added license file
- Improve “Usage” section in README.txt
- Include zest.release to prepare release
- Include bluebream_simple template (This will not be released with 1.0a2 as the documentation is not ready yet)
- Move bluebream template code to bluebream_base
- Add static resource directory with CSS to bluebream_base (based on bluebream_simple). The new style applied to main page.
- Use released package distribution versions: http://download.zope.org/bluebream/bluebream-1.0a1.cfg
- Include new packages to site.zcml template:
- zope.app.publisher.xmlrpc (meta.zcml)
- Changed template summary into: A BlueBream project
- Removed Sphinx-PyPI-upload – no more used as the website is moved to http://bluebream.zope.org
- Added zope.traversing.browser from site.zcml in the project template. Ref: http://bit.ly/80xltO
LP #506879: debug shell added. Basic usage:
./bin/paster shell debug.ini
- Use zope ZCML namespace as default in configure.zcml
- Documentation improvements
- Create a sample application by default
- Update version: zope.tales = 3.5.0
- LP #505362: Fix. Main package name is hard-coded as ‘main’
- Change ‘defaultView’ registration location and interface
- LP #505413: Name of default custom Python interpreter should be able to customize
- LP #502819: Main page after a fresh installation
- Removed hello view from template.
- LP #502941: Add trove classifiers.
- Mention all resources in PyPI page.
- LP #503388: Value of “namespace_package” should not be empty string.
- Updated description, added promotional video.
- LP #503301: Work around fix for “empty directory” problem.
- Change author as “BlueBream” team and email to zope-dev list.
- LP #502817: var directory and its subdirectories not exist
- Documentation improvements: added “Usage” section
- Added functional testing support for project
- Sphinx based documentation infrastruture improvements
- LP #502529: Update wizard to ask all package meta to be updated in setup.py
- Fix missing package data. The 0.1.0 releases was broken.
- Improve documentation.
- Initial release.