1 | from Products.CacheSetup import config |
---|
2 | from Products.CacheSetup.Extensions import policy_1, policy_2 |
---|
3 | |
---|
4 | POLICIES = (policy_1, policy_2) |
---|
5 | |
---|
6 | def updateOldCachePolicy(portal, out): |
---|
7 | ct = getattr(portal, config.CACHE_TOOL_ID) |
---|
8 | rules = getattr(ct, config.RULES_ID, None) |
---|
9 | if rules is not None and rules.portal_type == 'RuleFolder': |
---|
10 | # this is an old policy so make it a new-style policy folder |
---|
11 | oldpolicy_id = "old-policy" |
---|
12 | oldpolicy_title = "Old Cache Policy - saved from previous install" |
---|
13 | ct.addPolicyFolder(oldpolicy_id, oldpolicy_title) |
---|
14 | oldpolicy = getattr(ct, oldpolicy_id) |
---|
15 | folder_ids = [config.RULES_ID, config.HEADERSETS_ID] |
---|
16 | cp = ct.manage_copyObjects(folder_ids) |
---|
17 | oldpolicy.manage_pasteObjects(cp) |
---|
18 | for folder in oldpolicy.objectValues(): |
---|
19 | folder.unmarkCreationFlag() |
---|
20 | for item in folder.objectValues(): |
---|
21 | item.unmarkCreationFlag() |
---|
22 | ct.setActivePolicyId(oldpolicy_id) |
---|
23 | ct.manage_delObjects(folder_ids) |
---|
24 | # let's also migrate cacheConfig |
---|
25 | cache_config = ct.getCacheConfig() |
---|
26 | if cache_config in ('zserver','apache'): |
---|
27 | ct.setProxyPurgeConfig('no-purge') |
---|
28 | elif cache_config == 'squid': |
---|
29 | ct.setProxyPurgeConfig('no-rewrite') |
---|
30 | else: |
---|
31 | ct.setProxyPurgeConfig('custom-rewrite') |
---|
32 | else: |
---|
33 | # this is cachefu version 1.1+ |
---|
34 | # let's retitle old policies to avoid confusion |
---|
35 | suffix_save = "saved from previous install" |
---|
36 | suffix_copy = "copy" |
---|
37 | policies = [p for p in ct.objectValues() if p.portal_type=="CachePolicy"] |
---|
38 | for policy in policies: |
---|
39 | policy_title = policy.Title() |
---|
40 | suffix = suffix_save in policy_title and suffix_copy or suffix_save |
---|
41 | policy.setTitle('%s - %s' % (policy_title, suffix)) |
---|
42 | |
---|
43 | def addCachePolicies(portal, out): |
---|
44 | # We'll extend this later |
---|
45 | # preferably using GenericSetup profiles |
---|
46 | ct = getattr(portal, config.CACHE_TOOL_ID) |
---|
47 | for p in POLICIES: |
---|
48 | # fix any id collisions |
---|
49 | if getattr(ct, p.POLICY_ID, None) is not None: |
---|
50 | count = 1 |
---|
51 | while getattr(ct, '%s-backup%s' % (p.POLICY_ID, count), None) is not None: |
---|
52 | count = count + 1 |
---|
53 | newId = '%s-backup%s' % (p.POLICY_ID, count) |
---|
54 | ct.manage_renameObjects([p.POLICY_ID], [newId]) |
---|
55 | # now add the new policy |
---|
56 | ct.addPolicyFolder(p.POLICY_ID, p.POLICY_TITLE) |
---|
57 | rules = ct.getRules(p.POLICY_ID) |
---|
58 | p.addCacheRules(rules) |
---|
59 | header_sets = ct.getHeaderSets(p.POLICY_ID) |
---|
60 | p.addHeaderSets(header_sets) |
---|
61 | # Lets move the new policies to the top of the list |
---|
62 | policy_ids = [p.POLICY_ID for p in POLICIES] |
---|
63 | ct.moveObjectsToTop(policy_ids) |
---|
64 | |
---|
65 | |
---|