def remove(self): values, errors = self.extractData() if not values.get("usedMarkers", None): self.send_message(_(u"You need to select a marker."), type=u"error") return silvaforms.FAILURE manager = IMarkManager(self.context) for value in values["usedMarkers"]: manager.remove_marker(value) self.send_message(_(u"Marker removed."), type=u"feedback") return silvaforms.SUCCESS
def test_marker_on_root(self): manager = IMarkManager(self.root) self.assertTrue(verifyObject(IMarkManager, manager)) # By default, we got interfaces implemented by Root self.assertInterfaceEqual( manager.usedInterfaces, ['silva.core.interfaces.content.IFolder', 'silva.core.interfaces.content.IPublication', 'silva.core.interfaces.content.IPublishable', 'silva.core.interfaces.content.IRoot']) # And there is no marker used. self.assertInterfaceEqual(manager.usedMarkers, []) # The base interfaces for markers is availables however. self.assertInterfaceEqual( manager.availableMarkers, ['silva.core.layout.interfaces.ICustomizableMarker', 'silva.core.views.interfaces.IDisableBreadcrumbTag', 'silva.core.views.interfaces.IDisableNavigationTag']) # We can add a marker in ZODB factory = self.root.manage_addProduct['silva.core.layout'] factory.manage_addCustomizationMarker('ITestMarker') self.assertTrue('ITestMarker' in self.root.objectIds()) marker = getattr(self.root, 'ITestMarker') # A marker is an interface which extend ICustomizableMarker, # so it's customizable self.assertTrue(verifyObject(IInterface, marker)) self.assertTrue(marker.extends(ICustomizableMarker)) self.assertTrue(marker.extends(ICustomizable)) # Marker have an markerId which gives it's identifier, we # should be the same than the interface __identifier__ self.assertTrue(marker.markerId(), u'marker:root.ITestMarker') self.assertTrue(marker.__identifier__, u'marker:root.ITestMarker') # Now, we should see our marker in availables ones # Since our manager cache it's result, we need to recreate a new one. manager = IMarkManager(self.root) self.assertInterfaceEqual( manager.availableMarkers, ['marker:root.ITestMarker', 'silva.core.layout.interfaces.ICustomizableMarker', 'silva.core.views.interfaces.IDisableBreadcrumbTag', 'silva.core.views.interfaces.IDisableNavigationTag']) # We can assign a marker to the root manager.add_marker(u'marker:root.ITestMarker') # And we will have root object which provided this object self.assertTrue(marker.providedBy(self.root)) # And we will see changes in the manager manager = IMarkManager(self.root) self.assertInterfaceEqual( manager.usedMarkers, ['marker:root.ITestMarker']) self.assertInterfaceEqual( manager.availableMarkers, ['silva.core.layout.interfaces.ICustomizableMarker', 'silva.core.views.interfaces.IDisableBreadcrumbTag', 'silva.core.views.interfaces.IDisableNavigationTag']) # Like we assign the marker, we can remove it. manager.remove_marker(u'marker:root.ITestMarker') # And it will disppear self.failIf(marker.providedBy(self.root)) manager = IMarkManager(self.root) self.assertInterfaceEqual(manager.usedMarkers, []) self.assertInterfaceEqual( manager.availableMarkers, ['marker:root.ITestMarker', 'silva.core.layout.interfaces.ICustomizableMarker', 'silva.core.views.interfaces.IDisableBreadcrumbTag', 'silva.core.views.interfaces.IDisableNavigationTag']) # We can delete the marker self.root.manage_delObjects(['ITestMarker',]) # And it won't appear in the manager anymore (it's gone) manager = IMarkManager(self.root) self.assertInterfaceEqual(manager.usedMarkers, []) self.assertInterfaceEqual( manager.availableMarkers, ['silva.core.layout.interfaces.ICustomizableMarker', 'silva.core.views.interfaces.IDisableBreadcrumbTag', 'silva.core.views.interfaces.IDisableNavigationTag'])