Jim Baack wrote:
When I attempt to copy/paste or import a Plone site where I've created a single member of a remember-derived type I get the following assertion error (relevant code also included below). When I change the offending line assert len(members) == 1 to
    assert len(members) >= 1
reflecting the possibility of more than one result in the query, everything 
works fine and the cloned member works fine, retains proper ownership, etc.

Clearly, this isn't a real fix. Any ideas on why this happens and a proper way 
to deal with it. Thanks.

i'm not exactly sure what's going on. the assertion seems valid; there should only ever be one user auth provider for a specific login id. this has to be the case, otherwise the system won't know which one to use when you try to login.

what i don't know is why you're getting more than one result back from the query. maybe there's something unusual about the state of the catalog during the paste that is causing the problem.

i'll have to try to reproduce... if you want to dig deeper, i'd recommend putting a break point right where the failure is and examining the query results, so you can see exactly what the extra result might be.

-r



Jim Baack

-------------------------------------------------------


Traceback (innermost last):

    * Module ZPublisher.Publish, line 119, in publish
    * Module ZPublisher.mapply, line 88, in mapply
    * Module ZPublisher.Publish, line 42, in call_object
    * Module OFS.ObjectManager, line 609, in manage_importObject
    * Module OFS.ObjectManager, line 631, in _importObjectFromFile
    * Module OFS.ObjectManager, line 347, in _setObject
    * Module zope.event, line 23, in notify
    * Module zope.component.event, line 26, in dispatch
    * Module zope.component._api, line 130, in subscribers
    * Module zope.component.registry, line 290, in subscribers
    * Module zope.interface.adapter, line 535, in subscribers
    * Module zope.component.event, line 33, in objectEventNotify
    * Module zope.component._api, line 130, in subscribers
    * Module zope.component.registry, line 290, in subscribers
    * Module zope.interface.adapter, line 535, in subscribers
    * Module OFS.subscribers, line 119, in dispatchObjectMovedEvent
    * Module zope.app.container.contained, line 182, in dispatchToSublocations
    * Module zope.component._api, line 130, in subscribers
    * Module zope.component.registry, line 290, in subscribers
    * Module zope.interface.adapter, line 535, in subscribers
    * Module OFS.subscribers, line 119, in dispatchObjectMovedEvent
    * Module zope.app.container.contained, line 182, in dispatchToSublocations
    * Module zope.component._api, line 130, in subscribers
    * Module zope.component.registry, line 290, in subscribers
    * Module zope.interface.adapter, line 535, in subscribers
    * Module OFS.subscribers, line 119, in dispatchObjectMovedEvent
    * Module zope.app.container.contained, line 182, in dispatchToSublocations
    * Module zope.component._api, line 130, in subscribers
    * Module zope.component.registry, line 290, in subscribers
    * Module zope.interface.adapter, line 535, in subscribers
    * Module Products.remember.utils, line 103, in fixOwnership
    * Module Products.remember.content.member, line 115, in fixOwnership
    * Module Products.remember.content.member, line 131, in getUser
    * Module Products.PluggableAuthService.PluggableAuthService, line 223, in 
getUserById
    * Module Products.PluggableAuthService.PluggableAuthService, line 730, in 
_findUser
    * Module Products.membrane.plugins.propertymanager, line 89, in 
getPropertiesForUser
    * Module Products.membrane.tools.membrane, line 228, in getUserAuthProvider

AssertionError


--------------------------------------------------------------

   def getUserAuthProvider(self, login):
                """
                Return the unique object that is the authentication provider
                for the provided login.
                """
                if not login: # could be either '' or None
                    return None
                uSR = self.unrestrictedSearchResults
                idxname = 'getUserName'
                if self.case_sensitive_auth and \
                       ('exact_getUserName' in self._catalog.indexes):
                    idxname = 'exact_getUserName'
                query = {idxname: login,
                         'object_implements': IMembraneUserAuth.__identifier__}
                members = uSR(**query)
        
                if not members:
                    return None
        
-->             assert len(members) == 1
                member = members[0]._unrestrictedGetObject()
                return member



--
Archive: 
http://www.openplans.org/projects/remember/lists/remember/archive/2008/07/1215038176436
To unsubscribe send an email with subject "unsubscribe" to [EMAIL PROTECTED]  
Please contact [EMAIL PROTECTED] for questions.




--
Archive: 
http://www.openplans.org/projects/remember/lists/remember/archive/2008/07/1215039422740
To unsubscribe send an email with subject "unsubscribe" to [EMAIL PROTECTED]  
Please contact [EMAIL PROTECTED] for questions.

Reply via email to