[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