Author: jmorliaguet Date: Thu Dec 8 14:35:27 2005 New Revision: 1993 Modified: cpsskins/branches/jmo-perspectives/engines/sitedesigner/browser.py cpsskins/branches/jmo-perspectives/engines/sitedesigner/configure.zcml cpsskins/branches/jmo-perspectives/engines/sitedesigner/site_designer.pt cpsskins/branches/jmo-perspectives/profiles/default/__init__.py cpsskins/branches/jmo-perspectives/setup/interfaces.py cpsskins/branches/jmo-perspectives/setup/manager.py Log:
- implemented 'decustomize' setting - updated the view to correctly display when a setting is global, local, customized - added a 'reload setting' method to reload from the file-system (not implemented yet) Modified: cpsskins/branches/jmo-perspectives/engines/sitedesigner/browser.py ============================================================================== --- cpsskins/branches/jmo-perspectives/engines/sitedesigner/browser.py (original) +++ cpsskins/branches/jmo-perspectives/engines/sitedesigner/browser.py Thu Dec 8 14:35:27 2005 @@ -24,6 +24,7 @@ from zope.app.interface import queryType from zope.app.publisher.browser import BrowserView from zope.component import getUtilitiesFor, getUtility, getMultiAdapter +from zope.component import queryUtility from cpsskins.setup.interfaces import ( ISetting, IResourceType, IResource, IResourceManager, @@ -45,11 +46,15 @@ for name, setting in getUtilitiesFor(ISetting): resource = IResource(setting).getResource() resource_type = queryType(resource, IResourceType) + is_global = queryUtility(ISetting, name) is not None + readonly = setting.readonly + customized = is_global and not readonly info.setdefault(resource_type.getTaggedValue('name'), []).append({ 'name': name, 'setting': setting, 'resource': resource, - 'customized': False, + 'customized': customized, + 'readonly': readonly, }) return info @@ -57,15 +62,24 @@ if not name: raise KeyError("Must specify a setting's name.") - setting = getUtility(ISetting, name) resources = getUtility(IResourceManager) resources.customize(name=name, context=self.context) target = self.request.get('HTTP_REFERER', '.') self.request.response.redirect(target) + def decustomizeSetting(self, name=u''): + if not name: + raise KeyError("Must specify a setting's name.") + + resources = getUtility(IResourceManager) + resources.decustomize(name=name, context=self.context) + + target = self.request.get('HTTP_REFERER', '.') + self.request.response.redirect(target) + def exportSetting(self, name=u''): - """Export the setting as a zip file. + """Export the setting as an XML file. """ context = self.context request = self.request @@ -95,3 +109,12 @@ 'resource': resource_xml, } + def reloadSetting(self, name=u''): + """Reload the setting from the file-system + """ + + #TODO + + target = self.request.get('HTTP_REFERER', '.') + self.request.response.redirect(target) + Modified: cpsskins/branches/jmo-perspectives/engines/sitedesigner/configure.zcml ============================================================================== --- cpsskins/branches/jmo-perspectives/engines/sitedesigner/configure.zcml (original) +++ cpsskins/branches/jmo-perspectives/engines/sitedesigner/configure.zcml Thu Dec 8 14:35:27 2005 @@ -41,10 +41,20 @@ /> <page + name="decustomizeSetting" + attribute="decustomizeSetting" + /> + + <page name="exportSetting" attribute="exportSetting" /> + <page + name="reloadSetting" + attribute="reloadSetting" + /> + </pages> </configure> Modified: cpsskins/branches/jmo-perspectives/engines/sitedesigner/site_designer.pt ============================================================================== --- cpsskins/branches/jmo-perspectives/engines/sitedesigner/site_designer.pt (original) +++ cpsskins/branches/jmo-perspectives/engines/sitedesigner/site_designer.pt Thu Dec 8 14:35:27 2005 @@ -47,10 +47,17 @@ <ul tal:define="setting_info context/@@getSettingInfo"> <li tal:repeat="info setting_info/?subsection|nothing"> <tal:block content="info/setting/title" /> - <tal:block define="name info/name"> + <tal:block define="name info/name; + readonly info/readonly; + customized info/customized"> <a tal:attributes="href string:@@customizeSetting?name=$name" - tal:condition="info/setting/readonly">[customize]</a> - <a tal:attributes="href string:@@exportSetting?name=$name">[export]</a> + tal:condition="readonly">[customize]</a> + <a tal:attributes="href string:@@decustomizeSetting?name=$name" + tal:condition="customized">[remove customization]</a> + <a tal:attributes="href string:@@exportSetting?name=$name" + tal:condition="not:readonly">[export]</a> + <a tal:attributes="href string:@@reloadSetting?name=$name" + tal:condition="readonly">[reload]</a> </tal:block> </li> </ul> Modified: cpsskins/branches/jmo-perspectives/profiles/default/__init__.py ============================================================================== --- cpsskins/branches/jmo-perspectives/profiles/default/__init__.py (original) +++ cpsskins/branches/jmo-perspectives/profiles/default/__init__.py Thu Dec 8 14:35:27 2005 @@ -20,3 +20,4 @@ from cpsskins.setup.registration import register register('cpsskins.profiles.default', 'perspectives.xml') +register('cpsskins.profiles.default', 'New_style.xml') Modified: cpsskins/branches/jmo-perspectives/setup/interfaces.py ============================================================================== --- cpsskins/branches/jmo-perspectives/setup/interfaces.py (original) +++ cpsskins/branches/jmo-perspectives/setup/interfaces.py Thu Dec 8 14:35:27 2005 @@ -35,10 +35,7 @@ description=u"The setting's title", ) - readonly = Bool( - title=u"Read-only", - description=u"The setting is read-only", - ) + readonly = Attribute("Read-only setting") resource = Attribute("The resource.") Modified: cpsskins/branches/jmo-perspectives/setup/manager.py ============================================================================== --- cpsskins/branches/jmo-perspectives/setup/manager.py (original) +++ cpsskins/branches/jmo-perspectives/setup/manager.py Thu Dec 8 14:35:27 2005 @@ -19,7 +19,9 @@ from copy import deepcopy +from zope.app import zapi from zope.app.component.interfaces.registration import ActiveStatus +from zope.app.component.interfaces.registration import InactiveStatus from zope.app.component.site import UtilityRegistration from zope.app.container.interfaces import INameChooser from zope.interface import implements @@ -41,7 +43,6 @@ def register(self, name=u'', title=u'', resource=None, context=None): """Register the setting as a utility. """ - # register as a global utility if context is None: setting = Setting(title=title, resource=resource, readonly=True) @@ -59,6 +60,27 @@ settings.registrationManager.addRegistration(reg) reg.status = ActiveStatus + def unregister(self, name=u'', context=None): + """Unregister the setting. + """ + if not name: + raise KeyError("Must specify a resource name.") + + if context is None: + raise ValueError("Must specify a context.") + + setting = queryUtility(ISetting, name, context=self.context) + if setting is None: + raise ValueError("No such setting.") + + settings = getUtility(ISettings, context=context) + regManager = settings.registrationManager + for reg in list(regManager.values()): + if reg.provided.isOrExtends(ISetting) and name == reg.name: + reg.status = InactiveStatus + del regManager[zapi.name(reg)] + del settings[name] + def lookup(self, name=u'', context=None, default=None): if not name: raise KeyError("Must specify a resource name.") @@ -100,3 +122,15 @@ self.register(name=name, title=setting.title, resource=resource, context=context) + def decustomize(self, name=u'', context=None): + if not name: + raise KeyError("Must specify a resource name.") + + if context is None: + raise ValueError("Must specify a context.") + + if queryUtility(ISetting, name) is None: + raise ValueError("No such customized setting.") + + self.unregister(name=name, context=context) + -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins