root/qPloneSkinDump/branches/pastescript/qPloneSkinDump.py

Revision 999 (checked in by piv, 1 year ago)

release 0.8.0, see HISTORY.txt and TODO.txt

Line 
1 import os, re
2 from AccessControl import ModuleSecurityInfo
3 from Products.CMFCore.utils import getToolByName
4
5 from config import *
6 from utils import *
7 from exportingObjects import exportObjects
8
9 security = ModuleSecurityInfo( 'Products.qPloneSkinDump.qPloneSkinDump' )
10
11 security.declarePublic('getExportingData')
12 def getExportingData(context):
13     result_list = { 'default_import_policy':DEFAULT_IMPORTING_POLICY
14                    ,'import_policy_list':{}
15                    ,'export_object_id_list':[] }
16     # Form allowed id list for exporting
17     portal_ids = getToolByName(context, 'portal_url').getPortalObject().objectIds()
18     result_list['export_object_id_list'] = [id for id in portal_ids \
19                                             if id not in FORBIDDEN_EXP_NAMES \
20                                             and not FORBIDDEN_EXP_PREFIXES.match(id)]
21     # Form importing_policy_list dictionary with readable names
22     result_list['import_policy_list'] = ipols = {}
23     [ipols.update({ip:ip.replace("_"," ").capitalize()}) for ip in IMPORTING_POLICY_LIST]
24     return result_list
25
26 security.declarePublic('getSlotsFormingList')
27 def getSlotsFormingList():
28     return {'default':DEFAULT_SLOT_FORMING \
29            ,'data':[[s, s.replace("_"," ").capitalize()] for s in SLOT_FORMING_LIST]}
30
31 security.declarePublic('getMainColumnList')
32 def getMainColumnList():
33     return {'default':DEFAULT_MAIN_COLUMN \
34            ,'data':[[s, s.capitalize()] for s in MAIN_COLUMN_LIST]}
35
36 security.declarePublic('isValidProductName')
37 def isValidProductName(product_name):
38     """ Check for product presence in installed products list"""
39     return (product_name not in get_product_listdirs() \
40             and isValidDirName(product_name))
41
42 DIR_NAME_PATTERN = re.compile("^[a-zA-Z]+[a-zA-Z0-9_]*[a-zA-Z0-9]$")
43 security.declarePublic('isValidDirName')
44 def isValidDirName(dir_name):
45     """ Check for validity directory name"""
46     m = DIR_NAME_PATTERN.match(dir_name)
47     return m and dir_name == m.group()
48
49 security.declarePublic('createProduct')
50 def createProduct(context, \
51                   zmi_skin_names=['custom',], \
52                   zmi_base_skin_name='', \
53                   subdir=None,\
54                   fs_skin_directory='custom',\
55                   fs_product_name='QSkinTemplate',\
56                   erase_from_skin=0,\
57                   doesCustomizeSlots=None,\
58                   left_slots=[],\
59                   right_slots=[],\
60                   slot_forming=DEFAULT_SLOT_FORMING,\
61                   main_column=DEFAULT_MAIN_COLUMN,\
62                   doesExportObjects=None,\
63                   import_policy=DEFAULT_IMPORTING_POLICY,\
64                   exporting_objects=[], \
65                   dump_CSS=True, \
66                   dump_JS=True, \
67                   dump_portlets=0, \
68                   dump_policy='root', \
69                   dump_portlets_selection=[], \
70                   dump_custom_views=False):
71     """ Main Skin Product creating procedure."""
72     makeNewProduct(context, fs_product_name, fs_skin_directory, \
73                    zmi_skin_names, zmi_base_skin_name, subdir, \
74                    doesCustomizeSlots, left_slots, right_slots, slot_forming, main_column, \
75                    doesExportObjects, import_policy, \
76                    dump_CSS, dump_JS, dump_portlets, dump_policy, dump_portlets_selection, dump_custom_views)
77     dumpSkin(context, zmi_skin_names, fs_product_name, erase_from_skin)
78     result = exportObjects(context, doesExportObjects, exporting_objects, fs_product_name)
79     return result
80
81 security.apply(globals())
Note: See TracBrowser for help on using the browser.