[Product-Developers] Re: Mixing member properties into AT-based content/Membrane?

Rob Miller ra at burningman.com
Tue Oct 21 23:28:48 UTC 2008


Andreas Jung wrote:
> Hi there,
> 
> we work with FacultyStaffDirecty where one core content-type of FSD
> is 'Person'. The 'Person' implementation uses Membrane to integrate with
> Plone:
> 
> class Person(OrderedBaseFolder, ATCTContent):
>     """A person in the Faculty/Staff directory"""
>     meta_type = portal_type = "FSDPerson"
> 
> 
>     implements(IPerson,
>                IUserAuthProvider,
>                IPropertiesProvider,
>                IGroupsProvider,
>                IGroupAwareRolesProvider,
>                IAttributeAnnotatable,
>                IUserChanger)
> 
> Within a current project Plone users authenticated against LDAP and 
> member properties like name, address and email should be taken from LDAP 
> (the mapping from LDAP to member properties is not the problem)
> and being used directly as properties of Person instances. This means
> that the accessor methods of the related fields of the Person schema
> should access the properties of the related members instead of 
> pre-defined accessor methods performing attribute accesson the instance 
> itself. This is something that can be achieved through Membrane?

i think using a workaround like raphael's AT storage layer is probably your 
best bet.  what you're trying to do is a little bit upside-down.  Membrane 
provides PAS plug-ins so you can use AT field values as member properties. 
and you also have other PAS plug-ins that let you use LDAP data as member 
properties.  all of the properties are already available in the MemberData 
object, but of course this doesn't provide the auto-generated UI that AT 
content gives you, so it's probably not what you want.

by using raphael's storage, or possibly by repurposing CMFMember's LDAPStorage 
(http://svn.zope.de/plone.org/collective/CMFMember/trunk/storages/), you can 
make the data available on your Person object.  you'll want to make sure you 
_don't_ flag those fields with "user_property=True", however, or you might end 
up with some weird results as you'll be sending the same values through as 
member properties from two different sources.

-r





More information about the Product-Developers mailing list