source: products/quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/upgrades.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: 3.6 KB
Line 
1import logging
2from zope.component import queryMultiAdapter
3from Products.CMFCore.utils import getToolByName
4
5logger = logging.getLogger('quintagroup.seoptimizer')
6FIX_PTYPES_DOMAIN = ['Document', 'File', 'News Item']
7REMOVE_SEOPROPERTIES = ['additional_keywords', 'settings_use_keywords_sg',
8                        'settings_use_keywords_lg', 'filter_keywords_by_content',
9                       ]
10
11def changeDomain(plone_tools):
12    """ Fix i18n_domain bug for some portal_types,
13    which present in earlier versions of the package.
14    """
15    types_tool = plone_tools.types()
16    for ptype in [ptypes for ptypes in types_tool.objectValues()
17                         if ptypes.id in FIX_PTYPES_DOMAIN]:
18        if ptype.i18n_domain == 'quintagroup.seoptimizer':
19            ptype.i18n_domain = 'plone'
20            logger.log(logging.INFO, "I18n Domain of the type \'%s\' "
21                       "changed to \'plone\'." % ptype.id)
22
23def changeMetatagsOrderList(plone_tools):
24    """ Change format metatags order list from "metaname accessor" to "metaname".
25    """
26    types_tool = plone_tools.types()
27    setup_tool = plone_tools.url().getPortalObject().portal_setup
28    seoprops_tool = plone_tools.properties().seo_properties
29    if seoprops_tool.hasProperty('metatags_order'):
30        mto = seoprops_tool.getProperty('metatags_order', [])
31        mto_new = [line.split(' ')[0].strip() for line in mto]
32        if not list(mto) == mto_new:
33            logger.log(logging.INFO, "Changed format metatags order list in "
34                       "configlet from \"metaname accessor\" to \"metaname\".")
35            seoprops_tool.manage_changeProperties(metatags_order=mto_new)
36    else:
37        setup_tool.runImportStepFromProfile('profile-quintagroup.seoptimizer:default',
38                                            'propertiestool')
39
40
41def migrationActions(plone_tools):
42    """ Migration actions from portal_types action to seoproperties tool
43    (for seoaction in portal_actions).
44    """
45    types_tool = plone_tools.types()
46    seoprops_tool = plone_tools.properties().seo_properties
47    ctws = list(seoprops_tool.getProperty('content_types_with_seoproperties', []))
48    flag = False
49    for ptype in types_tool.objectValues():
50        idxs = [idx_act[0] for idx_act in enumerate(ptype.listActions())
51                           if idx_act[1].id == 'seo_properties']
52        if idxs:
53            if ptype.id not in ctws:
54                ctws.append(ptype.id)
55                flag = True
56            ptype.deleteActions(idxs)
57            logger.log(logging.INFO, "Moved \"SEO Properties\" action from %s "
58                       "type in portal actions." % ptype.id)
59    if flag:
60        seoprops_tool.manage_changeProperties(content_types_with_seoproperties=ctws)
61
62def removeNonUseSeoProperties(plone_tools):
63    """ Revome properties used in earlier versions of the package
64    """
65    seoprops_tool = plone_tools.properties().seo_properties
66    remove_properties = []
67    for pr in REMOVE_SEOPROPERTIES:
68      if seoprops_tool.hasProperty(pr):
69          remove_properties.append(pr)
70          logger.log(logging.INFO, "Removed %s property in seoproperties tool." % pr)
71    if not remove_properties:
72        seoprops_tool.manage_delProperties(remove_properties)
73
74def upgrade_2_to_3(setuptool):
75    """ Upgrade quintagroup.seoptimizer from version 2.x.x to 3.0.0.
76    """
77    plone_tools = queryMultiAdapter((setuptool, setuptool.REQUEST), name="plone_tools")
78    setuptool.runAllImportStepsFromProfile('profile-quintagroup.seoptimizer:upgrade_2_to_3')
79    migrationActions(plone_tools)
80    changeDomain(plone_tools)
81    changeMetatagsOrderList(plone_tools)
82    removeNonUseSeoProperties(plone_tools)
Note: See TracBrowser for help on using the repository browser.