[Product-Developers] Re: storing site-wide global persistent data

Dylan Jay gmane at dylanjay.com
Tue Jun 3 15:58:08 UTC 2008


Jordan Baker wrote:
> In the older days you just added a property to the site portal, or added 
> an object under portal_properties.
> 
> I've noticed that plone.app.controlpanel uses views to adapt the portal 
> root for control panel purposes and adapts the portal root to these 
> property settings.
> 
> If I want to setup global settings for my own application would this 
> pattern also make sense? Or should I do something else.
> 
> Using annotation on the Plone portal object is currently what I'm doing.
> 
> """UNTESTED code"""
> class IAppSettings(object):
> app_path = Attribute("path to the application")
> 
> class PortalAppSettings(object):
> adapts(IPloneSiteRoot)
> implements(IAppSettings)
> 
> def __init__(self, context):
> self.context = context
> self.settings = IAnnotations(self.context).setdefault(ANNOTATION_KEY, {})
> 
> def get_base_path(self):
> return self.settings.get('base_path', '/tmp/releases')
> 
> def set_base_path(self, base_path):
> self.settings['base_path'] = base_path
> base_path = property(get_base_path, set_base_path)
> 
> This sort of thing could be generalized even further. But is this a good 
> approach for storing settings like this?

yep pretty much. look at zope3 utilities on 
http://www.openplans.org/projects/plonecheatsheet/








More information about the Product-Developers mailing list