Author: jmorliaguet Date: Sat May 6 00:06:09 2006 New Revision: 3051 Modified: cpsskins/branches/paris-sprint-2006/setup/interfaces.py cpsskins/branches/paris-sprint-2006/setup/manager.py cpsskins/branches/paris-sprint-2006/setup/setting.py cpsskins/branches/paris-sprint-2006/setup/settings.py cpsskins/branches/paris-sprint-2006/ui/panels/settings_section.pt cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py
Log: - cleanup and update to the new API to use URIs for settings instead of names Modified: cpsskins/branches/paris-sprint-2006/setup/interfaces.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/setup/interfaces.py (original) +++ cpsskins/branches/paris-sprint-2006/setup/interfaces.py Sat May 6 00:06:09 2006 @@ -77,6 +77,8 @@ resource = Attribute("The resource.") + custom = Attribute(u"Is this a custom setting?.") + def __call__(): """Return the resource""" @@ -86,6 +88,8 @@ def isLocal(): """Returns true if the setting is local""" + def isCustom(): + """Returns true if the setting is a customized setting""" class IGlobalSetting(ISetting): """ """ @@ -95,8 +99,6 @@ class ILocalSetting(ISetting): """ """ - custom = Attribute(u"Is this a custom setting?.") - class IResource(Interface): def getResource(): Modified: cpsskins/branches/paris-sprint-2006/setup/manager.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/setup/manager.py (original) +++ cpsskins/branches/paris-sprint-2006/setup/manager.py Sat May 6 00:06:09 2006 @@ -31,8 +31,8 @@ from cpsskins.utils import getThemeManager class ResourceManager(object): - """Resource manager utility""" - + """Resource manager utility. + """ implements(IResourceManager) def __init__(self, context=None): @@ -40,7 +40,6 @@ self.gsm = getGlobalSiteManager() - ### Registration of settings ##################################### def register(self, name=u'', title=u'', resource=None, filename=None, @@ -59,8 +58,8 @@ settings = getThemeManager(context).getSettings() chooser = INameChooser(settings) name = name or chooser.chooseName(title, context) - setting = LocalSetting(name=name, title=title, - resource=resource, custom=custom) + setting = LocalSetting(name=name, title=title, resource=resource) + setting.custom = custom settings[name] = setting uri = IIdentifiable(setting).getURI() settings.registerUtility(setting, ISetting, uri) @@ -159,7 +158,7 @@ setting = settings.queryUtility(ISetting, uri) if setting is None: raise ValueError("No such setting: '%s'." % uri) - return ILocalSetting.providedBy(setting) and setting.custom + return setting.isCustom() def customize(self, uri=u'', context=None): if context is None: @@ -190,4 +189,3 @@ self.unregister(uri, context) - Modified: cpsskins/branches/paris-sprint-2006/setup/setting.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/setup/setting.py (original) +++ cpsskins/branches/paris-sprint-2006/setup/setting.py Sat May 6 00:06:09 2006 @@ -30,6 +30,8 @@ """ implements(ISetting) + custom = False + def __init__(self, name=u'', title=u'', resource=None): self.name = name self.title = title @@ -50,6 +52,9 @@ def isLocal(self): return ILocalSetting.providedBy(self) + def isCustom(self): + return self.custom + class GlobalSetting(Setting): """A local persistent setting """ @@ -66,7 +71,6 @@ """ implements(ILocalSetting) - def __init__(self, custom=False, **kw): + def __init__(self, **kw): super(LocalSetting, self).__init__(**kw) - self.custom = custom Modified: cpsskins/branches/paris-sprint-2006/setup/settings.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/setup/settings.py (original) +++ cpsskins/branches/paris-sprint-2006/setup/settings.py Sat May 6 00:06:09 2006 @@ -18,12 +18,13 @@ __docformat__ = "reStructuredText" from zope.app.container.btree import BTreeContainer +from zope.component.interfaces import IComponentLookup from zope.component.persistentregistry import PersistentComponents - from zope.interface import implements, Interface -class ISettings(Interface): - """ """ + +class ISettings(IComponentLookup): + """Settings registry""" class Settings(BTreeContainer, PersistentComponents): Modified: cpsskins/branches/paris-sprint-2006/ui/panels/settings_section.pt ============================================================================== --- cpsskins/branches/paris-sprint-2006/ui/panels/settings_section.pt (original) +++ cpsskins/branches/paris-sprint-2006/ui/panels/settings_section.pt Sat May 6 00:06:09 2006 @@ -4,17 +4,18 @@ <li tal:repeat="info setting_info/?section|nothing"> <tal:block content="info/setting/title" /> <tal:block define="name info/name; + uri info/uri; readonly info/readonly; custom info/custom"> - <a tal:attributes="href string:@@customizeSetting?name=$name" + <a tal:attributes="href string:@@customizeSetting?uri=$uri" tal:condition="not:custom">[customize]</a> - <a tal:attributes="href string:@@removeSetting?name=$name" + <a tal:attributes="href string:@@removeSetting?uri=$uri" tal:condition="python: not custom and not readonly">[remove]</a> - <a tal:attributes="href string:@@decustomizeSetting?name=$name" + <a tal:attributes="href string:@@decustomizeSetting?uri=$uri" tal:condition="custom">[remove customization]</a> - <a tal:attributes="href string:@@exportSetting?name=$name" + <a tal:attributes="href string:@@exportSetting?uri=$uri" tal:condition="not:readonly">[export]</a> - <a tal:attributes="href string:@@reloadSetting?name=$name" + <a tal:attributes="href string:@@reloadSetting?uri=$uri" tal:condition="readonly">[reload]</a> </tal:block> </li> Modified: cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py (original) +++ cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py Sat May 6 00:06:09 2006 @@ -27,7 +27,7 @@ from cpsskins import configuration from cpsskins.setup.archives import TarArchive from cpsskins.setup.interfaces import ISetting, IGlobalSetting, IDOMAdapter -from cpsskins.setup.interfaces import IType +from cpsskins.setup.interfaces import IType, IIdentifiable from cpsskins.setup.interfaces import IResourceType, IResourceManager, IResource from cpsskins.setup.registration import reloadSetting, refreshSettings from cpsskins.setup.snapshot import Snapshot @@ -47,48 +47,54 @@ """Return information about registered resources categorized by type. """ info = {} + resources = getUtility(IResourceManager) + # get all settings - for name, setting in getUtilitiesFor(ISetting): + for setting in resources.list(context=self.context): + resource = IResource(setting).getResource() info.setdefault(IType(resource).resourcename, []).append({ - 'name': name, + 'name': setting.name, + 'uri': IIdentifiable(setting).getURI(), 'setting': setting, 'resource': resource, - 'readonly': IGlobalSetting.providedBy(setting), - 'custom': getattr(setting, 'custom', False), + 'readonly': setting.isGlobal(), + 'custom': setting.isCustom(), }) return info - def customizeSetting(self, name=u''): - if not name: - raise KeyError("Must specify a setting's name.") + def customizeSetting(self, uri=u''): + if not uri: + raise KeyError("Must specify a setting's URI.") resources = getUtility(IResourceManager) - resources.customize(name=name, context=self.context) + resources.customize(uri=uri, context=self.context) - def decustomizeSetting(self, name=u''): - if not name: - raise KeyError("Must specify a setting's name.") + def decustomizeSetting(self, uri=u''): + if not uri: + raise KeyError("Must specify a setting's URI.") resources = getUtility(IResourceManager) - resources.decustomize(name=name, context=self.context) + resources.decustomize(uri=uri, context=self.context) - def removeSetting(self, name=u''): - if not name: - raise KeyError("Must specify a setting's name.") + def removeSetting(self, uri=u''): + if not uri: + raise KeyError("Must specify a setting's URI.") resources = getUtility(IResourceManager) - resources.unregister(name=name, context=self.context) + resources.unregister(uri=uri, context=self.context) - def exportSetting(self, name=u''): + def exportSetting(self, uri=u''): """Export the setting as an XML file. """ + if not uri: + raise KeyError("Must specify a setting's URI.") + context = self.context request = self.request - if not name: - raise KeyError("Must specify a setting's name.") - setting = getUtility(ISetting, name) + resources = getUtility(IResourceManager) + setting = resources.lookup(uri=uri, context=context) resource = IResource(setting).getResource() resource_type = queryType(resource, IResourceType) @@ -101,11 +107,11 @@ return document.toprettyxml(indent=u' ', encoding=u'utf-8') - def reloadSetting(self, name=u''): + def reloadSetting(self, uri=u''): """Reload the setting from the file-system """ - if not name: - raise KeyError("Must specify a setting name.") + if not uri: + raise KeyError("Must specify a setting's URI.") reloadSetting(name) def refreshSettings(self): @@ -143,6 +149,8 @@ mgr = getThemeManager(context) settings = mgr.getSettings() + settings.purge() + dom = parseString(archive[u'setting.xml']) importer = getMultiAdapter((mgr, dom), IDOMAdapter, name=u'settings') importer.archive = archive -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins