Author: jmorliaguet
Date: Thu Dec  8 00:46:47 2005
New Revision: 1986

Modified:
   cpsskins/branches/jmo-perspectives/configuration/settings/metaconfigure.py
   cpsskins/branches/jmo-perspectives/profiles/default/perspectives.xml
   cpsskins/branches/jmo-perspectives/setup/registration.py
Log:

- functional implementation. Settings are loaded from xml and registered
  globallly as file-system resources



Modified: 
cpsskins/branches/jmo-perspectives/configuration/settings/metaconfigure.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/configuration/settings/metaconfigure.py  
(original)
+++ cpsskins/branches/jmo-perspectives/configuration/settings/metaconfigure.py  
Thu Dec  8 00:46:47 2005
@@ -40,23 +40,6 @@
         raise ConfigurationError("Must specify a resource schema.")
 
     provideUtility(factory, IFactory, name)
-
     alsoProvides(schema, IResourceType)
-
     schema.setTaggedValue('name', name)
 
-    # XXX this is meta-configuration resources for setting instancs
-    # must be registered elsewhere
-    #
-    #f = open(resource)
-    #xml = f.read()
-    #f.close()
-
-    #resource_object = factory()
-    #IResourceImporter(resource_object).load(xml)
-
-    # register the resource as a global setting
-    #resources = getUtility(IResourceManager)
-    #resources.register(name=name, title=resource_object.title,
-    #                   resource=resource_object)
-

Modified: cpsskins/branches/jmo-perspectives/profiles/default/perspectives.xml
==============================================================================
--- cpsskins/branches/jmo-perspectives/profiles/default/perspectives.xml        
(original)
+++ cpsskins/branches/jmo-perspectives/profiles/default/perspectives.xml        
Thu Dec  8 00:46:47 2005
@@ -1,2 +1,4 @@
 <?xml version="1.0" encoding="utf-8" ?>
-<perspective name="perspective.global" title="Global perspective" />
+<setting name="perspective.global" title="Global perspective">
+  <perspective name="perspective.global" title="Global perspective" />
+</setting>

Modified: cpsskins/branches/jmo-perspectives/setup/registration.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/setup/registration.py    (original)
+++ cpsskins/branches/jmo-perspectives/setup/registration.py    Thu Dec  8 
00:46:47 2005
@@ -23,19 +23,49 @@
 
 from xml.dom.minidom import parse
 
+from zope.component import queryUtility, getUtility
+from zope.component.interfaces import IFactory
+
+from cpsskins.setup.interfaces import IResourceImporter, IResourceManager
+
 DEBUG = logging.DEBUG
 logger = logging.getLogger()
 
-settings = []
+filenames = []
 
 def register(profile, file):
     base_path = os.path.dirname(sys.modules.get(profile).__file__)
-    settings.append(os.path.join(base_path, file))
+    filenames.append(os.path.join(base_path, file))
 
 def loadSettings(event):
-    for setting in settings:
-        logger.log(DEBUG, "cpsskins loaded setting: %s" % file)
+    """Load all registered settings.
+    """
+    resources = getUtility(IResourceManager)
+
+    for filename in filenames:
+        dom = parse(filename)
+        for setting in dom.getElementsByTagName('setting'):
+            name = setting.getAttribute('name')
+            title = setting.getAttribute('title')
+
+            resource = setting.getElementsByTagName('*')
+            if not resource:
+                logger.log(DEBUG,
+                    "cpsskins no resource found for: %s" % name)
+                continue
+            resource = resource[0]
+            factory = queryUtility(IFactory, resource.tagName)
+            if factory is None:
+                continue
+
+            # create the resource
+            resource_object = factory()
+
+            # load the data
+            IResourceImporter(resource_object).load(resource.toxml())
+
+            # register the resource
+            resources.register(name=name, title=title, 
resource=resource_object)
 
-        dom = parse(setting)
-        print dom
+        logger.log(DEBUG, "cpsskins loaded setting: %s" % filename)
 
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to