> -----Original Message-----
> From: Rob Miller [mailto:[email protected]]
Hi Rob,
Thanks for your time answering. I think I didn't make it clear enough
however...
> >> I'm updating user properties as follows
> >> membershipTool = getToolByName(self.context,
> >> 'portal_membership')
> >> member = membershipTool.getMemberById(userId)
> >> if newprops:
> >> member.setMemberProperties(newprops)
> >>
> >> The properties are being updated and indexed in the membrane
> >> catalog but
> >> not
> >> reindexed as normal content in portal_catalog. Anyone know if this
> >> is a
> >> bug
> >> or how I can workaround it?
> >
> > I've managed a workaround with
> >
> > mbmember = membraneTool.getUserAuthProvider(login)
> > if mbmember:
> > mbmember.reindexObject()
>
> small, unrelated nitpick... i generally try to avoid using "if
> some_object" when what i really mean is "if some_object is None". in
> Zope, folderish objects will evaluate to False if they contain no
> subobjects, so if you were using folderish members you might get a
> different result than you expect there.
Thanks, I never knew that about Folderish.
> > but shouldn't membrane itself call reindexObject in its default
> > properties
> > adaptor? (It doesn't at least in the version I'm using).
>
> the properties adapter has nothing to do with the code above. you're
> retrieving and manipulating the member object, i.e. the site content,
It does have to do with the code above.
membershipTool = getToolByName(self.context,'portal_membership')
member = membershipTool.getMemberById(userId)
member.setMemberProperties(newprops)
This is the code I had originally and what I'd expect to work.
MembershipTool is PlonePAS.memberdata which in turn calls
sheet.setProperty(user, k, v) on the propertysheets got from PAS.
That in turn calls membrane.factories.properties.setPropertiesForUsers
Which then calls
mutator = field.getMutator(self.context)
if mutator is not None: # skip ComputedFields
mutator(value)
> directly. if you were making calls to the _user_ object provided by
> acl_users, then the properties adapter would be used by the PAS plug-in.
>
> you're using remember, right? i'm guessing so, b/c membrane doesn't
> provide any member objects, so there's no setMemberProperties method
No not using remember.
> to call. anyway, setMemberProperties (which is just an alias for
> setProperties) just delegates to the update method, which is a core
> part of AT, and which does indeed call reindexObject upon completion.
Nope. See the above cope snippets. Perhaps its changed in the latest
version. I'm using a 1.1b3 to keep compatible with plone2.5
> i'm not sure why that's not working for you. maybe you can step
> through the code to see what's going on? i'd put a pdb at L333 of
> member.py, where it says "self.update(**mapping)".
>
> the first thing i'd guess is that the catalog multiplex stuff isn't
> set up right, that your member type is only registered with one
> catalog, not with both. but that wouldn't explain why it does get
> reindexed when you call reindexObject yourself.
It gets indexed during normal editing. Just not via memberdatatool ie via
PAS.
> -r
>
>
>
> --
> Archive:
> http://www.openplans.org/projects/remember/lists/remember/archive/2008/12/
> 1229410881536
> To unsubscribe send an email with subject "unsubscribe" to
> [email protected]. Please contact remember-
> [email protected] for questions.
--
Archive:
http://www.openplans.org/projects/remember/lists/remember/archive/2008/12/1229432408967
To unsubscribe send an email with subject "unsubscribe" to
[email protected]. Please contact
[email protected] for questions.