Author: jmorliaguet
Date: Sat May 20 13:58:44 2006
New Revision: 3171

Modified:
   cpsskins/branches/paris-sprint-2006/setup/io/__init__.py
   cpsskins/branches/paris-sprint-2006/setup/io/utils.py
   cpsskins/branches/paris-sprint-2006/setup/manager.py
   cpsskins/branches/paris-sprint-2006/setup/registration.py
   cpsskins/branches/paris-sprint-2006/ui/panels/settings_section.pt
   cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/configure.zcml
   cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py

Log:

- simplified the API for relading filesystem settings



Modified: cpsskins/branches/paris-sprint-2006/setup/io/__init__.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/setup/io/__init__.py    (original)
+++ cpsskins/branches/paris-sprint-2006/setup/io/__init__.py    Sat May 20 
13:58:44 2006
@@ -21,5 +21,4 @@
 
 defineFrom('cpsskins.setup.io.adapters', 'BaseDOMAdapter', 'DOMAdapter')
 defineFrom('cpsskins.setup.io.interfaces', 'IDOMAdapter')
-defineFrom('cpsskins.setup.io.utils', 'importSite', 'exportSite',
-           'exportSetting')
+defineFrom('cpsskins.setup.io.utils', 'importSite', 'exportSite')

Modified: cpsskins/branches/paris-sprint-2006/setup/io/utils.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/setup/io/utils.py       (original)
+++ cpsskins/branches/paris-sprint-2006/setup/io/utils.py       Sat May 20 
13:58:44 2006
@@ -220,24 +220,6 @@
     archive[u'settings.xml'] = document.toprettyxml(indent=u'  ',
                                                     encoding=u'utf-8')
 
-def exportSetting(uri=u'', context=None):
-    """Export the setting as an XML file.
-    """
-    if not uri:
-        raise KeyError("Must specify a setting's URI.")
-
-    resources = getUtility(IResourceManager)
-    setting = resources.lookup(uri=uri, context=context)
-
-    document = DOMImplementation().createDocument(None, u'settings', None)
-    root = document.documentElement
-
-    exporter = getMultiAdapter((setting, root), IDOMAdapter)
-    exporter.document = document
-    exporter.save()
-
-    return document.toprettyxml(indent=u'  ', encoding=u'utf-8')
-
 def importSettings(archive=None, context=None):
     """Import settings from the archive
     """
@@ -261,6 +243,7 @@
 
         factory_name = u'cpsskins.%s' % typename.replace('-', '.')
         resource = createObject(factory_name)
+
         setting = resources.register(name=name, title=title, resource=resource,
                                      context=context, custom=custom)
 

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 20 
13:58:44 2006
@@ -57,6 +57,8 @@
             setting.custom = custom
 
         uri = IIdentifiable(setting).getURI()
+        if uri in settings:
+            self.unregister(uri, context)
         settings[uri] = setting
         settings.registerUtility(setting, ISetting, uri)
         return setting
@@ -67,13 +69,10 @@
         if not uri:
             raise KeyError("Must specify a setting URI.")
 
-        if context is None:
-            raise ValueError("Must specify a context.")
-
         settings = getThemeManager(context).getSettings()
         setting = settings.queryUtility(ISetting, uri)
-        if setting is None or not setting.isLocal():
-            raise ValueError("No such local setting: '%s'" % uri)
+        if setting is None:
+            raise ValueError("No such setting: '%s'" % uri)
 
         del settings[uri]
         settings.unregisterUtility(provided=ISetting, name=uri)

Modified: cpsskins/branches/paris-sprint-2006/setup/registration.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/setup/registration.py   (original)
+++ cpsskins/branches/paris-sprint-2006/setup/registration.py   Sat May 20 
13:58:44 2006
@@ -89,36 +89,6 @@
         setting_file['refresh_date'] = time.time()
         logger.debug("loaded settings from %s", filepath)
 
-# To refactor: see cpsskins.setup.io.utils
-
-def _loadResourceFromXML(setting_def=None, name=u'', title=u'', filename=u''):
-    resources = getUtility(IResourceManager)
-
-    resource_defs = setting_def.getElementsByTagName('*')
-    if not resource_defs:
-        logger.debug("no resource found for %s" % uri)
-        return None
-
-    resource_def = resource_defs[0]
-
-    factory_name = setting_def.getAttribute('type')
-    uri = 'cpsskins://[EMAIL PROTECTED]' % (factory_name, name)
-    setting = resources.lookup(uri)
-    if setting is None:
-        # create the resource
-        resource = createObject(factory_name)
-        resources.register(name=name, title=title, resource=resource,
-                           filename=filename)
-        logger.debug("new setting added: '%s'", name)
-    else:
-        resource = IResource(setting).getResource()
-        setting.title = title
-        logger.debug("reloaded setting %s in %s", name, filename)
-
-    # load the data
-    getMultiAdapter((resource, resource_def), IDOMAdapter).load()
-    return resource
-
 def refreshSettings():
     """Refresh all settings that have been modified on the filesystem.
     """
@@ -127,40 +97,10 @@
         filepath = setting_file['filepath']
         if refresh_date > os.path.getmtime(filepath):
             continue
-        _reload(filepath=filepath)
+        file = open(filepath)
+        archive = {'settings.xml': file.read()}
+        file.close()
+        importSettings(archive, context=None)
         setting_file['refresh_date'] = time.time()
-
-def reloadSetting(uri=u''):
-    """Reload a setting by name.
-    """
-    resources = getUtility(IResourceManager)
-    setting = resources.lookup(uri)
-    filename = setting.filename
-
-    if not filename:
-        raise TypeError("The setting is not a file-system setting.")
-
-    _reload(uri=uri, filepath=filepath)
-
-def _reload(uri=u'', filepath=u''):
-    """Reload the settings in a file
-    """
-    try:
-        dom = parse(filepath)
-    except ExpatError:
-        logger.warning("could not parse %s - not reloading", filepath)
-        return
-
-    for setting_def in dom.getElementsByTagName('setting'):
-        setting_name = setting_def.getAttribute('name')
-        factory_name = setting_def.getAttribute('type')
-        setting_uri = 'cpsskins://[EMAIL PROTECTED]' % (factory_name, 
setting_name)
-        title = setting_def.getAttribute('title')
-        if uri != setting_uri:
-            continue
-
-        _loadResourceFromXML(setting_def, name, title, filepath)
-
-    if not uri:
-        logger.debug("reloaded all settings in %s", filepath)
+        logger.debug("reloaded settings from %s", filepath)
 

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 
20 13:58:44 2006
@@ -15,8 +15,6 @@
              tal:condition="custom">[remove customization]</a>
           <a tal:attributes="href string:@@exportSetting?uri=$uri"
              tal:condition="not:readonly">[export]</a>
-          <a tal:attributes="href string:@@reloadSetting?uri=$uri"
-             tal:condition="readonly">[reload]</a>
         </tal:block>
       </li>
       <li>

Modified: 
cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/configure.zcml
==============================================================================
--- cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/configure.zcml   
(original)
+++ cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/configure.zcml   
Sat May 20 13:58:44 2006
@@ -43,16 +43,6 @@
     />
 
     <page
-        name="exportSetting"
-        attribute="exportSetting"
-    />
-
-    <page
-        name="reloadSetting"
-        attribute="reloadSetting"
-    />
-
-    <page
         name="refreshSettings"
         attribute="refreshSettings"
     />

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 
20 13:58:44 2006
@@ -23,8 +23,8 @@
 from cpsskins import minjson as json
 from cpsskins.setup.interfaces import IType, IIdentifiable
 from cpsskins.setup.interfaces import IResourceManager, IResource
-from cpsskins.setup.io import importSite, exportSite, exportSetting
-from cpsskins.setup.registration import reloadSetting, refreshSettings
+from cpsskins.setup.io import importSite, exportSite
+from cpsskins.setup.registration import refreshSettings
 from cpsskins.setup.snapshot import Snapshot
 from cpsskins.utils import getThemeManager
 
@@ -80,23 +80,6 @@
         resources = getUtility(IResourceManager)
         resources.unregister(uri=uri, context=self.context)
 
-    def exportSetting(self, uri=u''):
-        """Export the setting as an XML file.
-        """
-        filename = uri.replace(u'cpsskins://', u'') + u'.xml'
-        response = self.request.response
-        response.setHeader('content-type', 'text/xml')
-        response.setHeader('Content-disposition',
-                           'attachment; filename=%s' % filename)
-        return exportSetting(uri, self.context)
-
-    def reloadSetting(self, uri=u''):
-        """Reload the setting from the file-system
-        """
-        if not uri:
-            raise KeyError("Must specify a setting's URI.")
-        reloadSetting(uri)
-
     def refreshSettings(self):
         """Refresh all settings stored on the file-system
         """
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to