Ticket #2407 (closed task: fixed)
Support Genshi in TG widget templates
| Reported by: | chrisz | Owned by: | chrisz |
|---|---|---|---|
| Priority: | normal | Milestone: | 1.5 |
| Component: | TurboGears | Version: | 1.1 |
| Severity: | normal | Keywords: | genshi kid widgets |
| Cc: |
Description
Since TurboGears 1.1 it is possible to use Genshi for page templates, and Genshi has become the default templating engine for TurboGears. Quickstarted projects are created with Genshi templates now. Yet, native TG widgets still can only work with Kid templates; Genshi for widget templates is only possible through ToscaWidgets.
This is a very inconsistent and unsatisfaying state of affairs. TG widgets really should support Genshi templates nowadays, and all the widgets provided by TurboGears should come with Genshi templates instead of Kid templates. This will improve performance, allows us to get rid of the Kid dependency and avoids incompatibilities between the page and widget templating (e.g. #2390).
However, because in the TG 1.x branch backward compatibility is a crucial issue (the main reason why we still are keeping TG 1.x alive), the native TG widgets should still support Kid templates, and the TG widget system should automatically convert the output between templating engines (from Genshi's MarkupStream to Kid's ElementStream and vice versa).
Change History
comment:2 Changed 4 years ago by chrisz
After a larger clean-up operation in the widgets package in r6949, the main work has now been accomplished in r6954.
Still to be done:
- Convert templates for all widgets included with TG from Kid to Genshi
- Switch the default_engine for TG widgets from Kid to Genshi
- Shall we make the default_engine configurable?
- Add some more test, e.g. for displaying a Genshi widget with Kid subwidgets on a Kid page, and displaying a Kid widget with Genshi subwidgets on a Genshi page
- Add some documentation, particularly for the new engine_name attribute
- Should we set engine_name by default to None (i.e. try to derive the engine from the template), or to 'genshi'? The former will be a bit more backward compatible: Pld widgets with Kid templates and no engine_name attribute would inherit the engine_name='genshi' setting, i.e. try to render the Kid template with Genshi.
comment:4 Changed 3 years ago by Chris Arndt
Documentation added to the wiki here: http://docs.turbogears.org/1.5/WidgetTemplateEngine
comment:5 Changed 3 years ago by chrisz
Demo/Benchmark? added to the wiki page above.
I've created the 1.5-genshi-widgets branch for working on this issue.