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