On Sat, Feb 11, 2006 at 12:16:48AM -0000, Michele Cella wrote: > > > Jason Chu wrote: > > Working with the new widget code some more... > > > > Something I've noticed while converting all our widgets, if you have a > > widget who's outermost tab has a py:strip in it (this is also the tag > > that has the xmlns:py in it), you will get a trackback that looks > > something like this: > > > > Traceback (most recent call last): > > File > > "/home/jchu/coding/turbogears/thirdparty/cherrypy/cherrypy/_cphttptools.py", > > line 99, in _run > > self.main() > > File > > "/home/jchu/coding/turbogears/thirdparty/cherrypy/cherrypy/_cphttptools.py", > > line 247, in main > > body = page_handler(*virtual_path, **self.params) > > File "<string>", line 3, in month > > File "/home/jchu/coding/turbogears/turbogears/controllers.py", line 199, > > in expose > > func, tg_format, html, fragment, *args, **kw) > > File "/home/jchu/coding/turbogears/turbogears/database.py", line 193, in > > run_with_transaction > > retval = func(*args, **kw) > > File "/home/jchu/coding/turbogears/turbogears/controllers.py", line 220, > > in _execute_func > > return _process_output(tg_format, output, html, fragment) > > File "/home/jchu/coding/turbogears/turbogears/controllers.py", line 71, > > in _process_output > > fragment=fragment) > > File "/home/jchu/coding/turbogears/turbogears/view.py", line 60, in render > > return engine.render(info, format, fragment, template) > > File "/home/jchu/coding/turbogears/plugins/kid/turbokid/kidsupport.py", > > line 97, in render > > return t.serialize(encoding=self.defaultencoding, output=format, > > fragment=fragment) > > File "/home/jchu/coding/turbogears/thirdparty/kid/kid/__init__.py", line > > 236, in serialize > > return serializer.serialize(self, encoding, fragment) > > File "/home/jchu/coding/turbogears/thirdparty/kid/kid/serialization.py", > > line 51, in serialize > > text = list(self.generate(stream, encoding, fragment)) > > File "/home/jchu/coding/turbogears/thirdparty/kid/kid/serialization.py", > > line 327, in generate > > for ev, item in self.apply_filters(stream): > > File "/home/jchu/coding/turbogears/thirdparty/kid/kid/pull.py", line 206, > > in _coalesce > > for ev, item in stream: > > File "/home/jchu/coding/turbogears/thirdparty/kid/kid/filter.py", line > > 21, in transform_filter > > for ev, item in apply_matches(stream, template, templates, apply_func): > > File "/home/jchu/coding/turbogears/thirdparty/kid/kid/filter.py", line > > 31, in apply_matches > > item = stream.expand() > > File "/home/jchu/coding/turbogears/thirdparty/kid/kid/pull.py", line 95, > > in expand > > for ev, item in self._iter: > > File "/home/jchu/coding/turbogears/thirdparty/kid/kid/pull.py", line 164, > > in _track > > for p in stream: > > File "/home/jchu/coding/turbogears/thirdparty/kid/kid/pull.py", line 206, > > in _coalesce > > for ev, item in stream: > > File "/home/jchu/coding/fatboy/fatboy/templates/calendar/month.py", line > > 224, in _pull > > yield (START, current) > > File "/home/jchu/coding/turbogears/turbogears/widgets/base.py", line 39, > > in lockwidget > > output = self.__class__.display(self, *args, **kw) > > File "/home/jchu/coding/turbogears/turbogears/widgets/base.py", line 176, > > in display > > return view.transform(template_vars, template=self.template_c) > > File "/home/jchu/coding/turbogears/turbogears/view.py", line 65, in > > transform > > return engine.transform(info, template) > > File "/home/jchu/coding/turbogears/plugins/kid/turbokid/kidsupport.py", > > line 114, in transform > > return ElementStream(t.transform()).expand() > > File "/home/jchu/coding/turbogears/thirdparty/kid/kid/pull.py", line 111, > > in expand > > current.text = item > > AttributeError: 'list' object has no attribute 'text' > > > > Someone mentioned this on IRC the last week, it seems to be a Kid bug > in pull.py: > > current = self.current > if current is None: > current = [] > > so current can be a list and then they are trying to access: > > current.text > > on a list. > > Should be an easy fix I guess. > > > The reason we'd py:strip all those out tags is because of the ugly xmlns:py > > in the output. > > > > That's the actual TextField template: > > template = """ > <input xmlns:py="http://purl.org/kid/ns#" > type="text" > name="${name}" > class="${field_class}" > id="${field_id}" > value="${value}" > py:attrs="attrs" > /> > """ > > but as you can see xmlns:py is stripped from the final output: > > >>> from turbogears import widgets as w > >>> text = w.TextField(name="name") > >>> text.render() > '<INPUT ID="name" TYPE="text" CLASS="textfield" NAME="name">' > >>> text.render(format="xhtml") > '<input id="name" type="text" class="textfield" name="name"></input>' > >>> > > what's happening on your output? > > Ciao > Michele
Well look at that, you're right. I could have sworn that it was output before. Jason -- If you understand, things are just as they are. If you do not understand, things are just as they are.
pgpaChFaBS6nu.pgp
Description: PGP signature

