[Zope3-Users] ForbiddenAttribute error
Mikael Moutakis
mikaelmoutakis at gmail.com
Fri Jul 6 10:29:03 EDT 2007
Hello
I wrote a feed aggregator using the module FeedParser. I stored the RSS feed
url in a persistant content component and retrieved the feed data in the
view class. But I thought that I should move the feed data into the content
component class instead of retrieving it in the view class. I get a
ForbiddenAttribute error when viewing the class
class Feed(Persistent):
"""A class that stores the feed URLs"""
implements(IFeed)
__name__ = __parent__ = None
url=[]
def getRawFeedData(self):
return [feedparser.parse(item) for item in self.url]
class IFeed(Interface):
def getRawFeedData():
"""retrieves raw feed data"""
url = List (
title = u"URL",
description = u"URL for newsfeed",
required = True,
value_type=TextLine(title=u"Tool")
)
The content component and the interface are registred as thus:
<class class=".components.Feed">
<implements
interface="zope.annotation.interfaces.IAttributeAnnotatable"
/>
<require
permission="zope.View"
interface =".interfaces.IFeed"
/>
<require
permission="zope.ManageContent"
set_schema=".interfaces.IFeed"
/>
</class>
<!-- marker interface for feed -->
<interface
interface=".interfaces.IFeed"
type="zope.app.content.interfaces.IContentType"
/>
And the browser class
class FeedView(BrowserPage):
"""A view for the RSS feed aggregator object"""
__call__ = ViewPageTemplateFile("feed_view.pt")
def getMetadata(self):
"""Retrieves the title and description of the feed aggregator from
the persistant storage"""
return IZopeDublinCore(self.context)
def getFeed(self):
feeds=self.context.getRawFeedData()
result=[]
for feed in feeds:
######## it fails here #############
result+=[(e.updated_parsed, feed.channel, e) for e in
feed.entries ]
result.sort(reverse=True)
return result
Which is registered in the following way
<!-- simple browser view of a single feed aggregator -->
<browser:page
for="kousai.feedreader.interfaces.IFeed"
name="index.html"
class="kousai.feedreader.browser.components.FeedView"
permission="zope.View"
/>
The traceback
...
File "/Users/admin/Zope-3.3.1/build/lib.darwin-
8.9.0-Power_Macintosh-2.4/zope/tales/tales.py", line 696, in evaluate
return expression(self)
-
/Users/mikaelmoutakis/zpi/myfiles/kousai/feedreader/browser/feed_view.pt
- Line 15, Column 2
- Expression: <PythonExpr ( view.getFeed()[0:10])>
- Names:
{'args': (),
'context': <kousai.feedreader.components.Feed object at 0x3772c70>,
'default': <object object at 0x41560>,
'loop': {},
'nothing': None,
'options': {},
'repeat': {},
'request': <zope.publisher.browser.BrowserRequest instance URL=
http://localhost:8080/++skin++Kousai/feed/index.html>,
'template': <
zope.app.pagetemplate.viewpagetemplatefile.ViewPageTemplateFile object at
0x307d3f0>,
'usage': <zope.pagetemplate.pagetemplate.TemplateUsage object at
0x37e35d0>,
'view': <zope.app.publisher.browser.viewmeta.FeedView object at
0x37e3270>,
'views':
<zope.app.pagetemplate.viewpagetemplatefile.ViewMapperobject at
0x37e3250>}
File "/Users/admin/Zope-3.3.1/build/lib.darwin-
8.9.0-Power_Macintosh-2.4/zope/tales/pythonexpr.py", line 59, in __call__
return eval(self._code, vars)
- __traceback_info__: ( view.getFeed()[0:10])
File "<string>", line 0, in ?
File
"/Users/mikaelmoutakis/zpi/myfiles/kousai/feedreader/browser/components.py",
line 39, in getFeed
result+=[(e.updated_parsed, feed.channel, e) for e in feed.entries ]
ForbiddenAttribute: ('entries', {'feed': {'publisher'.....
....
Haven't I declared the getRawFeedData method by including it in the IFeed
interface?
Thanks!
/Mikael M
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.zope.org/pipermail/zope3-users/attachments/20070706/acde711f/attachment.htm
More information about the Zope3-users
mailing list