1 | import logging |
---|
2 | |
---|
3 | from zope.component import getSiteManager, queryUtility |
---|
4 | from Products.CMFCore.utils import getToolByName |
---|
5 | |
---|
6 | from quintagroup.gauth.utility import GAuthUtility |
---|
7 | from quintagroup.gauth.interfaces import IGAuthUtility |
---|
8 | |
---|
9 | logger = logging.getLogger('quintagroup.gauth') |
---|
10 | |
---|
11 | def 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 | |
---|
25 | def 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 | |
---|
34 | def 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 | |
---|
43 | def 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 | |
---|
51 | def 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 | |
---|
61 | def 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.") |
---|