OOPS-2045DV1 shows an AttributeError: 'NoneType' object has no attribute 'using' raised while using the API to get a list of archive subscriptions for a given person.
Traceback (most recent call last):
Module zope.publisher.publish, line 131, in publish
obj = request.traverse(obj)
Module lazr.restful.publisher, line 275, in traverse
result = super(WebServiceRequestTraversal, self).traverse(ob)
Module zope.publisher.browser, line 542, in traverse
ob = super(BrowserRequest, self).traverse(obj)
Module zope.publisher.http, line 455, in traverse
ob = super(HTTPRequest, self).traverse(obj)
Module zope.publisher.base, line 261, in traverse
obj = publication.traverseName(self, obj, entry_name)
Module lazr.restful.publisher, line 120, in traverseName
request, ob, name)
Module zope.app.publication.zopepublication, line 197, in traverseName
ob2 = adapter.publishTraverse(request, nm)
Module canonical.launchpad.webapp.publisher, line 672, in publishTraverse
nextobj = self._publishTraverse(request, name)
Module canonical.launchpad.webapp.publisher, line 768, in _publishTraverse
nextobj = handler(self, nextstep)
Module lp.soyuz.browser.archive, line 321, in traverse_subscription
person, archive=self.context)
Module lp.soyuz.model.archivesubscriber, line 192, in getBySubscriber
return self._getBySubscriber(subscriber, archive, current_only, False)
Module lp.soyuz.model.archivesubscriber, line 185, in _getBySubscriber
return store.using(*origin).find(
AttributeError: 'NoneType' object has no attribute 'using'
traverse_ subscription is buggy:
try: IPersonSet) .getByName( person_ name)
person = getUtility(
except NotFoundError:
return None
getByName doesn't raise NotFoundError when the name doesn't exist but return None instead, thus passing None as the subscriber name in getBySubscriber.