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.

Attachment: pgpaChFaBS6nu.pgp
Description: PGP signature

Reply via email to