[Zope-PAS] Re: Properties Plugin

Tres Seaver tseaver at palladion.com
Tue Mar 20 13:21:51 EDT 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Christian Klinger wrote:

> i try to add Properties to all of my PAS-Users.
> The Properties should be the adresse information
> of my Users, which i get about an WebService.
> 
> Now i have developed a very simple example of a
> IPropertiesPlugin:
> 
> 
>      security.declarePrivate('getPropertiesForUser')
>      def getPropertiesForUser(self, user, request=None):
>          """ Fullfill PropertiesPlugin requirements """
>          ### Cache Implementation
>          view_name = createViewName('retrievePropsData', user)
>          keywords = {'key' : user}
>          properties = self.ZCacheable_get( view_name = view_name,
>                                             keywords = keywords,
>                                             default = None )
>          if properties is None:
>              properties = {}
>              properties['addr'] = "SampleData"
>              tt=self.ZCacheable_set( properties ,
>                                        view_name=view_name,
>                                        keywords=keywords )
>          return properties
> 
> Now i have some questions about it:
> 
> Shoud I use (and why) the UserPropertySheet instead of a simple dict?

An IPropertiesPlugin is supposed to return a mapping (a dict should be
fine).  The PAS then calls the PropertiedUser's 'addPropertysheet'
method, passing the mapping.  The user object then converts the mapping
to a UserPropertySheet, and stores is in its own namespace.

> Is the cache implementation ok?

By eye, it looks fine.  I'm assuming that your real plugin would be
doing something expensive in the case of a cache miss.

> Does anyone have a simple example for this task?

I don't know if it is simple, but the LDAPMultiPlugins product is
certainly one which uses caching in the way you are investigating:

  http://www.dataflake.org/software/ldapmultiplugins


http://svn.dataflake.org/LDAPMultiPlugins/tags/1.5/LDAPMultiPlugin.py?view=markup


Tres.
- --
===================================================================
Tres Seaver          +1 540-429-0999          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGABgv+gerLs4ltQ4RAmVgAJwM9xgkgFZVdtXe3np1cSxg67xrugCaAmw5
gvTk5NH64meckbjlmIGIU50=
=greX
-----END PGP SIGNATURE-----



More information about the Zope-PAS mailing list