Project Plan

Here is a summary of the project plan for the Python Web Project.

The basic aim is to create a set of modules that make it simple to create data driven websites and produce documentation and tutorials to make it easy to learn.

There are three main parts to programming side of things:

  1. Creating the libraries for session handling, templating authorisation handling etc
  2. Developing a poweful database layer that is both simple to use and still gives the developer full control at the SQL level if required.
  3. Developing a simple, flexible framework of applications so that users don't have to re-implement basic features such as adding or removing users or changing passwords.

Creating the Libraries

This is complete. Cheetah is used for the templating, libxml and libxslt used for the XML layer, Python Imaging Library is used for the image support. Form, session, auth, error handling and email sending modules have been written. There are also utilities for stripping HTML, prinitng tables of data to a console and more. There is also a datetime module for compatibility with Python < 2.3.

Developing the Database Layer

The database layer is a core component of the system. A natural choice would be SQLObject but instead a new database layer has been written with both an Object-Relational Mapper and a Database Abstraction Layer. The ORM integrates with the web.form module to automatically produce HTML forms for manipulating database information making developing data-driven websites extrememly easy.

Developing the Framework

The next major stage is to refactor the existing modules to make use of the Web Server Gateway Interface. This should be completed fairly soon and then work can begin on producing core-applications that developers can simply drop into their own applications to add functionality. Examples include code to add or remove users or to components that let you add/edit/remove data from a databse handling all the necessary stages for you.

 

Description Progress

First technology release of the modules:

  • Specification of the modules completed with the intention that the API should not change too much in future versions
  • Complete draft of Module Reference and start of the rest of the documentation
  • Announcement of the project to the Python web-sig and db-sig mailing lists for feedback and comments
Complete
With the help of the Python community, implement web.database drivers for most current DB-API 2.0 compliant modules. Develop a pure Python SQL Database and a layer similar to JDBC to make database programming simple. Currently MySQL, SQLite, ODBC and Gadfly are supported. Version one of the Python Database Interface Specification has been implemented. Version two is being designed. The pure Python SQL database engine is in alpha.

Define an API similar to that planned for Zope/Quixote to enable simple component programming in a CGI environment

Implement the WSGI and refactor applications for the WSGI.

Work completed on a basic servlet architecture for the 0.5.0 release. This has been stopped in favour of implementing the WSGI PEP. Work has started on refactoring the modules for this approach.
Use the modules to write a CMS, Wiki, Photo gallary, address book system, web mail client etc to be distributed with the modules. Certain components already exist, others are being planned.
Collate binary distributions created by users of the 0.5 release, package up as a 0.6 stable release in rpm/tgz/zip/exe. Also create the PythonWeb.org Python distribution to allow users to install Python, the modules, the documentation and necessary tools all in one go. Being planned