Changeset 828 for WAeUP_SRP/trunk/WAeUPTool.py
- Timestamp:
- 10 Nov 2006, 15:26:31 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
WAeUP_SRP/trunk/WAeUPTool.py
r282 r828 19 19 # $Id$ 20 20 """The WAeUPTool. 21 22 $Id$ 21 23 """ 22 24 23 #from zLOG import LOG, DEBUG24 from Globals import InitializeClass, HTMLFile25 25 from AccessControl import ClassSecurityInfo 26 from OFS.Folder import Folder 26 from Acquisition import aq_inner 27 from Acquisition import aq_parent 28 from Globals import DTMLFile 29 from Globals import InitializeClass 30 from OFS.SimpleItem import SimpleItem 27 31 28 from Products.CPSInstaller.CPSInstaller import CPSInstaller 29 from Products.CMFCore.PortalFolder import PortalFolder 30 from Products.CMFCore.permissions import View, ManagePortal 32 from Products.CMFCore.ActionProviderBase import ActionProviderBase 33 from Products.CMFCore.permissions import View 34 from Products.ZCatalog.ZCatalog import ZCatalog 35 from Products.CMFCore.permissions import ModifyPortalContent 31 36 from Products.CMFCore.utils import UniqueObject 32 37 33 class WAeUPTool(UniqueObject, PortalFolder):38 class WAeUPTool(UniqueObject, SimpleItem, ActionProviderBase): 34 39 """WAeUP tool""" 35 40 36 id = ' portal_WAeUP'41 id = 'waeup_tool' 37 42 meta_type = 'WAeUP Tool' 43 _actions = () 38 44 39 45 security = ClassSecurityInfo() 40 manage_options = (#ActionProviderBase.manage_options + 41 PortalFolder.manage_options[:1] + 42 PortalFolder.manage_options[2:]) 46 security.declareObjectProtected(View) 43 47 44 ## _actions = () 45 ## 46 ## 47 ## # 48 ## # ZMI 49 ## # 50 ## _properties = ( 51 ## {'id': 'title', 'type': 'string', 'mode': 'w', 52 ## 'label': 'Title'}, 53 ## {'id': 'uni_id', 'type': 'string', 'mode': 'w', 54 ## 'label': 'University ID'}, 55 ## {'id': 'uni_name', 'type': 'string', 'mode': 'w', 56 ## 'label': 'University Name'}, 57 ## ) 58 ## title = '' 59 ## def __init__(self,uni_id,uni_name): 60 ## self.manage_changeProperties(uni_id = uni_id, 61 ## uni_name = uni_name, 62 ## ) 63 ## PortalFolder.__init__(self, self.id) 64 ## 65 ## 66 ## def verifyFaculties(self, academics): ###( 67 ## """install Universityspecific Faculies with Departments""" 68 ## faculties = [ 69 #### {'id': 'agri', ###( 70 #### 'Title': 'Agriculture', 71 #### 'departments': [ 72 #### { 'id': 'dep1', ###( 73 #### 'Title': 'One', 74 #### }, 75 #### ], 76 #### },###) 77 ## { 'id': 'science', 78 ## 'Title': 'Science', 79 ## 'departments': [ 80 ## { 'id': 'bio', ###( 81 ## 'Title': 'Biochemistry', 82 ## }, 83 ## { 'id': 'bot', 84 ## 'Title': 'Botany', 85 ## }, 86 ## { 'id': 'che', 87 ## 'Title': 'Chemistry', 88 ## }, 89 ## { 'id': 'com', 90 ## 'Title': 'Computer Science', 91 ## }, 92 ## { 'id': 'geo', 93 ## 'Title': 'Geologie', 94 ## }, 95 ## { 'id': 'mat', 96 ## 'Title': 'Mathematics', 97 ## }, 98 ## { 'id': 'mic', 99 ## 'Title': 'Microbiology', 100 ## }, 101 ## { 'id': 'opt', 102 ## 'Title': 'Optometry', 103 ## }, 104 ## { 'id': 'phy', 105 ## 'Title': 'Physics', 106 ## }, 107 ## { 'id': 'zoo', 108 ## 'Title': 'Zoology', 109 ## }, 110 ## ], 111 ## },###) 112 ## ]###) 113 ## #self.log('Verifying Faculties in %s' % academics.absolute_url(relative=1)) 114 ## for faculty in faculties: 115 ## fid = faculty['id'] 116 ## f = getattr(academics,fid,None) 117 ## #self.log('Checking Faculty %(id)s = %(Title)s' % faculty) 118 ## if f is None: 119 ## #self.log('Creating Faculty %(id)s = %(Title)s' % faculty) 120 ## academics.invokeFactory('Faculty', fid) 121 ## f = getattr(academics,fid) 122 ## f.getContent().edit(mapping=faculty) 123 ## for department in faculty['departments']: 124 ## #self.log('Checking Department %(id)s = %(Title)s' % department) 125 ## did = department['id'] 126 ## d = getattr(f,did,None) 127 ## if d is None: 128 ## #self.log('Creating Department %(id)s = %(Title)s' % department) 129 ## f.invokeFactory('Department', did) 130 ## d = getattr(f,did) 131 ## d.getContent().edit(mapping=department) 132 ## ###) 133 ## 134 ##InitializeClass(WAeUPTool) 135 ## 136 ##def verifyPortlets(portal, portlets=(), object=None): ###( 137 ## """Verify the existence of given portet in the object's portlet 138 ## container. If not found, a portlet is instantiated. 139 ## Existing portlets are not affected. 140 ## 'portlets' is a tuple with the dictionaries given by the export tab 141 ## as entries. 142 ## The default object is the portal itself. 143 ## return the list a new portlet ids. 144 ## """ 145 ## #self.log('Verifying portlets on %s' % object.absolute_url(relative=1)) 146 ## #portlet_container = CPSInstaller.getPortletContainer(object, create=1) 147 ## idpc = portal.portal_cpsportlets.getPortletContainerId() 148 ## if not hasattr(object, idpc): 149 #### self.log(" Creating %s/%s" % 150 #### (object.absolute_url(relative=1), idpc)) 151 ## object.manage_addProduct['CPSPortlets'].addPortletsContainer() 152 ## portlet_container = getattr(object, idpc, None) 153 ## ttool = portal.portal_types 154 ## returned = [] 155 ## for new_portlet in portlets: 156 ## existing_portlets = portlet_container.listPortlets() 157 ## updated = 0 158 ## # Check if the portlet needs an update 159 ## identifier = new_portlet.get('identifier') 160 ## if identifier: 161 ## for portlet in existing_portlets: 162 ## if identifier == portlet.identifier: 163 ## #portal.log(" Update of portlet: %s" % portlet) 164 ## portlet.edit(**new_portlet) 165 ## portlet_id = portlet.getId() 166 ## updated = 1 167 ## continue 168 ## slot = new_portlet.get('slot') 169 ## if slot: 170 ## for portlet in existing_portlets: 171 ## if slot == portlet.slot: 172 ## #portal.log(" Update of portlet: %s" % portlet) 173 ## portlet.edit(**new_portlet) 174 ## portlet_id = portlet.getId() 175 ## updated = 1 176 ## continue 177 ## 178 ## if not updated: 179 ## #portal.log(" Creation of portlet: %s" % new_portlet) 180 ## portlet_id = portal.portal_cpsportlets.createPortlet( 181 ## ptype_id=new_portlet['type'], 182 ## context=object, 183 ## **new_portlet) 184 ## if portlet_id not in returned: 185 ## returned.append(portlet_id) 186 ## return returned 187 ## ###) 188 ## 189 ##addWAeUPToolForm = HTMLFile('zmi/manage_addWAeUPUniversity', 190 ## globals()) 191 ## 192 ##def addWAeUPTool(container, id, 193 ## title='WAeUP University', 194 ## description='', 195 ## langs_list=None, 196 ## manager_id='manager', 197 ## manager_sn='CPS', 198 ## manager_givenName='Manager', 199 ## manager_email='', 200 ## manager_password='', 201 ## manager_password_confirmation='', 202 ## REQUEST=None): 203 ## """Add WAeUPTool""" 204 ## 205 ## _log = [] 206 ## def pr(bla, zlog=1, _log=_log): 207 ## if bla == 'flush': 208 ## return '<br/>\n'.join(_log) 209 ## _log.append(bla) 210 ## if (bla and zlog): 211 ## LOG('addWAeUPUniversity:', INFO, bla) 212 ## 213 ## uni_id = id.strip() 214 ## uni_name = title.strip() 215 ## description = description.strip() 216 ## manager_id = manager_id.strip() 217 ## 218 #### if not id: 219 #### raise ValueError, "You have to provide an id for the portal!" 220 #### if not manager_id: 221 #### raise ValueError, "You have to provide an id for the CPS Administrator!" 222 #### if not manager_email: 223 #### raise ValueError, "You have to provide an email address for the CPS Administrator!" 224 #### if not manager_password: 225 #### raise ValueError, "You have to provide CPS Administrator password!" 226 #### if manager_password != manager_password_confirmation: 227 #### raise ValueError, "Password confirmation does not match password!" 228 ## 229 ## email_from_name = ('%s %s' % (manager_givenName, manager_sn)).strip() 230 ## wt = WAeUPTool(uni_id,uni_name) 231 ## id = wt.getId() 232 ## container._setObject(id, wt) 233 ## sections = getattr(container,'sections') 234 ## workspaces = getattr(container,'workspaces') 235 ## sections.invokeFactory('University',uni_id) 236 ## uni = getattr(sections,uni_id) 237 ## uni.getContent().edit(title=uni_name) 238 ## uni.invokeFactory('StudentsFolder','students') 239 ## students = getattr(uni,'students').getContent() 240 ## students.edit(mapping={'Title':'Students'}) 241 #### uni.folder_localrole_add(member_ids=('group:Students',), 242 #### member_role='SectionReviewer', 243 #### ) 244 #### uni.content_create(type_name='AcademicsFolder',title='academics') 245 #### sections.uni.folder_localrole_add(member_ids=('group:StudentManager',), 246 #### member_role='SectionManager', 247 #### ) 248 #### uni.students.manage_setLocalGroupRoles(groupid = 'Students',roles=('Contributor',)) 249 ## uni.invokeFactory('AcademicsFolder','academics', title='Academics') 250 ## academics = getattr(uni,'academics').getContent() 251 ## academics.edit(mapping={'Title':'Academics'}) 252 ## uni.invokeFactory('AccoFolder','accommodation', title='Accommodation') 253 ## accommodation = getattr(uni,'accommodation').getContent() 254 ## accommodation.edit(mapping={'Title':'Accommodation'}) 255 ## academics = getattr(uni,'academics',None) 256 ## if academics is None: 257 ## uni.invokeFactory('AcademicsFolder','academics') 258 ## academics = getattr(uni,'academics') 259 ## academics.getContent().edit(mapping={'Title':'Academics'}) 260 ## wt.verifyFaculties(academics) 261 ## if not hasattr(uni,'accommodation'): 262 ## uni.invokeFactory('AccoFolder','accommodation') 263 ## accommodation = getattr(uni,'accommodation').getContent() 264 ## accommodation.edit(mapping={'Title':'Accommodation'}) 265 ## #uni.manage_setLocalGroupRoles(groupid = 'role:Anonymous',roles=('SectionReader',)) 266 ## # portlets ###( 267 ## # 268 ## portlets = ( 269 ## {#'identifier': 'waeup_breadcrumbs', 270 ## 'type': 'Breadcrumbs Portlet', 271 ## 'slot': 'waeup_breadcrumbs', 272 ## 'first_item': 0, 273 ## 'display_site_root': 0, 274 ## 'Title': 'waeup_breadcrumbs', 275 ## 'display': 'horizontal_trail', 276 ## 'display_hidden_folders': 0, 277 ## 'order': 0, 278 ## }, 279 ## {#'identifier': 'waeup_main_tab_actions', 280 ## 'type': 'Actions Portlet', 281 ## 'slot': 'main_tabs', 282 ## 'order': 0, 283 ## 'categories': ['main_tabs',], 284 ## 'Title': 'waep_main_tab_actions', 285 ## }, 286 ## {#'identifier': 'waeup_object_actions', 287 ## 'type': 'Actions Portlet', 288 ## 'slot': 'waeup_object_actions', 289 ## 'order': 0, 290 ## 'categories': ['object',], 291 ## 'Title': 'waep_manager_actions', 292 ## }, 293 ## {#'identifier': 'waeup_left_top', 294 ## 'type': 'Custom Portlet', 295 ## 'slot': 'left_top', 296 ## 'order': 0, 297 ## 'render_method': 'portlet_session_info', 298 ## 'Title': 'Session Info', 299 ## }, 300 ## ) 301 ## #verifyPortletContainer(uni) 302 ## verifyPortlets(container,portlets,uni) 303 ## 304 ## ###) 305 ## if REQUEST is not None: 306 ## url = container.absolute_url() 307 ## REQUEST.RESPONSE.redirect('%s/manage_main' % url) 308 ## 48 manage_options = ( ActionProviderBase.manage_options 49 + SimpleItem.manage_options 50 ) 51 52 ## security.declarePublic('getHallTitle') 53 ## def getHallTitle(self,hall): 54 ## """get the Hall Title""" 55 ## res = ZCatalog.searchResults(self.portal_catalog,portal_type="AccoHall",id=hall) 56 ## if res and len(res) == 1: 57 ## return res[0].Title 58 ## return hall 59 60 security.declarePublic('getAccommodationInfo') 61 def getAccommodationInfo(self,bed): 62 """return Accommodation Info""" 63 info = {} 64 hall,block,room,letter = bed.split('_') 65 res = ZCatalog.searchResults(self.portal_catalog,portal_type="AccoHall",id=hall) 66 if res and len(res) == 1: 67 hall_brain = res[0] 68 hall_doc = hall_brain.getObject().getContent() 69 else: 70 return info 71 info['hall_title'] = hall_brain.Title 72 info['maintenance_code'] = hall_doc.maintenance_code 73 res = ZCatalog.searchResults(self.portal_catalog,portal_type="ScratchCardBatch") 74 batch_doc = None 75 for brain in res: 76 if brain.id.startswith(info['maintenance_code']): 77 batch_doc = brain.getObject().getContent() 78 break 79 if batch_doc is None: 80 info['maintenance_fee'] = None 81 else: 82 info['maintenance_fee'] = batch_doc.cost 83 return info 84 85 InitializeClass(WAeUPTool)
Note: See TracChangeset for help on using the changeset viewer.