source: products/quintagroup.gauth/trunk/quintagroup/gauth/setuphandlers.py @ 2626

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

Fixed action icon uninstallation (removed by QI)

  • Property svn:eol-style set to native
File size: 2.6 KB
Line 
1import logging
2
3from zope.component import getSiteManager, queryUtility
4from Products.CMFCore.utils import getToolByName
5
6from quintagroup.gauth.utility import GAuthUtility
7from quintagroup.gauth.interfaces import IGAuthUtility
8
9logger = logging.getLogger('quintagroup.gauth')
10
11def registerGAuthUtility(context):
12    """ Register Google Authentication utility
13    """
14    if context.readDataFile('quintagrouop_gauth.txt') is None:
15        return
16
17    site = context.getSite() 
18    sm = getSiteManager(site)
19    gauth = GAuthUtility(site)
20    sm.registerUtility(component=gauth,
21                       provided=IGAuthUtility)
22    logger.log(logging.INFO, "Registered IGAuthUtility, bound it to the site.")
23
24
25def uninstallStuff(context):
26    if context.readDataFile('quintagroup_gauth_uninstall.txt') is None:
27        return
28    site = context.getSite()
29    unregisterUtility(site)
30    removeGauthProperties(site)
31    removeConfiglet(site)
32    #removeActionIcons(site)
33
34def unregisterUtility(site):
35    sm = getSiteManager(site)
36    existing = queryUtility(IGAuthUtility)
37    if existing is None:
38        logger.log(logging.WARN, "No GAuthUtility is registered.")
39    else:
40        sm.unregisterUtility(component=existing, provided=IGAuthUtility)
41        logger.log(logging.INFO, "Unregistered IGAuthUtility, from local sitemanager.")   
42
43def removeGauthProperties(site):
44    pp = getToolByName(site, "portal_properties")
45    if not "gauth_properties" in pp.objectIds():
46        logger.log(logging.WARN, "No 'gauth_properties' present in portal_properties.")
47    else:
48        pp.manage_delObjects(ids="gauth_properties")
49        logger.log(logging.INFO, "Removed 'gauth_properties' from portal_properties.")
50
51def removeConfiglet(site):
52    pcp = getToolByName(site, "portal_controlpanel")
53    aifs = [ai['id'] for ai in pcp.listActionInfos(
54            check_visibility=0, check_permissions=0, check_condition=0)]
55    if not "quintagroup.gauth" in aifs:
56        logger.log(logging.WARN, "No 'quintagroup.gauth' configlet.")
57    else:
58        pcp.unregisterConfiglet("quintagroup.gauth")
59        logger.log(logging.INFO, "Removed 'quintagroup.gauth' configlet.")
60   
61def removeActionIcons(site):
62    pai = getToolByName(site, "portal_actionicons")
63    import pdb;pdb.set_trace()
64    ai = pai.queryActionInfo("controlpanel", "quintagroup.gauth", default=None)
65    if ai is None:
66        logger.log(logging.WARN, "No 'quintagroup.gauth' action icon.")
67    else:
68        pai.manage_removeActionIcon(category="controlpanel", action_id="quintagroup.gauth")
69        logger.log(logging.INFO, "Removed 'quintagroup.gauth' action icon.")
Note: See TracBrowser for help on using the repository browser.