source: products/quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/setuphandlers.py @ 1910

Last change on this file since 1910 was 1910, checked in by mylan, 14 years ago

#160: clarify code, some clean-up

File size: 2.3 KB
Line 
1import logging
2
3from zope.component import getSiteManager
4from plone.browserlayer.utils import unregister_layer
5from plone.browserlayer.interfaces import ILocalBrowserLayerType
6
7from Products.CMFCore.utils import getToolByName
8
9logger = logging.getLogger('quintagroup.seoptimizer')
10
11def removeSkin(site, layer):
12    """ Remove layers.
13    """
14    skins_tool = getToolByName(site, 'portal_skins')
15    for skinName in skins_tool.getSkinSelections():
16        skin_paths = skins_tool.getSkinPath(skinName).split(',') 
17        paths = [l.strip() for l in skin_paths if not (l == layer or l.startswith(layer+'/'))]
18        logger.log(logging.INFO, "Removed layers from %s skin." % skinName)
19        skins_tool.addSkinSelection(skinName, ','.join(paths))
20
21def removeActions(site):
22    """ Remove actions.
23    """
24    types_tool = getToolByName(site, 'portal_types')
25    for ptype in types_tool.objectValues():
26        idxs = [idx_act[0] for idx_act in enumerate(ptype.listActions()) \
27                           if idx_act[1].id == 'seo_properties']
28        if idxs:
29            ptype.deleteActions(idxs)
30            logger.log(logging.INFO, "Deleted \"SEO Properties\" action for %s type." % ptype.id)
31
32def removeConfiglet(site, conf_id):
33    """ Remove configlet.
34    """
35    controlpanel_tool = getToolByName(site, 'portal_controlpanel')
36    if controlpanel_tool:
37        controlpanel_tool.unregisterConfiglet(conf_id)
38        logger.log(logging.INFO, "Unregistered \"%s\" configlet." % conf_id)
39
40def removeBrowserLayer(site):
41    """ Remove configlet.
42    """
43    name="qSEOptimizer"
44    site = getSiteManager(site)
45    registeredLayers = [r.name for r in site.registeredUtilities()
46                        if r.provided == ILocalBrowserLayerType]
47    if name in registeredLayers:
48        unregister_layer(name, site_manager=site)
49        logger.log(logging.INFO, "Unregistered \"%s\" browser layer." % name)
50
51def importVarious(context):
52    """ Do customized installation.
53    """
54    if context.readDataFile('seo_install.txt') is None:
55        return
56
57def uninstall(context):
58    """ Do customized uninstallation.
59    """
60    if context.readDataFile('seo_uninstall.txt') is None:
61        return
62    site = context.getSite()
63    removeSkin(site, 'quintagroup.seoptimizer' )
64    removeActions(site)
65    removeConfiglet(site, 'quintagroup.seoptimizer')
66    removeBrowserLayer(site)
Note: See TracBrowser for help on using the repository browser.