awesome now it works, I had to wrap some vars with str() and booom
@service.rss
def showLatest():
shopnames = db().select(db.shopname.ALL,limitby=(0,20))
return dict(
title=str(response.title),
link=URL(request.application,'default','call',args=
['rss','showLatest']),
description=str(response.description),
created_on=request.now,
entries=[
dict(title=i.name,
link = URL(request.application,
'default','show',args=[i.id]),
description = '%s added %s on %s'%(db.auth_user
[i.posted_by].first_name,i.name,i.posted_on),
created_on = str(i.posted_on)) for i in
shopnames])
insteresting is that i had to do
created_on = str(i.posted_on) in the entries array
but
created_on=request.now in the main description worked just fine
Thank you soooo much
On Oct 28, 4:10 pm, mdipierro <[email protected]> wrote:
> One of your variables (response.description, response.title, ..?) is a
> T(....), it should be a str(T(....)) else it cannot be serialized in
> XML.
>
> On Oct 28, 9:28 am, selecta <[email protected]> wrote:
>
>
>
> > i created a rss service with adding the following to the default
> > controller
>
> > @service.rss
> > def showLatest():
> > shopnames = db().select(db.shopname.ALL,limitby=(0,20))
> > return dict(
> > title=response.title,
> > link=URL(request.application,'default','call',args=
> > ['rss','showLatest']),
> > description=response.description,
> > created_on=request.now,
> > entries=[
> > dict(title=i.name,
> > link = URL(request.application,
> > 'default','show',args=[i.id]),
> > description = '%s added %s on %s'%(db.auth_user
> > [i.posted_by].first_name,i.name,i.posted_on),
> > created_on = i.posted_on) for i in shopnames])
>
> > but when I try to
> > callhttp://127.0.0.1:8000/frisur/default/call/rss/showLatest
> > i get
>
> > Traceback (most recent call last):
> > File "/home/me/Dev/web2py/gluon/restricted.py", line 184, in
> > restricted
> > exec ccode in environment
> > File "/home/me/Dev/web2py/applications/frisur/controllers/
> > default.py", line 113, in <module>
> > File "/home/me/Dev/web2py/gluon/globals.py", line 102, in <lambda>
> > self._caller = lambda f: f()
> > File "/home/me/Dev/web2py/applications/frisur/controllers/
> > default.py", line 111, in call
> > return service()
> > File "/home/me/Dev/web2py/gluon/tools.py", line 2416, in __call__
> > return self.serve_rss(request.args[1:])
> > File "/home/me/Dev/web2py/gluon/tools.py", line 2297, in serve_rss
> > return serializers.rss(feed)
> > File "/home/me/Dev/web2py/gluon/serializers.py", line 52, in rss
> > return rss2.dumps(rss)
> > File "/home/me/Dev/web2py/gluon/contrib/rss2.py", line 571, in dumps
> > rss.write_xml(s)
> > File "/home/me/Dev/web2py/gluon/contrib/rss2.py", line 24, in
> > write_xml
> > self.publish(handler)
> > File "/home/me/Dev/web2py/gluon/contrib/rss2.py", line 433, in
> > publish
> > _element(handler, 'title', self.title)
> > File "/home/me/Dev/web2py/gluon/contrib/rss2.py", line 56, in
> > _element
> > obj.publish(handler)
> > AttributeError: 'lazyT' object has no attribute 'publish'
>
> > did I do something wrong or is this a bug?
> > callinghttp://127.0.0.1:8000/frisur/default/showLatestworksjust
> > fine
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---