root/tags/1.0.3.2/CHANGELOG.txt

Revision 3327, 48.6 kB (checked in by faide, 1 year ago)

Updated CHANGELOG.txt with new fixes and contributors

Line 
1 TurboGears Changelog
2 ====================
3
4 1.0.3.2 (July 20, 2007):
5 ------------------------
6 *Changes*
7
8 *Features*
9
10 *Fixes*
11         * Ticket #1444: Genshi, while internally calling it "variable_lookup", has
12         a Buffet Engine plugin that expects "lookup_errors". TG 1.0 and 1.1 look
13         for and pass through only "variable_lookup", while TG 1.1 has
14         "lookup_errors" in configuration.
15         This helps in error handling with Genshi templates.
16         Patch by Neil Blakey-Milner.
17
18         * r3318: Output format must not be set for other templating engines than
19         Kid, and needs not be set for Kid either. Removed unnecessary imports.
20         Christoph Zwerschke.
21
22         * r3317: tg-admin toolbox did not run outside a project directory.
23         Christoph Zwerschke.
24
25 *Contributors*
26
27 Neil Blakey-Milner, Christoph Zwerschke
28
29 1.0.3 (July 19, 2007):
30 -----------------------
31
32 *Changes*
33
34 * Added support for multiple databases using SA. #1380 by Ian Charnas.
35
36 *Features*
37 *Project Updates*
38
39         * Elixir quickstart by FredLin
40
41         * Adding encryption on the fly for SA identity on in the template as
42           per discussion here:
43           http://groups.google.co.in/group/turbogears/browse_thread/thread/f4b43e9f148c3a9a
44           fixes ticket #1415
45
46         * Added slovenian translation thanks to mte on ticket #1190.
47
48         * Japanese Calendar ticket #1395 thanks to tmatsuo
49
50         * Handle locales in egg creation thanks to Christoph Zwerschke
51
52 *Fixes*
53         * ticket #1434. Now handles SA Query in addition of SelectResults
54       which will be deprecated in the near future.
55        
56         * ticket #1325  Fix visit entries created more than once in the
57           database.
58
59         * Fixed toolbox config loading during startup.
60
61         * Applied patch from Simon Wittber on ticket #1284: Safari Unicode fix
62
63         * Fix for i18n for testsuites not run in the same directory as the project
64
65         * Patch for ticket #1319: @paginate barfs if you try to sort
66           on a column whose data is generated from SQL. thanks to Alastair
67
68         * Patch from ticket 1318: @paginate doesn't support SQLAlchemy
69           list properties. thanks to alastair!
70
71         * Fixes ticket #1321: Fixed paginate href. Thanks to alastair!
72
73         * Enable custom: plugins outside TG source tree thx to aalbrecht
74           fixes ticket #1178
75
76 *Project Updates*
77    * recommended version of Python is now 2.5
78
79 *Contributors*
80
81 Simon Wittber, Christopher Arndt, Christoph Zwerschke, Paul Johnston, FredLin,
82 jtate, Ian Charnas, Alastair Houghton, Ian Charnas, Alberto Valverde Gonzales,
83 , Florent Aide.
84
85 1.0.2 (May 2, 2007):
86 -----------------------
87
88 *Changes*
89
90 * New ``visit.cookie.secure``config option to send cookie only over a secure connection.
91   #1375 by James E. Blair.
92 * ``cherrypy.request`` is now available at the variables sent to every template.
93   #1362 by Christoph Zwerschke.
94 * SA transaction object is now stored at ``cherrypy.request.sa_transaction`` so it
95   can be accessed from the controllers. Patch at #1359 by Janzert.
96 * SecureResource now raises an AttributeError when no require attribute is
97   present in the controller class or in the config file. Closes #1336.
98   (Note: This might break some "broken" apps, fortunately a detailed exception
99    is raised advising how to fix it).
100 * slight quickstart css modification for tables
101 * Add default css to highlight the validation error
102 * make 'flash' block dynamic in quickstart
103 * session setting is moved to config/app.cfg
104 * command/toolbox info could list the toolbox plugins
105 * Enhancement SQLAlchemy default model, use 'assign' to avoid repeatedly writing, thanks cito
106 * Able to specify a default doctype in genshi, thanks Alastair Houghton
107
108 *Features*
109
110 * Validators now support localized error messages. Thanks to Gregor Horvath and updated patch
111   at #1136 by Christian Vogler.
112 * Python 2.5 compatible, Thanks to Florent Aide and Fred Lin #1288
113 * AutoCompleteField now accepts a take_focus parameter to focus on load. Thanks to Grover at #1332
114
115 *Fixes*
116
117 * Fixed support for SA in paginate. #1360 by Jo Soares.
118 * Schemas are no longer deepcopied to prevent crashing on un-deep-copiable validators. #1333.
119 * Fixed bug in tg-admin that caused it not to operate properly on projects deployed as eggs. Patch
120   from #1361 by Christoph Zwerschke.
121 * SA auto-commiting fixed in some rare circumstances where sa_rwt was not being called. Patch from
122   #1267 by Paul Johnston.
123 * CatWalk now handles customized addRemoveName in SO. #911 by Joost
124 * using base64.decodestring in visitor.py for 2.3 compatibility. #1279 by Paul Fisher.
125 * Config file in quickstarted app now has config option to load identity classes. Thanks to Felix
126   Schwarz #1255.
127 * Identity now supports encrypted passwords with unicode characters. Thanks to Felix Schwarz and
128   Patrick Lewis #1281
129 * minor changes to template so they work properly when server.webpath != / thanks to "nludban" #1213
130 * fix quickstart project tests, thanks to Christoph Zwerschke #1289, Jeff Kowalczyk #1219
131 * fix TurboGears 1.0.1 not installable with python2.3, thanks to "corvus" #1264
132 * Automatic creation of identity model tables for SQLAlchemy, thanks to Christoph Zwerschke #1290
133 * fix DateTimeConverter, thanks to iberonesia #1262
134 * ModelDesigner? now write up-to-date model header
135 * decouple turbogears.identity.encrypt_password() from sqlobject
136 * remove class_mapper dependency from #1292, thanks chrisz
137
138 *Project Updates*
139
140 * ez_setup.py version to 0.6c5
141 * Not require cElementTree, pysqlite in Python 2.5 install
142 * FormEncode version to i18n aware 0.7.1
143 * RuleDispatch to 0.5a0.dev-r2303 for Python 2.5 support.
144 * Added requirement of DecoratorTools due to upgrade of PyProtocols which
145   deprecates functions used in decorator.py.
146
147 *Contributors*
148
149 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.
150
151
152 1.0.1 (January 22, 2007):
153 -------------------------
154
155 *Changes*
156
157 * paginate decorator now supports SA, improves sorting and fixes problems
158   with CompoundWidget. Thanks to randall@tnr.cc and sbr77. #2404
159 * Catwalk now supports SQLMultipleJoin/SQLRelatedJoins. Thanks to Chris Arndt
160   #2382
161 * more docstring for widgets package #2355
162
163 *Fixes*
164
165
166 * Identity logout  now works properly when using ``set_identity_user`` #1245.
167   Thanks to Felix Schwarz
168 * set right default encoding 'utf-8' instead of 'utf8' which broke
169   XmlHttpRequest in IE. Thanks Simon King #2408
170 * workaround for MySQLdb imcompatibilty with MySQL 4.1. Thanks to Felix Schwarz
171   #2406
172 * minor code style improvement in quickstart template. #2378
173 * redirection to default feed in FeedController.index() fixed. Thanks to Florent
174   Aide #2374
175 * fixes for FR locale in JavaScript for CalendarPicker. Thanks to Florent Aide
176   #2370
177 * various test case fixes. Thanks to Christoph Zwerschke, Felix Schwarz
178   #2366 #2374 #2376
179 * adapt tests to changes in Kid 0.9.4. Thanks to Jeff Hinrichs and
180   Christoph Zwerschke #2364
181 * reverted #2256 which caused a RuntimeError #2340
182
183 *Contributors*
184
185 Alberto Valverde, Jeff Hinrichs, Christoph Zwerschke, Felix Schwarz, randall@tnr.cc, sbr77, Florent Aide, Christopher Andt, Simon King, Fred Lin
186
187
188 1.0 (January 03, 2007):
189 -----------------------
190
191 *Changes*
192
193 * when used with the --future option, TurboGears can now function without having
194   SQLObject installed. #2326
195 * nose is now an optional setup component #2325
196 * now possible to pass any option (besides dburi and echo) to sqlalchemy
197   engine. Thanks to elftherios and Lee McFadden #2318 #2320
198 * now possible to place test specific configuration in "test.cfg". Thanks to
199   Tim Freund #2263
200 * support testing the code that uses identity. Thanks to Max Ischenko and
201   Felix Schwarz #2258 #2305
202 * auto reloading speedup. Thanks to John M. Camara #2256
203
204 *Features*
205
206 * now possible to add variables to the root template namespace via
207   turbogears.view.root_variable_providers. Thanks Arnar Birgisson #2261
208 * turbogears.database.run_with_transaction is now a MultiorderGenericFunction to
209   allow easier customization. #2226
210 * tg-admin now accepts --egg and --config as global options which works on all
211   commands.
212
213 *Fixes*
214
215 * Fix implicit transactions for SQLAlchemy. Thanks to Lee McFadden #2322
216 * Various CSS fixes for DataGrid. Thanks Florent Aide #2316
217 * FeedController is now a Controller so tg.url works properly and fixed missing
218   import in feed.py .Thanks Florent Aide #2310 #2312
219 * Looser Enum implementation taht works better with ToscaWidgets #2303
220 * Kid configuration settings were ignored under certain circumstances. Thanks Joost, Ksenia and Dan for the pathes #2259
221 * validators.Number handles non-string input gracefully #2254
222 * nestedVariablesFilter made more robust #2252
223 * throwing an identity.IdentityException inside a controller method is now
224   caught by identity.SecureResource #2250
225 * various test case fixes. Thanks to Felix Schwarz, Joost Moesker,
226   Jeff Kowalczyk #2247 #2266 #2268 #2314
227 * 'logout' method in SQLObjectIdentity was setting read-only property. Does not
228   suppress exception anymore. #2243
229
230
231 *Contributors*
232
233 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
234
235
236
237 1.0b2 (November 30, 2006):
238 ---------------------
239 *Changes*
240
241 * The CalendarDatePicker widget allows a validator now.
242
243 *Features*
244
245 * introduced tgsetup.py which provides simpler installation and better
246   error messages. tgsetup.py also provides a --future switch to
247   get SQLAlchemy and Genshi for you.
248
249 *Fixes*
250
251 * SQLAlchemy quickstart projects with identity were missing an import
252 * SQLObject visit classes can be defined in your model.py
253 * Fixed a memory usage problem with large file uploads
254 * Corrected a Python 2.3 compatibility problem
255 * Identity + SQLAlchemy + PostgreSQL had a problem with timezones that
256   has been corrected.
257 * JSLink now uses <script></script> instead of <script/> to avoid problems
258   when used with template languages that don't serialize XHTML->HTML
259 * A number of fixes and minor enhancements to the quickstart templates
260 * turbogears.url has a nicer default when you're not running within a
261   request (ie when you're in a test)
262
263 *Project Updates*
264
265 * setuptools 0.6c3
266
267 *Contributors*
268
269 Fred Lin, Jorge Vargas, Jorge Godoy, Alberto Valverde, Elvelind Grandin,
270 Lee McFadden, Max Ischenko, Joseph Tate, Matthew Bevan, Roger Demetrescu,
271 plus some small fixes from several others and a huge amount of
272 documentation work from Karl Guertin and Adam Jones (in addition to the
273 other contributors already mentioned).
274
275 1.0b1 (September 7, 2006):
276 ---------------------
277 *Changes*
278
279 * The CalendarDatePicker will no longer prefer the user's browser's language
280   if a language has been explicitly specified. #1056
281
282 *Features*
283
284 * Calls to gettext inside kid templates are now detected by i18n.
285 * Can now pass `tg_format` in the output dict to override the one set by
286   expose.
287 * Can now set the config option `sqlalchemy.echo` to toggle SA's query logging.
288 * Can now use `field_for` inside `FormFieldContainer`s templates to get child
289   fields by name.
290
291 *Fixes*
292
293 * You can now conveniently use non-ActiveMapper SQLAlchemy classes
294   with identity. #1041
295 * Identity testing is now easier because the `DummyRequest` now
296   includes a remote_host.
297 * Default identity provider will be created if the request doesn't
298   have one. #876
299 * Swedish translation file for the calendar has been fixed #1055
300 * `testutil.DBTest` will only drop tables that exist #1094
301 * Added `validate_password` to the SQLAlchemy identity provider
302   to match the SQLObject one. #1098
303 * Corrected spelling at italian CalendarDatePickers' i18n files.
304 * Fixed a bug with BLOBCols in Model Designer.
305 * Exceptions raised when SA flushes are now dispatched with TG's errorhandling.
306 * Can now use `format` (plus other internal named parameters) as a controller's
307   method argument name.
308 * The toolbox will now launch the browser to point to the same port number
309   as the server is listening at.
310
311 *Project Updates*
312
313 * SyntaxHighlighter 1.4.0
314 * setuptools 0.6c2
315
316 0.9a9 (August 17, 2006):
317 ---------------------
318
319 *Features*
320
321 * tg-admin toolbox now accepts a --conf argument.
322 * Catwalk now provide some feedback on ajaxcalls
323 * The quickstarted welcome page are updated and looks much better
324
325 *Fixes*
326
327 * Adding users with Catwalk should now work
328 * Admi18n now works with non-ascii translation and html entities
329
330
331 *Project Updates*
332
333 * SQLObject 0.7.1dev-r1860
334 * PasteScript 0.9.7
335 * ConfigObj 4.3.2
336 * Nose  0.9
337 * TurboJson 0.9.9
338
339 0.9a8 (July 21, 2006):
340 ----------------------
341
342 *Fixes*
343
344 * Some problems with the calendar widget that were introduced in 0.9a7
345   have been addressed
346 * Some people have reported getting an SQLObject 0.8 dev package, which
347   is not at all tested with TurboGears. The setup file for TurboGears
348   will now restrict to < 0.8.
349
350 *Project Updates*
351
352 * Kid 0.9.3 (addresses problems that people had with comments in base
353   templates)
354 * setuptools 0.6c1
355
356
357 0.9a7 (July 19, 2006)
358 ---------------------
359
360 *Backwards Incompatibilities*
361
362 * Former LocalizableJSLink is now CalendarLangFile. New LocalizableJSLink is
363   simpler but backwards-incompatible.
364 * Catwalk no longer accepts an allowHost argument.
365   To restrict access to it use Identity.SecureObject instead.
366  
367 *Deprecations*
368
369 * Use of "entrys" is now deprecated in the FeedController. You should use
370   "entries" instead.
371    
372 *Features*
373
374 * Syntax highlighter is used in the widget browser to make the code
375   snippets look nice (#843)
376 * Logging configuration produces better errors and also has access to the
377   RotatingFileHandler and TimedRotatingFileHandler (#866, also fixes #820)
378 * The `validate` decorator now accepts a `state_factory` parameter which should
379   be a callable that returns the initial state for validation (the same `state`
380   parameter FormEncode validators use). The final state after validation can
381   be accessed at `cherrypy.request.validation_state` inside controller methods.
382 * `tg-admin` commands can state if they need to be run in a project dir.
383 * Toolbox now uses entrypoints so site-specific tools can be added.
384 * `tg-admin shell` now asks if it should commit changes to the database on exit.
385 * Widgets can be listed at the `tg.include_widgets` config. list to send them to
386   every template (a la `tg.mochikit_all`).
387 * `DBTest` now drops tables after each test so they don't interfere with others.
388 * Toolbox is now secured using Identity
389 * SQLAlchemy support not only works again with the latest SQLAlchemy,
390   but quickstart works properly and "tg-admin sql create" now works
391   for SQLAlchemy databases for the first time.
392
393 *Fixes*
394
395 * The `sample-prod.cfg` file had an incorrect logging configuration.
396 * Simplified visit queue handling which solves some mysterious bugs.
397 * QUICKSTART: `model.py` now includes SQLObject's requirements when identity is
398   off.
399 * `DateTimeConverter` now handles dates < 1900.
400 * Catwalk now handles gracefully UnicodeCols.
401 * QUICKSTART: `start-project.py` now detects correct python binary's path in
402   the system.
403 * Kid's base templates are now (re)loaded properly.
404 * Config file selection is now smarter.
405 * `tg-admin update` now finds correct identity provider.
406 * Catwalk now handles InheritableSQLObjects with mixins gracefully.
407 * Output encoding wasn't set based on the config value under some
408   circumstances (#972)
409
410 *Changes*
411
412 * If `tg.empty_flash` is True in the app's configuration, then `tg_flash = None`
413   will be sent to the template when it's not set. Otherwise it will not be sent
414   at all.
415 * QUICKSTART: Now supports python2.3 with PEAK's [] decorator syntax.
416 * `DateTimeConverter` validator now raises Invalid('empty') exceptions properly
417   and uses the usual `not_empty` parameter. `allow_empty` is deprecated.
418
419 *Contributors*
420
421 (My apologies if your name belongs here and is not!)
422
423 Roger Demetrescu, Elvelind Grandin, Rune Hansen, Sean De La Torre,
424 Alberto Valverde, Max Ischenko, Joseph Tate, Elvelind Grandin,
425 Charles Duffy, Matt Good, Ksenia Marasanova.
426
427 0.9a6 (May 9, 2006)
428 -------------------
429
430 *Backwards Incompatibilities*
431
432 * `i18n.runTemplateFilter` in the config file has been renamed
433   `i18n.run_template_filter` (#796)
434 * For people using FastData (experimental): `get_add_url`,
435   `get_edit_url` and `get_delete_url` all are passed the row instead
436   of the ID now, allowing you to use something other than the ID
437   if desired.
438 * In widgets, if you were using a dictionary as a params be aware that now
439   the dictionary is not updated at construction or display/render time but
440   simply replaced with the new one.
441   If you were using it to provide default attributes for your widget, take a
442   look at how the TableForm does that.
443
444 *Features*
445
446 * A new function, `turbogears.util.find_precision`, to tell you
447   how many decimal places of precision are required. (To help
448   with `i18n.format.format_decimal` which needs to know the
449   precision.)
450 * tg-admin info shows which eggs require TurboGears
451 * In widgets, SelectionField now supports grouped options,
452   SingleSelectField and MultipleSelectField widgets take advantage of this
453   to provide an optgroup tag. The format of a grouped options list is like
454   the following:
455  
456   options = [(None, [(1, "a"), (2, "b")]), ("Others", [(3, "c"), (4, "d")])]
457
458 * The Widget Browser now displays the source of the example and the
459   template provided by default in the widget (to allow for easier
460   complete customization) (#840, #841)
461 * Tabber and Syntax Highlighter widgets are now included
462
463 *Changes*
464
465 * sqlite database URIs can now be specified as sqlite:///c:/foo/bar on
466   Windows, which is more natural for users. (The sqlite:///c|/foo/bar
467   syntax still works.)
468 * ValueError is raised if an InputWidget contains "." or "-", which are
469   reserved for use by the widgets
470 * Package name is used instead of `your_project` in the quickstart
471   logging config.
472  
473 *Fixes*
474
475 * QUICKSTART: an exception comes up if a user logs in but is not in
476   a group that is required for access. The line with
477   `if not identity.current.anonymous and identity.was_login_attempted()`
478   in controllers.py or root.py needs an additional
479   `and not identity.get_identity_errors()` condition. (#834)
480 * QUICKSTART: quickstart projects that used identity would generate
481   a table called "user", which is invalid for some databases. The
482   new quickstart model.py generates tables called `tg_user`. #805
483 * QUICKSTART: there were problems with the model template for SQLAlchemy
484   (#801)
485 * SQLAlchemy's identity provider was not selected by default when you
486   quickstart a new project. (#806)
487 * Core widgets all include WidgetDescriptions now and appear in the
488   Widget Browser in the Toolbox (#727)
489 * Access logging to a file wasn't working correctly (#816)
490 * Bug fix for convert/`from_python` for compound and repeating widgets
491 * User name is now encoded to the DB encoding before a query is run
492   in the SQLObject identity provider
493 * JSLink widgets can now specify a location
494 * LocalizableJSLink (and the calendar widget) now work in IE (#846)
495 * Added scheduler to `turbogears.__init__.__all__` so that references
496   to it work properly.
497 * tg-admin info and Toolbox info commands now work properly and show
498   the same information.
499 * Fixed a serious bug in Python 2.3 compatibility (#853)
500
501 *Project Updates*
502
503 * MochiKit updated to 1.3.1 (#804)
504
505 *Contributors*
506
507 Max Ischenko, Claudio Martinez, Matt Good, Rune Hansen, Michele Cella,
508 Jorge Godoy, Alberto Valverde González, Simon Belak, Jeroen Dekkers,
509 Mark Ramm-Christensen, Ronald Jaramillo,
510 Richard Standbrook, Roger Demetrescu, Patrick Lewis, Hal Wine,
511 Jorge Vargas, Bob Kuehne.
512
513 0.9a5 (April 26, 2006)
514 ----------------------
515
516 *Backwards Incompatibilties*
517
518 * An identity login form must have a submit button having the name
519   specified in the config file (identity.form.submit).  If you have a
520   commented identity.form.submit value and used the default login.kid
521   file, you will need to add 'name="login"' to the login.kid submit
522   button.
523 * In widgets, the base Widget class no longer supports a validator.
524   If you need a validator you should use the InputWidget class
525 * In widgets, the display and the adjust_value methods have a slightly
526   different signature (if you happen to use the "convert" parameter,
527   you just need to use it as a keyword parameter and not a
528   positional one.)
529 * decorator() should be applied to the function accepting the function
530   being decorated ("entangle" by convention), not the caller.
531 * Removed keyword argument "argsink" from decorator(),
532   weak_signature_decorator() should be used instead.
533
534 *Deprecations*
535
536 * In widgets, template_vars in widgets are now called "params" and
537   options_for has been renamed params_for
538 * In widgets, the update_data method has been renamed update_params
539 * Identity has moved to PEP8 style naming. Changed userId, groupId, and
540   permissionId to be user_name, group_name, and permission_name.
541 * visit_id has been deprecated in favor of visit_key
542 * SQL scripts to migrate PostgreSQL and MySQL identity databases are
543   available (http://trac.turbogears.org/turbogears/ticket/737)
544
545
546 *Features*
547
548 * Dramatically improved and unified logging configuration. Config files
549   can now use the options in Python's logging module for log formats
550   and output.
551 * TurboGears now includes an enhanced version of Irmen de Jong's
552   Kronos scheduler, allowing you to schedule tasks that run in
553   separate threads or processes periodically.
554 * For Python 2.3 users, there is a convenient new decorator syntax
555   that comes from Phillip Eby's PEAK.
556  
557 Here's is the equivalent of @expose():
558
559     [expose()]
560     def index(self):
561         pass
562
563 * Added a new turbogears.start_server function which will help ease
564   the transition to 1.1 *and* adds the ability to use Ian Bicking's
565   EvalException. You must turn on tg.fancy_exception to use it
566   at this point.
567 * In widgets, if the widget you are using provides a default validator,
568   for example a SelectionWidget, you can tweak its parameters
569   by just passing a dictionary of those parameters as validator
570   (for example, validator=dict(not_empty=True))
571 * In widgets, every attribute listed inside params now supports callables
572   automatically (the attribute will be called for computation at request
573   time)
574 * Some improvements to the ImageButton widget
575 * More customization hooks for CheckBoxList, RadioButtonList, TableForm
576   and ListForm
577 * Decimals are properly jsonified (#472)
578 * datetime.date instances are properly jsonified (#759)
579 * Commas are supported in number validation (#720)
580 * It's now possible to determine what permissions are required for
581   a given controller method (#603)
582
583 *Changes*
584
585 * Identity model classes are now placed directly into the model.py of
586   a quickstarted project. This new setup is much easier to change,
587   since requirements for the identity model vary dramatically. Another
588   advantage is that quickstart projects that don't need identity
589   start off with cleaner code, and projects that do need identity
590   need almost no additional configuration or setup.
591 * quickstart projects include a "json.py" file as a home for JSON
592   view code.
593 * i18n "scan" command has been changed to "collect" to match the
594   admi18n Toolbox tool
595 * If you quickstart a project while in an svn checkout, files are no
596   longer automatically "svn add"ed. This corrects some problems that
597   people ran into with that behavior.
598 * The "prod.cfg" file in quickstart projects is now called
599   "sample-prod.cfg" to reflect that it is just used as a sample that
600   you copy to your real production servers (#762).
601 * The various classes used to make dictionaries look like normal
602   objects have been replaced by turbogears.util.Bunch (#779)
603
604 *Fixes*
605
606 * Model Designer can now handle joins to the same table (#769)
607 * Unicode values sent to the turbogears.url function are utf8 encoded.
608 * NotEmpty validator works with CheckBoxList now. (#696)
609 * Grid widget's css has been improved to not interact with other
610   widgets (#729, thanks to mark@cyberware)
611 * the "self" parameter is no longer accidentally removed by validation
612 * tg_format is properly stripped out for JSON requests (#740)
613 * calendar widget language fixes (many language files needed patching)
614 * DataController's float columns are properly converted (#707)
615 * str values in Kid templates are now assumed to be utf8 rather than
616   ASCII (changeable via kid.encoding) (#743)
617 * The flash message set on the current request takes precedence over the
618   one in the cookie (#747)
619 * py:match was being used in the default templates in a way that would
620   drop the text from the first node. (#785)
621 * AutoCompleteField widget's only_suggest now works correctly when
622   there is only one item listed (#750)
623 * Lots of HTML cleanup
624
625 *Project Updates*
626
627 * TurboGears now uses ConfigObj 4.3.0 for configuration
628 * MochiKit upgraded to 1.3
629 * simplejson upgraded to 1.3
630 * CherryPy upgraded to 2.2.1
631 * Kid upgraded to 0.9.1
632 * FormEncode upgraded to 0.5.1
633 * PasteScript upgraded to 0.5.1
634
635 *Contributors*
636
637 Alberto Valverde González, Jeff Watkins, Max Ischenko, Michele Cella,
638 Simon Belak, Jorge Godoy, Patrick Lewis, Jorge Vargas, Joost Moesker,
639 Joseph Tate, Philip Walls, Bob Ippolito, Steve Bergman, Andrey Lebedev,
640 Brian Beck, Roger Demetrescu.
641
642
643 0.9a4 (April 5, 2006)
644 ---------------------
645
646 *Features*
647
648 * TableForm and ListForm both have new CSS classes "tableform" and
649   "listform" and also have odd/even classes for the rows.
650
651 *Fixes*
652
653 * The 0.9a3 quickstart template was missing important __init__.py
654   files in the distributed egg.
655
656 0.9a3 (April 4, 2006)
657 ---------------------
658
659 *Changes*
660
661 * FastData is no longer included with the TurboGears core package. You can
662   install it with TurboGears by easy_install-ing "TurboGears[exp]" instead
663   of "TurboGears".
664
665 *Features*
666
667 * You can find out if login was attempted during this request by calling
668   `identity.was_login_attempted`
669 * Added tg.strict_parameters option that will cause an exception to be
670   raised if extra parameters are passed to a controller method. #694
671
672 *Fixes*
673
674 * Base template (eg "master.kid") now reload automatically when changed
675   (#55)
676 * identity.Any was missing an `error_message` attribute (#667)
677 * Identity provides a more explicit error about wrong username/password
678   (#616)
679 * CatWalk no longer has a problem changing more than one foreign key
680   label in "manage columns" (#690)
681 * plain_gettext is now exported from the i18n package.
682 * DataGrid.column fields are supported by FastDataGrid (#706)
683 * The tg_errors variable sent to a controller now has the correct value
684   even if the controller method doesn't have keyword arguments. #698
685 * DBURIs with notrans_ now work properly with tg-admin sql create. #702
686 * Dutch and German calendar translations have been fixed #700.
687
688 *Project Updates*
689
690 * setuptools 0.6a11
691 * CherryPy 2.2.0
692 * SQLObject to 0.7.1dev-r1675
693
694 *Contributors*
695
696 This update brought to you by Michele Cella, Jeff Watkins, Simon Davy,
697 Baruch Even, Simon Belak, Claudio Martinez, Max Ischenko, Jason Chu,
698 Roger Demetrescu, Joost Moesker, plus Phillip Eby for setuptools
699 and Remi Delon and the others working on CherryPy.
700
701 0.9a2 (March 27, 2006)
702 ----------------------
703
704 *Backwards Incompatibilities*
705
706 * Due to Python 2.3 issues and some additional discussion, the config
707   files have gone back to an INI-style format. This means that some
708   minor changes are needed if you were using the 0.9 ".py" config files,
709   but no changes are required for people using 0.8 ".cfg" config files.
710   See the upgrading guide for details.
711 * If you used CompoundWidgets in 0.9a1, "widgets" has changed to
712   "member_widgets".
713 * If you are using a Form or a FieldSet widget you must explicitly pass
714   the "fields" parameter, the first positional parameter expected
715   since 0.9a2 is "name".
716 * If you are using a Form or a FieldSet widget with a custom template
717   you must update your template accordingly to the new templates
718   TG is using.
719
720 *Deprecations*
721
722 * WidgetsDeclaration (introduced in 0.9a1) has been renamed WidgetsList
723   for clarity.
724 * turbogears.config now has get() and update() functions that should
725   be used in place of their cherrypy.config counterparts. This change
726   was made knowing that there will be more powerful, TurboGears-specific
727   configuration in TurboGears 1.1.
728 * The field\_for method of a Form (introduced in 0.9a1) has been
729   deprecated and it's use is highly discouraged and error prone,
730   use display\_field\_for or render\_field\_for instead.
731 * In the turbogears.view module variableProviders has been renamed
732   variable_providers.
733 * turbogears.fastdata.formmaker's sqlwidgets function (introduced in
734   0.9a1) has been renamed fields_for.
735
736 *New Features*
737
738 * Controller methods can now have multiple expose() decorators, allowing
739   you to define different output formats (even with different template
740   engines) that can be chosen via tg_format or the Accept header.
741 * New AjaxGrid widget provides a grid in JavaScript that is populated via
742   an Ajax call.
743 * Three new base widgets to manage forms have been introduced:
744   CompoundFormField, RepeatingFormField and FormFieldsContainer.
745 * Experimental support for SQLAlchemy. For more complicated databases
746   or certain database requirements, SQLAlchemy handles the database more
747   gracefully. The main database layer for TurboGears remains SQLObject
748   and SQLObject is more fully supported within TurboGears. However,
749   for those who need it, SQLAlchemy support is there.
750 * display\_field\_for and render\_field\_for are automatically added to the
751   template scope of any FormFieldsContainer widget and can be used to
752   easily display/render a field with the corrects value and options.
753 * The basis for creating repeating sets of widgets has been created
754   (see RepeatingFormField and RepeatingFieldSet for an example)
755 * Catwalk can filter the data you see
756 * When using widgets, you can now have more than one form on a page
757   while retaining validation sanity.
758 * With widgets, required fields automatically get a CSS class
759 * CompoundWidgets/Forms now use FormEncode schemas, which provide
760   a number of additional validation options.
761 * AutoCompleteFields can now pass an ID back to the server when
762   submitted (instead of just passing the matching search string).
763 * quickstart includes a "release.py" file where you can put your
764   project information (including version number). This is the
765   safe mechanism for allowing your project itself to access the
766   version number while your setup script also has access to the
767   same information (Don't Repeat Yourself)
768 * quickstart has a new "tgbig" template designed for larger projects.
769   This adds a controllers package to the basic TurboGears template.
770 * CSSLink and CSSSource widgets now support "media"
771 * The AutoCompleteField now has an "only_suggest" flag which makes
772   it so that the first item on the list is not automatically submitted
773   when you press return. This is useful for search boxes (as opposed
774   to data entry fields).
775 * The turbogears.startup now contains call_on_startup and call_on_shutdown
776   lists. You can append callables to these to have them executed at
777   the right time.
778 * If you are using the i18n support, the _ function (alias of the
779   gettext function) is now properly mapped to lazy_gettext if
780   needed, this means you can use "_" for everything.
781 * Added LocalizableJSLink widget that allows scripts to be chosen based
782   on the user's locale.
783
784 *Changes*
785
786 * log\_debug\_info\_filter is now turned off by default (this is the
787   CherryPy filter that lists the request time). This filter causes
788   problems with things like JSON output. You can still turn it
789   back on via the config file.
790 * Unless you specifically configure the decodingFilter yourself,
791   TurboGears will automatically turn on CherryPy's decodingFilter
792   (expecting utf-8 input).
793 * cherrypy.lowercase_api is set to True in new quickstarted projects.
794   This should result in a performance boost, and requires that you use
795   PEP 8 style names when calling CherryPy APIs/config values.
796 * Table forms now use TH tags for the field labels, making it easier to
797   apply appropriate styling to the tables.
798 * AutoConnectHub used to support a "processConnection" (something it
799   inherited from SQLObject). This is not really a supported model of
800   operation, so it has been removed. If you do want to work that way,
801   use SQLObject's own ConnectionHub class.
802 * The test_model test has been commented out from the quickstart template,
803   because some projects don't have databases.
804
805
806 *Fixes*
807
808 * The TextArea widget now posts properly within a RemoteForm.
809 * Catwalk styling cleanup
810 * Catwalk no longer has problems with empty tables with foreign keys
811 * ForEach validator added to turbogears.validators namespace
812 * Catwalk will show related joins in the edit view
813 * SQLObject identity provider passwords are automatically encrypted
814   (this was in 0.9a1). This didn't work properly when identity wasn't
815   fully running (as in the tg-admin shell). This has been fixed.
816 * The AutoCompleteField turns off the browser's own autocompletion.
817 * A nicer error message is provided if you return something other
818   than a string or a dict from your controller method.
819 * admi18n does a better job of grouping files in the correct folder
820   when collecting strings and skips over folders like ".svn".
821 * The turbogears.url() function was flipping around path elements
822   in the application root. Applications roots are not commonly used
823   right now, but this was noticeable if you used the FeedController.
824 * Various fixes for CatWalk's database access (see tickets
825   #568, #249, #213, #618)
826 * ModelDesigner and admi18n can find your model.py file even if you
827   change your package name at quickstart time.
828
829 *Project Updates*
830
831 * Kid 0.9 / TurboKid 0.9.2
832 * CherryPy 2.2.0rc1
833 * PasteScript 0.5
834 * TurboGears' JSON output now comes from the TurboJson plugin
835
836 *Contributors*
837
838 This release comes to you thanks to the work of Michele Cella,
839 Elvelind Grandin, Ronald Jaramillo, Simon Belak, Jeff Watkins,
840 Alberto Valverde González, Jason Chu, Owen Mead-Robins,
841 Dan Weeks, Dennis Brakhane, Heikichi Umahara, Patrick Lewis,
842 Joost Moesker, Roger Demetrescu, Liza Daly.
843
844 0.9a1 (February 23, 2006)
845 -------------------------
846
847 *Backwards Incompatibilities*
848
849 * turbogears.expose no longer provides JSON by default. You need to
850   turn on JSON via the config file or by the allow_json parameter
851   to expose.
852 * The server.webpath configuration variable will not only properly set
853   outgoing URLs, but will also "fix" incoming URLs if TurboGears is
854   running as some path underneath another webserver. If you were
855   previously running a CherryPy filter to handle this, you no longer
856   need to.
857 * Directories of static files need an absolute path. The new configuration
858   file format makes it easy to provide an absolute path without
859   truly being tied to that path.
860 * Previously, if you were using a FormEncode Schema for validation for
861   an exposed method, validation would fail if a value was missing but
862   the method had a default value for that parameter. Now, if that value
863   is missing, the method will get called with the default just as it
864   is normally called in Python.
865
866 *Deprecations*
867
868 * In templates the "std" object that holds common values and functions
869   has been changed to "tg".
870 * turbogears.controllers.Root has now become
871   turbogears.controllers.RootController for clarity's sake. Root
872   continues to work, but its use is deprecated.
873 * Error handling has been greatly improved. Use of the validation_error
874   method has been deprecated. It will still be called if it
875   exists, but a DeprecationWarning will be displayed.
876 * turbogears.tests.util has been moved to turbogears.testutil
877 * CherryPy has switched to PEP8-style names for things. The old names
878   still work. However, they are deprecated.
879 * expose(html=.. is now deprecated in favor for expose(template=..
880 * the old config file format is deprecated in favor of the new Python
881   module format.
882
883 *Features*
884
885 * The TurboGears Toolbox wraps a number of useful tools in one web
886   interface. The toolbox can be extended with additional tools. Run
887   the Toolbox with tg-admin toolbox.
888 * CatWalk model/database browser is now part of the TurboGears Toolbox.
889   Thanks to Ronald Jaramillo.
890 * There's a new "widgets" package that lets you easily create forms
891   with sophisticated and dynamic behavior, all built from reusable
892   components.
893 * Identity management and access control now provided via
894   turbogears.identity module. Includes basic classes for User, Group,
895   and Permission objects via turbogears.identity.model. Thanks to
896   Jeff Watkins.
897 * There is a new internationalization package that allows you to use
898   to conveniently localize your application via gettext. Thanks to
899   Dan Jacob.
900 * Internationalization can be managed via the Toolbox (thanks to
901   Ronald Jaramillo) or the command line (thanks to Max Ischenko).
902 * Each request is implicitly wrapped in a Transaction. This solves
903   caching issues and reduces boilerplate code. It also helps codify
904   a best practice so that bad data does not end up in your database.
905 * Error handling for a method can be specified with an error_handler
906   decorator thanks to Simon Belak.
907 * TurboGears now has a feed object that can generate rss2.0, atom0.3
908   and atom1.0 feeds
909 * Template encodings other than utf-8 can be selected with the new
910   kid.encoding variable
911 * tg-admin now uses PasteScript and can now supports user specific templates
912 * tg-admin now have a update command
913 * TurboGears is now compatible with Python 2.3, thanks to Paul Clifford.
914 * TurboGears supports plugins for template engines, tg-admin commands
915 * A plugin for Cheetah templates has been released separately
916 * TurboGears now uses nose for testing
917 * Templates can now be specified relative to the current package by
918   preceding the template name with ".". For example, if you have a
919   controller in "yourpackage" with templates in a package under that
920   package, you can use "yourpackage.templates.templatename" *or*
921   ".templates.templatename". Thanks to David Bernard.
922 * New commands can be added to tg-admin via the turbogears.command
923   entry point. Thanks to Elvelind Grandin.
924 * Controllers that subclass controllers.Controller (including the
925   standard RootController) can automatically use positional
926   parameters for the methods. This means that "/entry/MONTH/DAY/YEAR"
927   can be interpreted easily by a method entry(self, month, day, year).
928 * MochiKit can now be included in your final HTML output by putting
929   turbogears.mochikit in your output dictionary (it doesn't matter
930   what the key assigned is). The advantage to doing this is that it
931   helps to ensure that MochiKit is included only once, even if you're
932   using widgets that require it.
933 * MochiKit can be enabled everywhere by setting tg.mochikit_all to
934   True in your config file.
935 * Added new "cycle" object to std in template usage. This makes it
936   easy to cycle through a number of values (and it also lets you
937   retrieve the current value). This is useful for things like
938   even and odd row classes, etc. Thanks to Karl Guertin.
939 * You can send a random value in to the controller (tg_random) that
940   will be automatically thrown out to get around issues with
941   Internet Explorer caching data too aggressively.
942 * The expose decorator has been split into input and output functions.
943   expose continues to handle output, and the new validate decorator
944   handles input (validation and form handling). This new setup makes it
945   easier to mix in your own decorators if you need to.
946 * Added turbogears.redirect which wraps the cherrypy.HTTPRedirect
947   exception to automatically call turbogears.url to help ensure
948   properly formatted URLs. You can either call turbogears.redirect
949   or "raise turbogears.redirect" if that makes the intent clearer
950   to you (as happens with the existing usage of cherrypy.HTTPRedirect)
951 * There is a new configuration file format that are slightly specialized
952   Python modules. This allows you to run Python code to determine your
953   configuration.
954 * You can now specify that you're generating a fragment of a page
955   (rather than an entire page) at expose time by passing
956   fragment=True in to expose. This is useful if you want Kid to
957   generate part of a page for an XMLHttpRequest, for example.
958 * There's a new validator, JSONValidator, that reads/writes JSON,
959   which is convenient for parameters that are coming in via JSON.
960 * new test stuff (expand)
961 * There is now a tg-admin info command that shows all the version info for the tubogears components.
962 * TurboGears now supports SQLAlchemy -- the unit-of-work is committed after
963   a successful controller request. You can use the PackageEngine to load a
964   dburi based on your package or the default sqlalchemy.dburi.
965
966 *Fixes*
967
968 * setup.py tests for Python 2.4 (thanks to Elvelind Grandin for the
969   idea and Bob Ippolito for the simplest implementation possible)
970 * base templates reload automatically (thanks to David Stanek) - NOTE
971   this ticket has been reopened ******************
972   support for this is experimental until the issues are ironed out.
973 * Kid no longer puts blank space in textareas.
974 * turbogears.flash handles unicode values properly
975
976 *Project Updates*
977
978 * replaced json-py with Bob Ippolito's simple_json
979 * the RuleDispatch package is new to TurboGears
980 * TurboGears has moved to CherryPy 2.2, which is not yet stable. We will
981   use the most stable snapshots possible in TurboGears 0.9 releases.
982 * MochiKit upgraded to 1.2
983 * setuptools upgraded to 0.6a10
984
985 *Contributors*
986
987 The following people made this release possible:
988
989 Elvelind Grandin, Ronald Jaramillo, Jeff Watkins, Dan Jacob, David Stanek,
990 Jared Kuolt, Paul Clifford, Lee McFadden, Michele Cella, Karl Guertin,
991 Max Ischenko, Mark Godfrey, Simon Belak, Jorge Godoy, Patrick Lewis,
992 Joey Smith, David Bernard, Simon Davy, Gary Godfrey, Jason Chu,
993 Liza Daly, Ryan Forsythe, Jeremy Jones, Egor Cheshkov, Claudio Martinez,
994 Leandro Lucarella, Bob Ippolito, Alberto Valverde González,
995 Brian Bockelman, Stephen Thorne, Robin Bryce, Ksenia Marasanova,
996 Ori Avtalion, Martina Oefelein, Ian Bicking, Rick Richardson,
997 Luis Bruno, Joost Moesker, BJörn Lindqvist.
998
999 A special thanks to Cliff Wells of Develix for sponsoring a bug bounty!
1000
1001 0.8.9 (February 6, 2006)
1002 ------------------------
1003
1004 * Fixes a warning message that appears with each quickstart
1005
1006 0.8.8 (January 10, 2006)
1007 ------------------------
1008
1009 * A security flaw was discovered in CherryPy's static filter. This
1010   TurboGears update changes the CherryPy requirement to 2.1.1.
1011
1012
1013 0.8.7 (January 4, 2006)
1014 -----------------------
1015
1016 This update primarily solves installation issues and is not required
1017 otherwise.
1018
1019 * quickstart corrected to properly produce egg-info directories
1020   (previously, directories could be created with "-" when it should
1021   have a "_"). Note that setuptools 0.6a9 will warn you if you have
1022   a - in your egg-info directory name. Just rename the directory,
1023   and you'll be fine.
1024 * Installation issues that people may have had earlier are resolved
1025   in this setuptools update.
1026 * version number set to 0.8.7 to reflect that this is considered the
1027   "stable" version of TurboGears vs. the current 0.9 code in svn.
1028
1029 *Project Updates*
1030
1031 * setuptools 0.6a9
1032 * sqlobject 0.7.1dev_r1457 (updated to handle the setuptools change,
1033   but also includes other bugfixes)
1034
1035
1036 0.8a6 (December 26, 2005)
1037 -------------------------
1038
1039 * Chained validators will now cause an Invalid exception to be raised
1040   as appropriate.
1041 * When validation would fail, previously an unexpected exception may
1042   be raised when an Invalid exception is expected
1043 * quickstart didn't look out for .pyo files in the same way that it did
1044   .pyc files.
1045
1046 *Project Updates*
1047
1048 * json-py updated to 3.4
1049
1050 0.8a5 (December 2, 2005)
1051 ------------------------
1052
1053 * setup has been changed to ensure that people properly
1054   get the CherryPy 2.1 release version.
1055
1056 *Project Updates*
1057
1058 * Kid updated to 0.8.0
1059 * MochiKit updated to 1.1
1060 * FormEncode updated to 0.4
1061 * setuptools updated to 0.6a8
1062
1063
1064 0.8a4 (October 25, 2005)
1065 ------------------------
1066
1067 *Project Updates*
1068
1069 * setuptools 0.6a6
1070 * CherryPy 2.1 final
1071 * MochiKit 1.0
1072
1073 *Fixes*
1074
1075 * On some servers, TurboGears can take a minute to start answering
1076 connections due to the way the OS handles incoming connections to
1077 ports that have nothing listening on them.
1078
1079
1080 0.8a3 (October 16, 2005)
1081 ------------------------
1082
1083 *Fixes*
1084
1085 * setup.py was not using setup_requires in a productive way. This has
1086   been changed, so tg-admin quickstart will no longer need to
1087   go to the internet to function.
1088 * turbogears.database.set_db_uri was not properly putting the setting
1089   in the global config section. By Robert Leftwich.
1090 * some people have had trouble with the url function not being able to
1091   find cherrypy.request.approot. This may be due to older classes that
1092   do not extend controllers.Root. This was not listed as a
1093   requirement for the URL function. The documentation for the
1094   url function has been updated, and the code has been updated
1095   to always set the approot to the top of the site at least.
1096
1097 0.8a2 (Oct 14, 2005)
1098 --------------------
1099 *Fixes*
1100
1101 * tg-admin quickstart was missing the appropriate egg-info for the sql
1102   commands to work properly
1103
1104 0.8a1 (Oct 12, 2005)
1105 --------------------
1106
1107 *Backwards Incompatibilities*
1108
1109 * All of the "turbogears*" variables have been changed to "tg_*". These
1110   are tg_template, tg_format, tg_flash and tg_js. (Note that
1111   turbogearsfmt has become tg_format and turbogearshtml has become
1112   tg_template.)
1113 * The StringBoolean validator (which has moved into FormEncode proper)
1114   now returns strings for from_python. For example, from_python(True)
1115   now returns 'true'. It used to return True.
1116 * turbogears-admin.py is now called tg-admin and is automatically
1117   generated by setuptools
1118 * The tg-admin sql commands now require a properly setup .egg-info
1119   directory to automatically find the model classes. If the egg info
1120   is not properly set up, the command can fix it automatically.
1121 * The view.render method's "html" parameter has been renamed "template"
1122   to reflect that the templates might be for XML presentations. Most
1123   people don't call view.render directly.
1124
1125 *New Features*
1126
1127 * There is a new PackageHub that is designed to allow different parts
1128   of a site to use different databases. Use of the PackageHub works
1129   just like the AutoConnectHub.
1130 * Added a new function: turbogears.database.set_db_uri. This is a
1131   more pleasant wrapper around the cherrypy config variables that
1132   can be used in command line tools and the like.
1133 * IPython is used in tg-admin shell, if it's available. By David Guaraglia.
1134 * You can specify a default format via the new format parameter
1135   to expose. For example, expose(format="json") will cause the
1136   method to output JSON by default, even if HTML is available.
1137   By Elvelind Grandin.
1138 * You can specify the Content-Type via expose. Example:
1139   expose(content_type="text/javascript"). By Elvelind Grandin.
1140 * expose now has a "template" parameter that can be used in place
1141   of "html". This is more pleasant for non-HTML applications.
1142 * On Macs, if you're running in development mode the server will
1143   be advertised via Bonjour. If you enable Bonjour bookmarks
1144   (via the Bookmarks Preferences tab in Safari), you'll see your
1145   development server show up automatically. By Bob Ippolito.
1146 * There is now a url function that can be used to generate URLs
1147   conveniently and, more importantly, with an appropriate view
1148   of where the root of the web application is.
1149 * validators can now be specified with a dict (the 0.5 way) or with a
1150   FormEncode Schema, which provides more options. By Fabian Neumann.
1151 * Quickstart now provides a basic static files skeleton. By
1152   Elvelind Grandin.
1153 * Added config setting to determine Kid's output format (HTML/XHTML).
1154   By Fabian Neumann.
1155 * In quickstart, project-start.py now takes a config file on the
1156   command line. By Elvelind Grandin.
1157 * project-start.py is also made executable automatically. By
1158   Fabian Neumann.
1159 * Added turbogears.tests.util.call function to allow you to call a
1160   controller method and get the dictionary back without processing
1161   to HTML or JSON. This allows you to test controller logic independent
1162   of presentation.
1163
1164 *Project Updates*
1165
1166 * setuptools updated to 0.6a5
1167 * SQLObject updated to 0.7 final
1168 * FormEncode updated to 0.2.3dev-r1108
1169 * CherryPy updated to 2.1-rc2
1170 * MochiKit updated to 0.9
1171 * Kid updated to 0.7adev-r186
1172
1173 *Notable Improvements in the Projects*
1174
1175 Kid can now generate plain text output using the PlainSerializer.
1176
1177 _Fixes_
1178
1179 * All of the sqlobject-admin commands now work through the use of
1180   egg metadata.
1181 * If a template was specified in the returned dictionary from an
1182   exposed method, but not in the parameters to expose itself,
1183   that template was not applied. By Ronald Jaramillo.
1184 * The content-type meta tag in the quickstart files is now automatically
1185   stripped out, because Kid's HTML serializer puts one in.
1186 * Improved comments in the quickstart config files.
1187 * There is a temporary hack to handle threadsafety issues with sqlite.
1188   This has been changed to *only* affect sqlite.
1189 * JSON output should work for Opera now (Opera appeared to have a
1190   problem with the text/javascript content-type and utf-8 encoding.)
1191   By "Lethalman".
1192 * All files needed for a project to install and run from an egg should
1193   be installed properly based on the quickstart setup script.
1194 * The flash cookie was not always deleted. Setting the path on the
1195   cookie corrected this. By Nick.
1196