[Zope-CMF] Problem after invokeFactory
Chris Withers
chris at simplistix.co.uk
Wed Feb 2 05:25:45 EST 2005
Rob Boyd wrote:
> # From foo_add_control.py
> try:
> context.invokeFactory('Foo', id, context.REQUEST.RESPONSE)
> # It no longer gets to here, but it used to!
You'r passing the response object, maybe a redirect is being raised as a
result? try NOT passing the response object and see what happens...
> # Tested with: raise "Just added a new foo" but no exception raised
it wouldn't, 'cos you swallow it further down, d'oh!
> except:
> return context.setStatus(False, 'Could not add Foo %s' % id )
why why why do people feel the need to wrap things in global
try/excepts?! All this does is mask errors that you want to know about,
and might even cause ZODB corruption if you're really unlucky...
(google for try except and conflict error)
> # Foo's factory method
> def addGroup(self, id, title = '', REQUEST = {}):
> """
> Factory method for a Foo object
> """
> foo = Foo(id, title)
> self._setObject(id, foo)
>
> # make sure that creator has special role to begin with
> foo = getattr(self, id)
> membership = getToolByName(self, 'portal_membership')
> member = membership.getAuthenticatedMember()
>
> foo.manage_setLocalRoles(member.getUserName(), ['FooRole',])
>
> if REQUEST.has_key('RESPONSE'):
> return REQUEST.RESPONSE.redirect('manage_main')
bingo, there's your redirect. When did that get added?
Chris
--
Simplistix - Content Management, Zope & Python Consulting
- http://www.simplistix.co.uk
More information about the Zope-CMF
mailing list