0.7: svn revision 26535
2005-04-12

Add browse.ptl, with support for browsing down into stored files
that are tar or zip archives.

Add get_module_directory() to dulcinea.util.

Move thumbnail-generation code from attachment.ptl to thumbnail.ptl.

Allow zip files to be uploaded as stored files.

Simplify decoration-related parameters of Interactable mixin class.

Restore reset_password to the profile page.

Remove references to SessionError.

Put revised signin handling in dulcinea.ui.user.util.
Stop dropping userid cookies.
Stop supporting insecure_login.

Add safe_respond() to use for error responses.

Change finish_interrupted_request() to make sure that cookies, set by the
session manager, make it into the response.

Make 'profile' a top-level directory that leads to individual user profiles
through a lookup.

Add a page() utility in dulcinea.ui.util.

Add HUB-based scgi restart to site command.  This is fast, but it does
not always work,


0.6: svn revision 26293
2005-03-07

Use a Dulcinea version of Quixote Directory class.  Instead of using
_q_exports, the new DynamicExportingDirectory classes implement a
get_exports() method, which generates a sequence of
(url_component, attribute_name, crumb, crumb_title) tuples
for the exports.  See dulcinea.ui.directory for the implementation.

Implement RespondNow handling behavior for the Dulcinea Publisher
and use it for redirects, not signed in, invalid query, and 
not found responses.  This is now the only PublishError subclass
provided in Dulcinea. The error-handling changes can be found in
in dulcinea.ui.publisher and dulcinea.ui.errors.

Add a new Table class for rendering data tables that sort by
column.  The Table class supports sorting on the client side or
on the server side.

Make opendb functional when readline is not available.

Use the word "category" everywhere we are talking about Category 
instances.  Stop using "group" for this purpose.

Use not_found(), invalid_query() and access_error() instead of raising
special exceptions.
Use ensure_signed_in instead of NotLoggedInError.

Remove dulcinea.errors.

Make is_running() more portable.

Use format_date() and format_date_time() from local_ui.

Change none_quote() to return '' if the value is false.

Call str on the method name so that method_sort can be called from templates,
where the method name will normally be an htmltext instance.

Use new quixote html_url function to generate url's with querystrings.

Add a general page_loader: see dulcinea.ui.page_loader.
This allows for sancho-style unit tests for a site.

Revise the crumb formatting to include drop-down crumb menus and
a menu of exports from the current Directory.

Expand output of start-apache.py to include the interfaces for each site.

Add a Message-of-the-day capability to DulcineaUser and DulcineaUserUI.

0.5: svn revision 25738
2004-12-09

  * Use Timestamped mixin for Survey, Comment, and Item.

  * 'get_url' -> 'get_local_url'

  * Use Quixote 2.  Make all Quixote namespaces Directory instances.
    Use quixote.server.scgi_server module.

  * Move most of the code from sitecheck.py into dulcinea.traversal.
    Change the behavior so that it does not complain about missing 
    attributes when there is a _q_resolve present.

  * Move utest.py to sancho.
    Add convert.py script in sancho.
    Add utest_* for each test_* in durus/test and dulcinea/lib/test

  * Add a configurable 'base_path' that will be prepended to absolute
    URLs.  Use relative paths when possible.

  * Make stored_file more portable and improve attachment mime type handling.

  * Make DateTimeSelectWidget more resilient to unusual dates.
    datetime.strftime only works for year >= 1900

  * Add a browse page that lists all urls reachable without _q_lookup, and
    makes a little form for each significant _q_lookup that it finds.

  * Make QuestionDatabase persistent.

  * For consistency, change get_*_database() to get_*_db().

  * In site_util, add get_docroot() and change _import_class() to import_class().

  * Remove comma_format and test.  Add a test for csv().

  * Add news.

  * Improve BigMultipleSelectWidget behavior.

  * Remove immutable_list module and test.  Use ImmutableSet instead.

  * Add the ability to disable DulcineaUser.

  * After a successful partial registration, redirect to the newly added
    user's profile, not the login page.

  * Get format_user from local_ui.
    Add experimental DurusDirectory for browsing the durus database.
    The browsing is disabled when is_live() is true.

  * Allow users to sign in using either there user id or email address.
    Add capability to disable login by email address 

  * Rename LazyModule class as SiteModule.
    Protect import of site_config so that it is possible to import from
    dulcinea without any installed site_config (as long as SITE is not set).

  * Ensure absorbed objects get repicked since we bypass the persistence hook

  * Fix sorting on ItemFolder.get_recent_items

  * Create an html2txt() to util module

  * Add interaction logging support.

0.4: svn revision >25025
2004-09-14

  * Revise site_utils to get site configuration information from
    a "site_config.py" module, expected on the normal python path,
    instead of from the site.conf file.  If you are using the site-related
    code, you must write a site_config.py file for your site(s).
    See site_util.get_config_value.__doc__ for a description of what 
    must be in your site_config.py file.  Notably, the site configuration
    variable names that included '-' are all converted to use '_' instead.

  * Added pages for viewing publihser and site config values to the
    debug ui.

  * Allow address widget and contact address widget to work with a None value.

  * Add site support for specifying the ability to do anonymous registration

  * Cleanup URL space for attachment DataUI and allow multiple files
    to be copied to the clipboard.  

  * Treat Address and ContactAddress as immutable.

  * Remove FileDatabase class because our external files are always
    accessed through attachments. Refactor code in the stored_file
    module, making new_file() and guess_mime_type() functions instead
    of methods.
  
  * Rewrite get_url() function.  Behavior is now slightly different
    but clearer and probably better.  If 'secure' is false then don't
    bother monkeying with the port, just return a full URL.  If
    'secure' is true then attempt to use SSL.  Note that if you want
    SSL then site_config.config  must provide a value for 'https_address'.

  * Start Apache if 'httpd' is defined as a site_config value..
    
  * Remove local.SUPPRESS_EMAIL flag and replace it by
    site_util.is_email_enabled().  If email is not not enabled then
    the dulcinea.sendmail module never sends mail.  This is less
    confusing than the SUPPRESS_EMAIL flag.

  * Add Attachable.is_image() .  Don't provide thumbnails for
    non-images.

  * Use optional 'apache_version' directive so that start-apache.py
    generates a config that can work with apache2, and the apache2
    mod_scgi module.

0.3: svn revision >24702
2004-07-16

  * More use of Form2 forms.

  * Replaced all use of mx.DateTime with the standard datetime.

0.2.1: svn revision >23475
~2004-02-16

  * Since 0.2, there are some classes to support a survey capability,
    and improved unit test coverage.

0.2: svn revision ~23344
2004-01-21

  * Second release.  Many changes since 0.1.

0.1: svn revision ~21750
2003-05-29

  * Initial release.





