[albatross-users] Albatross 1.36 released

Andrew McNamara andrewm at object-craft.com.au
Mon Mar 19 17:01:08 EST 2007


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 5300 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 as CGI, FastCGI, mod_python or
    a pure python HTTP server 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 six
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,
FastCGI, mod_python, or BaseHTTPServer Request class.  It should be
possible to develop a Request class for Medusa or Twisted to allow
applications to be deployed on those platforms with minimal changes.

Albatross comes with over 180 pages of documentation.  HTML and PDF
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

CHANGES SINCE 1.35:
==================-

New Features
------------

* A "vars" attribute has been added to <al-for> - this inserts the
  iterator value into the local namespace. The iterator value was
  previously only accessible via the iterator value() method.

* <al-for> now loops over sequences using the iterator protocol by
  default. The previous behaviour of indexing the sequence is retained
  where pagination or columns are requested.

* New <al-setdefault> tag which allows macros to define default values
  for their arguments (suggested by Greg Bond).

* Macro expansion can now specify macro arguments via attributes on the
  <al-expand> tag (suggested by Greg Bond).

* Added get_param() method to Request classes, which deployment method
  agnostic access to http "environment" variables.

Functional Changes
------------------

* NameRecorderMixin no longer falls back to merging all request
  fields if no __albform__ field is present. Applications using the
  NameRecorderMixin and GET-style requests will need to explicitly merge
  relevent fields with the ctx.merge_vars(...) method.

* Pickles embedded in hidden fields are now signed using the HMAC-SHA1
  algorithm (was MD5).

* The experimental FastCGI driver included in version 1.35 now becomes
  the default. The old driver has been renamed fcgiappold. This driver
  implements the FastCGI protocol itself, rather than depending on an
  external module.

Bug Fixes
---------

* If the <al-option> tag was not immediately enclosed within an
  <al-select> tag, it would be silently ignored. <al-option> now works
  within containing flow control tags such as <al-for> or <al-if>,
  and supports attributes for dynamically setting value and label.

* Communication with the session server has been made more robust. EINTR
  is handled, as are partial reads and writes, and requests are restarted
  if the socket closes.

* Mixing radio inputs with other inputs of the same name did not raise
  an exception (reported by Michael Neel).

* fixed FCGI_MAX_DATA, which was incorrect due to an operator precedence
  mistake. Found by Tom Limoncelli.

Miscellaneous Changes
---------------------

* Clean up and replace many pre-python 2.2 constructs.

* Many new tests have been added, and existing tests restructured.

-- 
Andrew McNamara, Senior Developer, Object Craft
http://www.object-craft.com.au/



More information about the Albatross-users mailing list