import os from Products.CMFCore.DirectoryView import createDirectoryView from Products.CMFCore.utils import getToolByName from Products.Archetypes.public import listTypes from Products.Archetypes.Extensions.utils import installTypes from Products.PloneSilverCity.config import layer_names, layer_locations, project, curdir got_zelenium = False try: from Products import Zelenium got_zelenium = True except: pass test_id = 'silvercity_zelenium_tests' def install(self): """ Install this product """ out = [] skinsTool = getToolByName(self, 'portal_skins') installTypes(self, out, listTypes(project), project) # add in the layer to all our skins skins = skinsTool.getSkinSelections() for skin in skins: for layer_name, layer_location in map(None, layer_names, layer_locations): # add in the directory view pointing to our skin if layer_name not in skinsTool.objectIds(): createDirectoryView(skinsTool, layer_location, layer_name) out.append('Added "%s" directory view to portal_skins' % layer_name) path = skinsTool.getSkinPath(skin) path = [ p.strip() for p in path.split(',') ] if layer_name not in path: path.insert(path.index('custom')+1, layer_name) path = ", ".join(path) skinsTool.addSkinSelection(skin, path) out.append('Added "%s" to "%s" skins' % (layer_name, skin)) else: out.append('Skipping "%s" skin' % skin) if got_zelenium: if test_id not in self.objectIds(): self.manage_addProduct['Zelenium'].manage_addZuite(test_id) here = os.path.dirname(os.path.abspath(curdir)) tst = os.path.join(here, "PloneSilverCity", "tests", "selenium") obj = self._getOb(test_id) obj._updateProperty("filesystem_path", tst) obj._updateProperty("filename_glob", "*.html") out.append('Zelenium tests installed into %s?auto=true' % obj.absolute_url()) else: out.append('Zelenium not installed, no suite created') return "\n".join(out) def uninstall(self): out = [] if id in self.objectIds(): self.manage_delObjects([id,]) out.append('Deleted the Zelenium test object') return "\n".join(out)