TurboGears Changelog ==================== 1.1.10 (...): ------------- Fixes ~~~~~ * The paginate decorator did not work properly with newer SQLAlchemy versions when using column prefixes. 1.0.9 (October 16, 2009): ------------------------- Changes ~~~~~~~ * ``turbogears.validators`` supports the new ``formencode.national`` module. * Lists as return values of controllers are handled like generators again. * ``tg-admin i18n collect`` supports a new option ``-e|--js-encoding`` to set the file encoding of the JavaScript source files (r6645). Fixes ~~~~~ * Fixed some problems with non-ascci user names and URLs (#1130 and #2118). * Static files were not found when project package was part of a larger namespace package (#12). * Better error message if validator for option list couldn't be guessed (#978). * Fixed Modeldesigner exception (#1109). * Multi-level inheritance did not work in model designer (#1092). * The PackageHub for SQLObject now only establishes a connection/transaction when really necessary (fixed tickets #763, #817 and #2160). * The tgsetup script failed when ``find_link`` was set in ``.pydistutils.cfg`` as a single string (#2098). * A form widget that is displayed without action parameter now produces an empty action attribute instead of leaving it out which is invalid (#2292). * Wrapping the ``CatWalk`` controller with ``identity.SecureObject`` did not protect catwalk's sub-controller ``Browser`` (#2207). * ``tg-admin sql help`` produced an error (#2361, thanks to Izhar Firdaus). * ``tg-admin i18n collect`` DecodingError when collecting strings from JavaScript files with non-ascii characters (#2183). * Removed some obsolete code to handle deleting of related joins from CatWalk (#2162, thanks , Daniel Fetchinson). * When a visitor requested a page shortly before the ``visit.timeout`` and then again shortly afterwards, he could sometimes be logged of at the second request because the visit manager had not yet updated the database. This has now been fixed by first looking up visits cached in memory (#2346). * The Genshi Buffet interface is now correctly initialized with the ``default_encoding`` setting, not ``encoding`` (see end of #1963). * It was not possible to enter Null values for optional fields using Catwalk. Some fixes were made to solve this, particularly for numeric fields (#760). * Better error message in Catwalk if foreign key cannot be found (#1412). * Primary key strings did not work properly with Catwalk when updating (#1029). * Pagination did not work with SQLAlchemy >= 0.6. * We now only pass string values as hidden fields in the login form, skipping possible file fields which cannot be passed anyway (#1761). * Fixed scheduler shutdown problem with method.sequential (#1702). Features ~~~~~~~~ * Added links to the home pages of the individual packages on the toolbox info page (#1155). * TurboGears now makes internal use of the ``is_active`` property provided by SQLAlchemy 0.4.9 and newer. * Compiled Kid templates are now added when building eggs (#1463). * Added default MANIFEST.in to quickstart template to ensure clean builds. * Allowed nested validation schemas to be defined by nesting schema class definitions and allowed schema classes, not only instances, to be attached to form widgets (#2393). Contributors (in alphabetic order) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Peter Russell, Christoph Zwerschke, Christopher Arndt 1.0.8 (December 17, 2008): -------------------------- Changes ~~~~~~~ * Charset parameters are now only added to content type headers when the respective mime type supports this (e.g. all "text" types, but not "pdf"). * Use "text/html" again instead of "application/xhtml+xml" for XHTML format, as was done in version 1.0.7. Though it is more standards-compliant, IE unfortunately does not cope with this content type, and we want to avoid the problems of content negotiation (see ticket #1998). * Updated and fixed the 'tgsetup.py' script (#2053). Fixes ~~~~~ * Passing a list of arguments to the redirect method did not work anymore since version 1.0.5 and is now working again (#2006). * Solved a small problem in the login controller of quickstarted projects since version 1.0.5 that occurred when directly accessing a non-authorized resource. * ``tg-admin toolbox`` ignored the ``--config`` option and adopted problematic config settings from the current project. * Fixed an issue with i18n string collection when using the lang option (#2012). * Made ``not_anonymous`` internally consistent with others predicates (#2029). * ``tg-admin sql`` did not work with SQLAlchemy versions before 0.4.3 (#2057). * Hidden fields are now always put in an invisible 'div' section since they must be contained in a block-level element to be valid (X)HTML (#2052). * The id of widgets like datagrid could not be changed at render time (#2023). * Improved some error messages and warnings. Features ~~~~~~~~ * Made content type delivered for a template format configurable with the ``tg.format_mime_types`` setting (see problem with XHTML content above). * TurboGears 1.0.8 now additionally includes MochiKit version 1.4.2, though version 1.3.1 is still used by default. You can use the newer version by setting ``tg.mochikit_version`` or ``tg_mochikit.version`` to '1.4' (#2018). * Forms have got a new ``use_name`` parameter that allows setting the id attribute instead of the name attribute of the form, since the latter is deprecated in HTML and invalid in XHTML (#2052). Contributors (in alphabetic order) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Florent Aide, Christopher Arndt, Christopher Gabriel, Eloi Notario, Peter Russel, George Sakkis, Christophe de Vienne, Matt Wilson, Christoph Zwerschke 1.0.7 (September 15, 2008): --------------------------- Changes ~~~~~~~ * The standard controller method handling identity.failure_url ("/login") now returns the proper HTTP status code "401 Unauthorized" (instead of "403 Forbidden") (#1787). * The required version of SQLObject was bumped up to 0.10.1 (#1765). * 'tgsetup.py' installation script does not set script-dir to "/usr/local/bin" anymore on Unix-like systems (#1317). Fixes ~~~~~ * The Label widget now renders 'attrs' which had been missing from its template (Andy Grover) (#1964). * The 'testutil.call_with_request' did not work with controller methods which raise redirect (Felix Schwarz) (#1203). * "tg-admin i18n" and the adm18n toolbox tool now correctly strip whitespace around strings collected from Kid templates so that they get translated properly (#1695). * 'identity.get_failure_url' was not backported from 1.1 branch but used in the identity providers (r5338). * XHTML templates were delivered with a content type of "text/html" while it should be "application/xhtml+xml" (r5323, related to #1963). * CalendarPicker was positioned wrong when scrolled in IE7 (Nick Murdoch) (#1875). * Make paginate work with tg.strict_parameters=False (#1889). * 'i18n.parse_decimal' broke when locale is unknown (#1104). * 'feed.FeedController.index' now passes keyword args when redirecting to the feed handler methods (#1732). * 'config.config_defaults()' should now set 'package_dir' correctly on all platforms (r5328). Features ~~~~~~~~ None Contributors (in alphabetic order) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Christopher Arndt, Christoph Zwerschke 1.0.6 (August 26, 2008): ------------------------ Improvements ~~~~~~~~~~~~ * Visit key can now be retrieved also from the request params (#1927). * Added ``max_limit`` and ``max_sort`` parameters to the paginate decorator and deprecated ``allow_limit_override`` (#1908). Since the last version, TurboGears sorts in memory, if sorting with SQL is not possible. Since this may be costly, you can now set limits. * TurboGears now respects the ``SCRIPT_NAME`` CGI environment variable. This allows better integration with ``mod_wsgi`` and other WSGI middleware and more flexibility than using ``sever.webpath`` (#1919). * TurboGears now also sets ``request.path_info`` using a CherryPy filter. This is the same as ``request.path`` with both ``SCRIPT_NAME`` and ``server.webpath`` stripped off. * Added a ``unicode_response`` attribute to the ``testutil.BrowsingSession`` object if an encoding is specified in the Content-Type header. Tests can use this much more safely. * If ``WidgetsList`` objects are passed in the controller dict, then the CSS and JavaScript for all the widgets in the list will be included (#5190). * The forward/backward/goto links in the paginate data grid can now be styled, and the default style shows them as buttons (way easier to click). Fixes ~~~~~ * Fixed several problems with ``server.webath`` (#1606, #1939, #1957). * Improved the login mechanism so that you can use secure logins by setting ``identity.failure_url`` and ``identity.force_external_redirect``. * url() now handles URLs with existing query strings correctly (#1862). * Using something like kid.HTMLSerializer as template format works again. * Fixed a problem with setuptools 0.6c9 (#1796). * "tg-admin sql status" with SQLAlchemy wrongly complained about columns not being declared as Unicode. * Catwalk got foreign key wrong for classes with camel case names. * Fixed several problems with toolbox admi18n (#1399, #1941, #1943). Contributors (in alphabetic order) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Florent Aide, Christopher Arndt, Ken Kuhlman, Tore Lundqvist, Christoph Zwerschke. 1.0.5 (July 1, 2008): --------------------- Fixes and Improvements ~~~~~~~~~~~~~~~~~~~~~~ * You can now pass a couple of interesting configuration parameters to TurboJson (e.g. ``json.ensure_ascii=True``, and the default is now False). * A new epydoc-based API docs generation script was added. * The widget ``default`` value can now be a function, similar to ``options``. * The default content type for JSON was changed from ``text/javascript`` to ``application/json`` (#1842). * The accept header is now reduced to a single value before it is compared with ``accept_format`` (#1842). * The content type of the response is now determined from the template format parameter, if not otherwise specified (#1842, #1480). * Setting ``tg_format=json`` is now allowed even when the format is already JSON by default (#1459). * Small improvements in ``DataGrid``, empty headers are now allowed. * Small improvements in the ``DataGrid`` and ``PaginateDataGrid`` templates. * Improved ``paginate`` and made it work with the latest SQLAlchemy versions. Sorting now works with SQLAlchemy queries and pure Python objects, and nested attributes are supported. * Table of contents and ``PaginateDataGrid`` added to the widget browser. * ``AutoCompleteField`` now also works with the MochiKit 1.4 dev version. * Added alternate text parameter to ImageButton for better form accessibility. * Fixed params attribute of `JSI18NWidget`. * Some association tables did not have primary keys when using SQLAlchemy. * Flash messages with commas did not work on some browsers (#1164). * The error handler did not return JSON when it had been requested from the original controller using ``tg_format``. * ``tg-admin shell`` now works with "heredocs" and other cases when the standard input encoding is not defined. * ``tg-admin toolbox`` did not work when ``server.socket_host`` was not set on some platforms (#1713). * ``tg-admin i18n collect`` did not work with nested packages (#1779). * A bug (#1396) made the recursion guard not work correctly and prevented validation to be performed more than once per request. * Setting ``tg.defaultview='genshi'`` and ``tg.mochikit_suppress=True`` raised an exception (#1719). * ``format_decimal`` in i18n.format now works with ``num_places=0`` (#1647). * The ``FeedController`` Atom 1.0 template didn't include proper author (#1730). * The quickstarted default app.cfg file now sets the package name (#1631). * Under rare circumstances, testutil could use a wrong module name (#1821). * Installing ElementTree is not required any more for Python < 2.5. * Some more small fixes and improvements of the code base and unit tests. Contributors (in alphabetic order) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Florent Aide, Christopher Arndt, kikidonk, Diez B. Roggisch, Felix Schwarz, Christoph Zwerschke. 1.0.4.4 (March 7, 2008): ------------------------ Changes ~~~~~~~ * ``cherrypy.request.sa_transaction`` is now always the SQLAlchemy transaction. In the case of SQLAlchemy >= 0.4, this had been set to the SQLAlchemy session before. You should't use this to explicitly commit or rollback transactions, use ``database.session.commit()`` or ``database.session.rollback()`` instead. * Identities now have a ``login`` method creating the link to the visit; this is not done in the provider method ``validate_identity`` any more. * TurboGears does not use a permanent visit cookie any more by default, i.e. the cookie will now be discarded when the browser is closed (#1729). If you want a permanent cookie to be used, set ``visit.cookie.permanent`` to True. The ``visit.timeout`` setting controls how long the cookie is valid. Features ~~~~~~~~ * Identies now have additional ``user_id`` and ``group_ids`` attributes. * Added an AutoCompleteTextField that can more easily replace an ordinary TextField in a form (the AutoCompleteField is a CompoundWidget). Fixes ~~~~~ * Toolbox did not run on projects using Genshi (#1494). * Toolbox loading will no more crash on a missing SQLObject import (#1620). * The PasteScript bug mentioned in the 1.0.4.1 changelog below has been fixed in PasteScript 1.6.2, so TurboGears requires the new version now (#1624). * The new config parameter ``tg.ignore_parameters`` allows ignoring other paramers besides ``tg_random`` when ``tg.stric_parameters`` ist set (#1653). * FieldStorageUploadConverter didn't support ``not_empty=False`` (#1705). * Fixed ``tg-admin shell`` encoding problems (#1714). * Template params now always keep their given order (#1718). * Compatibility with SQLAlchemy 0.4.3 (#1721). * ``tg-admin shell`` now runs with Python 2.3 if you install subprocess. * Better handling of external redirects. Contributors (in alphabetic order) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Florent Aide, Matej Barič, Jorge Godoy, Christoph Zwerschke. 1.0.4.3 (January 31, 2008): --------------------------- Fixes ~~~~~ * Added a new config option (app.cfg) which controls the kind of redirection the framework will raise in case of identity errors. By default TG used an internal CherryPy redirect in such cases. But the problem was that if you tried to use a failure url such as https://somewhere then CP raised a 404 error and that was all. Using this new system, you can activate _external_ redirects for identity errors by using the identity.force_external_redirect in app.cfg. This will permit redirecting your clients to any HTTPS url that is managed by an external apache or nginx rewrite rule. * Fixed the behavior of tg.mochikit_suppress which wasn't actually working. * Small improvements of the AutoCompleteField (Javascript clean-up; nicer box for auto completions and no garbage when it is empty; cursor jumps to end of text on update; with ``search_param = '*'`` you can now pass all form fields to the controller; the spinner can now be suppressed with ``show_spinner = False``; the hidden field is now optional in the Javascript code so that it can be reused if you want to build a simpler TextField based widget; added parameter docs) Project Updates ~~~~~~~~~~~~~~~ SQLObject version has been bumped so TG accepts 0.10.0 final. Contributors (in alphabetic order) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Florent Aide, Diez B. Roggisch, Christoph Zwerschke. 1.0.4.2 (January 21, 2008): --------------------------- * Lower down the dependency on PasteScript again to <1.6. * CalendarDatePicker fixed with sane default values. Contributors (in alphabetic order) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Florent Aide, Christoph Zwerschke. 1.0.4.1 (January 20, 2008): --------------------------- * Lower down the dependency on PasteScript because 1.6.1 and 1.6.1.1 break tg-admin quickstart command. We will release an updated version when the fix is implemented (http://trac.pythonpaste.org/pythonpaste/ticket/219). 1.0.4 (January 20, 2008): ------------------------- * Fixed parameters encoding. A previous patch encoded all characters in the cherrypy parameters to make them utf-8. This comportment has been reverted and unit tests written to ensure cherrypy parameters we receive inside a TG application will alway be unicode. 1.0.4b6 (January 16, 2008): --------------------------- Changes ~~~~~~~ * Fixed remote address inspection in the CherryPy headers because it changed in version 2.3.0. 1.0.4b5 (January 14, 2008): --------------------------- Changes ~~~~~~~ * Now require CherryPy 2.3.0 as the minimum version to avoid a security bug in CherryPy (CVE-2008-0252), see more info here http://nvd.nist.gov/nvd.cfm?cvename=CVE-2008-0252. and here : http://www.cherrypy.org/ticket/744 1.0.4b4 (January 13, 2008): --------------------------- Changes ~~~~~~~ * Pagination can be disabled by using ``allow_limit_override`` and ``tg_paginate_limit=0``, allowing all results been returned on one single page (#1629). Fixes ~~~~~ * Fixed the visit cookie which was never resent to client until it expired(#1652). * Fixed teardown for SQLObject tables (#1674). * Fixed VisitFilter when Identity is on and there are list parameters (#1622). * Paginate does a better handling of zeroed limit, avoiding ZeroDivisionError exception (#1629). * Added missing logger configuration to quickstarted projects (#1630). * Fixed pagination of empty data when a SQL with "group by" is issued (#1641). Contributors (in alphabetic order) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Florent Aide, Toshio Kuratomi, Jan ONDREJ (SAL), Martin Schwamberger (mschw), Matt Wilson, Christoph Zwerschke. 1.0.4b3: (December 2, 2007): ---------------------------- Deprecations ~~~~~~~~~~~~ * Paginate ``default_order`` has been greatly improved. Use of the ``default_reversed`` parameter has been deprecated. It will still be used if it is informed, but a DeprecationWarning will be displayed. Changes ~~~~~~~ * Introduction of tg.mochikit_suppress to prevent the inclusion of the shipped MochiKit 1.3.1. That allows to include custom mochikit versions. * PaginateDataGrid template now makes use of paginate attributes to render the links for first/previous/next/last page (#1617). * ``paginate.href_last`` returns a special URL that allows paginate decorator to compute the correct last page number at server-side (#1617). * The ``start-.py`` script in a quickstarted project is now only a wrapper for the ``start()`` function in a new ``commands`` module in the project's package. The ``setup.py`` in new project also creates a console script entry point for this, so easy_install can create a start script when the project's egg is installed. It also allows to package a default configuration file in the egg. For details see ticket (#1386). * Installation of TurboGears now does not require installation of an ORM. Instead, a project that relies on SQLObject or SQLAlchemy will have a ``setup.py`` file written with the proper requirements (#1501, #1620). * Removed the hard SQLAlchemy/SQLObject dependecies and modified quickstart to render the required ORM as requirement into a projects setup.py. Features ~~~~~~~~ * Introduction of tg.mochikit_suppress to (see "Changes"). * Workaround in paginate for databases without ``OFFSET`` (#1601). * The database module exports a mapper which is either session.mapper for SQLAlchemy >= 0.4, or something similar to assign_mapper for SQLAlchemy < 0.4, but compatible with SQLAlchemy 0.4 and Elixir. * The ``tg-admin quickstart`` command has now an option ``-r`` ``(--svn-repository)`` allowing automatic creation of the project in the specified SVN repository. * Introduction of ``paginate.redirect_on_out_of_range`` and ``paginate.redirect_on_last_page``, which determine if paginate decorator should raise a redirect when current page is out of bound and the last page is requested, respectively. * Paginate ``default_order`` can now be a string or a list of strings. The list of strings is used to specify the ordering of multiple columns. Every string starting with a dash (``-``) indicates that the column will have its default ordering reversed (#1618). * turbogears.url() allows to to create an url with multiple values for the same key (#1456). Fixes ~~~~~ * Fixed broken quickstart change (#1595). * KID-template string collection for i18n fixed so that it ignores XML processing instructions and comments as well as script and style sections. * Fixed SQLAlchemy and Elixir issues (#1458, #1599 and #1604). * Fixed issues with ``tg-admin update`` on a project in SVN (#1608). * Fix pagination of SQLAlchemy Query ordering by backrefs and synonyms' attributes. It also supports SQLAlchemy 0.4.1, which removed the ``properties`` accessor on Mapper (#1582). * Ensure paginate links bring the same result when using ordering columns with a custom datagrid template (#1605). * Fix pagination of out of bound pages (#1617). * ``tg-admin i18n`` now supports Unicode strings in Kid templates (#1397). * Fixed testutil to properly use the soClasses attribute in the model in order to pick up only the classes defined in this list and not the rest. Thanks to Gregor Horvath for this suggestion. (#1586). * Fixed the command line interface to i18n collection. Command line now processes also the templates (#1436). * Identity bug when using non-ASCII characters in the URL (#1598, #1407, #1022). Project Updates ~~~~~~~~~~~~~~~ * TurboCheetah 1.0 * TurboJson 1.1.2 * TurboKid 1.0.4 Contributors (in alphabetic order) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Florent Aide, Christopher Arndt, Roger Demetrescu, Juan Germano, Joel Pearson, Diez B. Roggisch, Christoph Zwerschke. 1.0.4b2 (October 27, 2007): --------------------------- Changes ~~~~~~~ * New quickstart templates for the SQLAlchemy support. * Better transaction support. * Paginate decorator enhanced SQLAlchemy support. Features ~~~~~~~~ * SQLAlchemy 0.4 is now supported, and SQLAlchemy 0.3.10 is required as a minimum (#1483). * QuickStart no longer creates sqlobject-history directories for SQLAlchemy projects. * "tg-admin sql" is now more powerful for SQLAlchemy (#1418). * Paginate allows ordering by attributes from related objects (SQLAlchemy Query objects only) (#1582). * JavaScript i18n-features added. Fixes ~~~~~ * Rollback SQLAlchemy transaction if a controller method fails, and it has an exception_handler (#1185). * ``sa_rwt`` (SQLAlchemy run with transaction) refactored to fix some corner cases. * Fixed internal pagination ordering, avoiding a potential error when paginating Query objects (SQLAlchemy) and ordering by 4 or more columns (#1508). * Fixed pagination of Query objects (SQLAlchemy). The first patch assumed that Query objects have a _query attribute which holds the query object, which is only true for SelectResults objects (#1434). * Paginate now works with SQLAlchemy 0.4 (#1591). * KID-template string collection for i18n enhanced so it matches the expectations of the i18n-filter. Project Updates ~~~~~~~~~~~~~~~ * Minimum requirement for SQLAlchemy support is now 0.3.10. * The SQLAlchemy page on our wiki contains some upgrade information: http://docs.turbogears.org/1.0/SQLAlchemy#id19 Contributors ~~~~~~~~~~~~ Florent Aide, Roger Demetrescu, Jonathan Hitchcock, j, Paul Johnston, Remi Jolin, Diez B. Roggisch, Christoph Zwerschke 1.0.4b1 (September 13, 2007): ----------------------------- Changes ~~~~~~~ * The cookies should have the same timeout as the session does, this way it is possible to keep users logged in for longer than the time the browser is running (#1406). * SQLAlchemy 0.4 support added. The identity part and the SQLAlchemy quickstart model were changed to do this. For the moment only the standard SQLAlchemy model has been changed, the ``tbig`` is still not fully compatible with SQLAlchemy 0.4. Features ~~~~~~~~ * i18n support for Javascript (for real this time). * Allow pagination of multiple variables, simply by using the @paginate decorator multiple times on a particular controller. It maintains backwards compatibility with previous code, but introduces a new template variable: tg.paginates (#1410). * Added ``-o`` ``(--sqlobject)`` option to generate SQLObject template, by Fred Lin. Fixes ~~~~~ * SQLAlchemy exception handling and transaction support has been improved and polished. * Added proper logging for exceptions that occured during the identity providers. Thoses errors were lost silently before and made it hard to understand from where the problem came. * Improved support for the SQLAlchemy command line interface. Project Updates ~~~~~~~~~~~~~~~ * A lot of unit tests have been fixed to support versions of nose superior to 0.9.2. Paul also took great care to add more unit tests to the SQLAlchemy handling in TG. * Now require TurboKid 1.0.3 for Kid support. This will pull out the latest TurboKid that includes fixes for choosing the kid output format. Contributors ~~~~~~~~~~~~ Diez B. Roggisch, j, Christoph Zwerschke, Chris Arndt, Paul Johnston, Florent Aide 1.0.3.2 (July 20, 2007): ------------------------ Fixes ~~~~~ * Genshi, while internally calling it "variable_lookup", has a Buffet Engine plugin that expects "lookup_errors". TG 1.0 and 1.1 look for and pass through only "variable_lookup", while TG 1.1 has "lookup_errors" in configuration. This helps in error handling with Genshi templates. Patch by Neil Blakey-Milner (#1444). * Output format must not be set for other templating engines than Kid, and needs not be set for Kid either. Removed unnecessary imports. Christoph Zwerschke. * ``tg-admin toolbox`` did not run outside a project directory. Christoph Zwerschke. Contributors ~~~~~~~~~~~~ Neil Blakey-Milner, Christoph Zwerschke 1.0.3 (July 19, 2007): ---------------------- Changes ~~~~~~~ * Added support for multiple databases using SQLAlchemy (#1380 by Ian Charnas). Features ~~~~~~~~ * Elixir quickstart by FredLin * Adding encryption on the fly for SQLAlchemy identity on in the template as per mailing list discussion (#1415). * Added slovenian translation thanks to mte (#1190). * Japanese Calendar thanks to tmatsuo (#1395). * Handle locales in egg creation thanks to Christoph Zwerschke Fixes ~~~~~ * Now handles SQLAlchemy Query in addition of SelectResults which will be deprecated in the near future (#1434). * Fix visit entries created more than once in the database (#1325). * Fixed toolbox config loading during startup. * Safari Unicode fix (patch from Simon Wittber, #1284). * Fix for i18n for testsuites not run in the same directory as the project * @paginate barfed if you tried to sort on a column whose data is generated from SQL. Thanks to Alastair (#1319). * @paginate didn't support SQLAlchemy list properties. Thanks to Alastair (#1318). * Fixed paginate href. Thanks to Alastair (#1321). * Enable custom: plugins outside TG source tree thx to aalbrecht (#1178). Project Updates ~~~~~~~~~~~~~~~ * Recommended version of Python is now 2.5. Contributors ~~~~~~~~~~~~ Simon Wittber, Christopher Arndt, Christoph Zwerschke, Paul Johnston, FredLin, jtate, Ian Charnas, Alastair Houghton, Ian Charnas, Alberto Valverde González, Florent Aide. 1.0.2 (May 2, 2007): -------------------- Changes ~~~~~~~ * New ``visit.cookie.secure`` config option to send cookie only over a secure connection (#1375 by James E. Blair). * ``cherrypy.request`` is now available at the variables sent to every template (#1362 by Christoph Zwerschke). * SQLAlchemy transaction object is now stored at ``cherrypy.request.sa_transaction`` so it can be accessed from the controllers. Patch at #1359 by Janzert. * SecureResource now raises an AttributeError when no require attribute is present in the controller class or in the config file. Closes #1336. (Note: This might break some "broken" apps, fortunately a detailed exception is raised advising how to fix it). * Slight quickstart CSS modification for tables. * Add default CSS to highlight the validation error. * Made "flash" block dynamic in quickstart. * Session setting is moved to config/app.cfg * command/toolbox info could list the toolbox plugins. * Enhancement SQLAlchemy default model, use 'assign' to avoid repeatedly writing, thanks Christoph Zwerschke. * Able to specify a default doctype in genshi, thanks Alastair Houghton. Features ~~~~~~~~ * Validators now support localized error messages. Thanks to Gregor Horvath and updated patch #1136 by Christian Vogler. * Python 2.5 compatible, Thanks to Florent Aide and Fred Lin (#1288). * AutoCompleteField now accepts a take_focus parameter to focus on load. Thanks to Grover (#1332). Fixes ~~~~~ * Fixed support for SQLAlchemy in paginate (#1360 by Jo Soares). * Schemas are no longer deepcopied to prevent crashing on un-deep-copiable validators (#1333). * Fixed bug in tg-admin that caused it not to operate properly on projects deployed as eggs. Patch from #1361 by Christoph Zwerschke. * SQLAlchemy auto-commiting fixed in some rare circumstances where sa_rwt was not being called. Patch from #1267 by Paul Johnston. * CatWalk now handles customized addRemoveName in SQLObject (#911 by Joost). * Using base64.decodestring in visitor.py for 2.3 compatibility (#1279 by Paul Fisher). * Config file in quickstarted app now has config option to load identity classes. Thanks to Felix Schwarz (#1255). * Identity now supports encrypted passwords with unicode characters. Thanks to Felix Schwarz and Patrick Lewis (#1281). * Minor changes to template so they work properly when ``server.webpath`` is not ``'\'`` thanks to "nludban" (#1213). * Fix quickstart project tests, thanks to Christoph Zwerschke (#1289), Jeff Kowalczyk (#1219). * Fix TurboGears 1.0.1 not installable with Python 2.3, thanks to "corvus" (#1264). * Automatic creation of identity model tables for SQLAlchemy, thanks to Christoph Zwerschke (#1290). * Fix DateTimeConverter, thanks to iberonesia (#1262). * ModelDesigner now writes up-to-date model header. * Decouple turbogears.identity.encrypt_password() from SQLObject. * Remove ``class_mapper`` dependency from #1292, thanks to Christoph Zwerschke. Project Updates ~~~~~~~~~~~~~~~ * ez_setup.py version to 0.6c5 * Not require cElementTree, pysqlite in Python 2.5 install * FormEncode version to i18n aware 0.7.1 * RuleDispatch to 0.5a0.dev-r2303 for Python 2.5 support. * Added requirement of DecoratorTools due to upgrade of PyProtocols which deprecates functions used in decorator.py. Contributors ~~~~~~~~~~~~ Alberto Valverde, Fred Lin, Jorge Vargas, Joseph Tate, Elvelind Grandin, Florent Aide, nludban, Jeff Kowalczyk, corvus, Christoph Zwerschke, iberonesia, Alastair Houghton, Felix Schwartz, Patrcik Lewis, Grover, Paul Fisher, Joost Moesker, Paul Johnston, Christian Vogler, Janzert, Chris Miles, Christopher Arndt, Jo Soares, James E. Blair. 1.0.1 (January 22, 2007): ------------------------- Changes ~~~~~~~ * ``paginate`` decorator now supports SQLAlchemy, improves sorting and fixes problems with CompoundWidget. Thanks to randall@tnr.cc and sbr77 (#1115). * Catwalk now supports SQLMultipleJoin/SQLRelatedJoins. Thanks to Chris Arndt (#910). * More docstring for widgets package. Fixes ~~~~~ * Identity logout now works properly when using ``set_identity_user`` (#1245). Thanks to Felix Schwarz * Set right default encoding 'utf-8' instead of 'utf8' which broke XmlHttpRequest in IE. Thanks Simon King (#1248). * Workaround for MySQLdb imcompatibilty with MySQL 4.1. Thanks to Felix Schwarz (#1245). * Minor code style improvement in quickstart template (#1231). * Redirection to default feed in ``FeedController.index()`` fixed. Thanks to Florent Aide (#1237). * Fixes for FR locale in JavaScript for CalendarPicker. Thanks to Florent Aide. * Various test case fixes. Thanks to Christoph Zwerschke, Felix Schwarz (#1236, #1237). * Adapt tests to changes in Kid 0.9.4. Thanks to Jeff Hinrichs and Christoph Zwerschke (#1234). * Reverted patch for #1168 which caused a RuntimeError (#1225). Contributors ~~~~~~~~~~~~ Alberto Valverde, Jeff Hinrichs, Christoph Zwerschke, Felix Schwarz, randall@tnr.cc, sbr77, Florent Aide, Christopher Andt, Simon King, Fred Lin 1.0 (January 03, 2007): ----------------------- Changes ~~~~~~~ * When used with the ``--future`` option, TurboGears can now function without having SQLObject installed. * "nose" is now an optional setup component. * Now possible to pass any option (besides dburi and echo) to SQLAlchemy engine. Thanks to elftherios and Lee McFadden (#1215). * Now possible to place test specific configuration in "test.cfg". Thanks to Tim Freund (#1177, #1214). * Support testing the code that uses identity. Thanks to Max Ischenko and Felix Schwarz (#1166, #1220). * Auto reloading speedup. Thanks to John M. Camara (#1168). Features ~~~~~~~~ * Now possible to add variables to the root template namespace via turbogears.view.root_variable_providers. Thanks Arnar Birgisson (#1097). * ``turbogears.database.run_with_transaction`` is now a ``MultiorderGenericFunction`` to allow easier customization (#1201). * tg-admin now accepts ``--egg`` and ``--config`` as global options which works on all commands. Fixes ~~~~~ * Fix implicit transactions for SQLAlchemy. Thanks to Lee McFadden (#1209). * Various CSS fixes for DataGrid. Thanks Florent Aide (#1222). * ``FeedController`` is now a Controller so ``tg.url`` works properly and fixed missing import in feed.py .Thanks Florent Aide (#1223, #1224). * Looser Enum implementation taht works better with ToscaWidgets. * Kid configuration settings were ignored under certain circumstances. Thanks Joost, Ksenia and Dan for the pathes (#468). * ``validators.Number`` handles non-string input gracefully (#955). * ``nestedVariablesFilter`` made more robust (#1068). * Throwing an ``identity.IdentityException`` inside a controller method is now caught by ``identity.SecureResource`` (#1131). * Various test case fixes. Thanks to Felix Schwarz, Joost Moesker, Jeff Kowalczyk (#1204, #1206, #1216, #1217). * ``logout()`` method in SQLObjectIdentity was setting read-only property. Does not suppress exception anymore (#1211, #1212). Contributors ~~~~~~~~~~~~ Alberto Valverde, Joost Moesker, John M. Camara, Dan Jacob, Arnar Birgisson, Ksenia Marasanova, Felix Schwarz, Tim Freund, Max Ischenko, Fred Lin, Florent Aide, Jeff Kowalczyk, elftherios, Lee McFadden, Kevin Dangoor 1.0b2 (November 30, 2006): -------------------------- Changes ~~~~~~~ * The CalendarDatePicker widget allows a validator now. Features ~~~~~~~~ * Introduced tgsetup.py which provides simpler installation and better error messages. tgsetup.py also provides a ``--future`` switch to get SQLAlchemy and Genshi for you. Fixes ~~~~~ * SQLAlchemy quickstart projects with identity were missing an import * SQLObject visit classes can be defined in your model.py * Fixed a memory usage problem with large file uploads * Corrected a Python 2.3 compatibility problem * Identity + SQLAlchemy + PostgreSQL had a problem with timezones that has been corrected. * JSLink now uses ```` instead of ``