1 | import logging |
---|
2 | from zope.component import getSiteManager |
---|
3 | from zope.component import getGlobalSiteManager |
---|
4 | from quintagroup.plonegooglesitemaps.content.newsextender import NewsExtender |
---|
5 | |
---|
6 | logger = logging.getLogger('quintagroup.plonegooglesitemaps') |
---|
7 | |
---|
8 | def unregisterSchemaExtenderAdapters(site): |
---|
9 | """ Unregister news schema extender adapters |
---|
10 | from local component registry. |
---|
11 | """ |
---|
12 | lsm = getSiteManager(site) |
---|
13 | gsm = getGlobalSiteManager() |
---|
14 | if lsm == gsm: |
---|
15 | logger.warning("Not found local component registry") |
---|
16 | return |
---|
17 | |
---|
18 | unregistered = [] |
---|
19 | registrations = tuple(lsm.registeredAdapters()) |
---|
20 | for registration in registrations: |
---|
21 | factory = registration.factory |
---|
22 | if factory == NewsExtender: |
---|
23 | required = registration.required |
---|
24 | provided = registration.provided |
---|
25 | name = registration.name |
---|
26 | lsm.unregisterAdapter(factory=factory, |
---|
27 | required=required, provided=provided, name=name) |
---|
28 | unregistered.append(str(required)) |
---|
29 | logger.info("Unregistered news schema extender adapters for: %s" % unregistered) |
---|
30 | |
---|
31 | |
---|
32 | def uninstall(context): |
---|
33 | """ Do customized uninstallation. |
---|
34 | """ |
---|
35 | if context.readDataFile('gsm_uninstall.txt') is None: |
---|
36 | return |
---|
37 | site = context.getSite() |
---|
38 | unregisterSchemaExtenderAdapters(site) |
---|