Albatross 1.00 released

Dave Cole djc at object-craft.com.au
Tue Aug 20 14:53:57 CEST 2002


OVERVIEW

Albatross is a small toolkit for developing highly stateful web
applications.

The toolkit has been designed to take a lot of the pain out of
constructing intranet applications although you can also use Albatross
for deploying publicly accessed web applications.

In slightly more than 2600 lines of Python (according to pycount) you
get the following:

  * An extensible HTML templating system similar to DTML including tags for:
    - Conditional processing.
    - Macro definition and expansion.
    - Sequence iteration and pagination.
    - Tree browsing.
    - Lookup tables to translate Python values to arbitrary template
      text.
  * Application classes which offer the following features:
    - Optional server side or browser side sessions.
    - The ability to place Python code for each page in a dynamically
      loaded module, or to place all page processing code in a single
      mainline.
  * The ability to deploy applications either as CGI or via mod_python
    by changing less than 10 lines of code.

The toolkit application functionality is defined by a collection of
fine grained mixin classes.  Nine different application types and five
different execution contexts are prepackaged, you are able to define
your own drop in replacements for any of the mixins to alter any
aspect of the toolkit semantics.

Application deployment is controlled by your choice of either cgi or
mod_python Request class.  It should be possible to develop a Request
class for FastCGI or Medusa to allow applications to be deployed on
those platforms with minimal changes.

Albatross comes with over 130 pages of documentation.  HTML, PDF and
PostScript formatted documentation is available from the toolkit
homepage.

The toolkit homepage:

        http://www.object-craft.com.au/projects/albatross/

The Albatross mailing list subscription and archives:

	http://object-craft.com.au/cgi-bin/mailman/listinfo/albatross-users

INCOMPATIBLE CHANGES

* When you use FormRecorderMixin you must now specify LIST
  attribute on <AL-INPUT> and <AL-TEXTAREA> tags if more than one
  field in a form has the same name.  This also causes the request
  merging to always place those input values into a list in the local
  namespace regardless of how many values were sent by the browser.
  FieldTypeError is raised when LIST attribute value is inconsistent
  with multiple/singular instances of an input field in a form.

* Tag constructors are now passed the execution context as the first
  argument, which makes them consistent with other methods, and allows
  greater flexibility in code placement.

DETAILED CHANGE LIST

* PageModuleError is raised when a page module is loaded which does not
  define one of page_enter(), page_leave(), page_process() or
  page_display().

* Application merge_request() method now defers browser request
  merging to the execution context.  This allows the RecorderMixin class
  to define the correct request merging process.

* Include filename in template load errors - when templates are loaded
  by any means other than <al-include>, the filename was often not in
  the traceback.

* When you use FormRecorderMixin you must now specify LIST
  attribute on <AL-INPUT> and <AL-TEXTAREA> tags if more than one
  field in a form has the same name.  This also causes the request
  merging to always place those input values into a list in the local
  namespace regardless of how many values were sent by the browser.
  FieldTypeError is raised when LIST attribute value is inconsistent
  with multiple/singular instances of an input field in a form.

* Replaced all relative module imports with absolute imports to avoid
  namespace clashes.

* Several SessionFileAppMixin portability fixes - use "rb" and "wb"
  mode on open of session files for windows portability, and improvements
  to handling of platforms without /dev/urandom.

* albatross.random module renamed to albatross.randompage.

* SessionFileAppMixin now checks that the session-id returned from the
  browser does not contain any filesystem path components that could be
  used to access files outside the session file directory.

* Tag constructors are now passed the execution context as the first
  argument, which makes them consistent with other methods, and allows
  greater flexibility in code placement.

* Macros are now registered at load time, rather than execution
  (to_html) - this allows forward references, and other tricks.

* New "ellipsis" mode for tree iterator, which are a variant of lazy trees
  where nodes at shallower levels are progressively collapsed into
  ellipses as the user opens deeper nodes. The user can reopen the
  collapsed nodes by selecting an ellipsis

* TreeIterators now support get_open_aliases(),
  get_selected_aliases(), set_open_aliases(), set_selected_aliases()
  methods to set and get open and selected nodes for the
  TreeIterator. This allows you to enter a page with tree nodes already
  open or selected, and also to save the state of the tree for future use.

* Added a basic /etc/init.d style rc script for the TCP session
  server. The session server script is now installed to you scripts
  directory (typically /usr/local/bin). Session server component modules
  simpleserver and pidfile are now installed into the albatross module
  directory, along with the rest of albatross.

-- 
http://www.object-craft.com.au





More information about the Python-list mailing list