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

Reply via email to