1 | import logging |
---|
2 | |
---|
3 | from zope.component import getSiteManager |
---|
4 | from plone.browserlayer.utils import unregister_layer |
---|
5 | from plone.browserlayer.interfaces import ILocalBrowserLayerType |
---|
6 | |
---|
7 | from Products.CMFCore.utils import getToolByName |
---|
8 | |
---|
9 | logger = logging.getLogger('quintagroup.seoptimizer') |
---|
10 | |
---|
11 | def removeActions(site): |
---|
12 | """ Remove actions. |
---|
13 | """ |
---|
14 | types_tool = getToolByName(site, 'portal_types') |
---|
15 | for ptype in types_tool.objectValues(): |
---|
16 | idxs = [idx_act[0] for idx_act in enumerate(ptype.listActions()) \ |
---|
17 | if idx_act[1].id == 'seo_properties'] |
---|
18 | if idxs: |
---|
19 | ptype.deleteActions(idxs) |
---|
20 | logger.log(logging.INFO, "Deleted \"SEO Properties\" action for %s type." % ptype.id) |
---|
21 | |
---|
22 | def removeConfiglet(site, conf_id): |
---|
23 | """ Remove configlet. |
---|
24 | """ |
---|
25 | controlpanel_tool = getToolByName(site, 'portal_controlpanel') |
---|
26 | if controlpanel_tool: |
---|
27 | controlpanel_tool.unregisterConfiglet(conf_id) |
---|
28 | logger.log(logging.INFO, "Unregistered \"%s\" configlet." % conf_id) |
---|
29 | |
---|
30 | def removeBrowserLayer(site): |
---|
31 | """ Remove configlet. |
---|
32 | """ |
---|
33 | name="qSEOptimizer" |
---|
34 | site = getSiteManager(site) |
---|
35 | registeredLayers = [r.name for r in site.registeredUtilities() |
---|
36 | if r.provided == ILocalBrowserLayerType] |
---|
37 | if name in registeredLayers: |
---|
38 | unregister_layer(name, site_manager=site) |
---|
39 | logger.log(logging.INFO, "Unregistered \"%s\" browser layer." % name) |
---|
40 | |
---|
41 | def uninstall(context): |
---|
42 | """ Do customized uninstallation. |
---|
43 | """ |
---|
44 | if context.readDataFile('seo_uninstall.txt') is None: |
---|
45 | return |
---|
46 | site = context.getSite() |
---|
47 | removeActions(site) |
---|
48 | removeConfiglet(site, 'quintagroup.seoptimizer') |
---|
49 | removeBrowserLayer(site) |
---|