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