Ignore:
Timestamp:
10 Nov 2006, 15:26:31 (18 years ago)
Author:
joachim
Message:

reenabled waeup_tool,
reserve accommodation fixed

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WAeUP_SRP/trunk/WAeUPTool.py

    r282 r828  
    1919# $Id$
    2020"""The WAeUPTool.
     21
     22$Id$
    2123"""
    2224
    23 #from zLOG import LOG, DEBUG
    24 from Globals import InitializeClass, HTMLFile
    2525from AccessControl import ClassSecurityInfo
    26 from OFS.Folder import Folder
     26from Acquisition import aq_inner
     27from Acquisition import aq_parent
     28from Globals import DTMLFile
     29from Globals import InitializeClass
     30from OFS.SimpleItem import SimpleItem
    2731
    28 from Products.CPSInstaller.CPSInstaller import CPSInstaller
    29 from Products.CMFCore.PortalFolder import PortalFolder
    30 from Products.CMFCore.permissions import View, ManagePortal
     32from Products.CMFCore.ActionProviderBase import ActionProviderBase
     33from Products.CMFCore.permissions import View
     34from Products.ZCatalog.ZCatalog import ZCatalog
     35from Products.CMFCore.permissions import ModifyPortalContent
    3136from Products.CMFCore.utils import UniqueObject
    3237
    33 class WAeUPTool(UniqueObject,PortalFolder):
     38class WAeUPTool(UniqueObject, SimpleItem, ActionProviderBase):
    3439    """WAeUP tool"""
    3540
    36     id = 'portal_WAeUP'
     41    id = 'waeup_tool'
    3742    meta_type = 'WAeUP Tool'
     43    _actions = ()
    3844
    3945    security = ClassSecurityInfo()
    40     manage_options = (#ActionProviderBase.manage_options +
    41                       PortalFolder.manage_options[:1] +
    42                       PortalFolder.manage_options[2:])
     46    security.declareObjectProtected(View)
    4347
    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
     85InitializeClass(WAeUPTool)
Note: See TracChangeset for help on using the changeset viewer.