Traceback (most recent call last):
Module zope.publisher.publish, line 134, in publish
result = publication.callObject(request, obj)
Module lazr.restful.publisher, line 211, in callObject
WebServicePublicationMixin, self).callObject(request, object)
Module canonical.launchpad.webapp.publication, line 498, in callObject
return mapply(ob, request.getPositionalArguments(), request)
Module zope.publisher.publish, line 109, in mapply
return debug_call(obj, args)
- __traceback_info__: <security proxied lazr.restful._resource.EntryResource instance at 0x15d50610>
Module zope.publisher.publish, line 115, in debug_call
return obj(*args)
Module lazr.restful._resource, line 943, in __call__
raise e
AttributeError: 'NoneType' object has no attribute 'remove'
OOPS-2033A62 Page-id: Archive:EntryResource:deletePackageUploader
The code in question, since it's been lovingly omitted in the traceback from Zope, is:
permission = ArchivePermissi on.selectOneBy(
archive= archive, person=person,
sourcepack agename= sourcepackagena me,
permission =ArchivePermiss ionType. UPLOAD)
Store. of(permission) .remove( permission)
Store.of(None) returns None, so I suspect this is a race condition. Either way, if the selectOneBy returns None then it should just return as the permission was already deleted.