##parameters= # $Id: id_rename.py 1724 2007-04-30 15:37:48Z joachim $ """ Rename objects which ids are passed in the request. Used within the folder_contents template. """ try: from Products.zdb import set_trace except: def set_trace(): pass import logging logger = logging.getLogger('Skins.id_rename') mtool = context.portal_membership member = mtool.getAuthenticatedMember() REQUEST = context.REQUEST if context.portal_type in ('CoursesFolder',): return REQUEST.RESPONSE.redirect(context.absolute_url() + \ ('/academics_index?portal_status_message=%s' \ % ('Courses cannot be renamed',))) old_ids = REQUEST['ids'] new_ids = REQUEST['new_ids'] new_ids = [id.upper() for id in REQUEST['new_ids']] here = context if context.portal_type == "University": here = context.academics pt = context.portal_type mt = context.meta_type logger.info('%s starting renaming %s to %s' % (member,old_ids,new_ids)) here.manage_renameObjects(REQUEST['ids'], new_ids, REQUEST) if pt == 'University': for faculty in old_ids: students = context.students_catalog(faculty=faculty) student_ids = [s.id for s in students] data = {} new_fid = new_ids[old_ids.index(faculty)] data['faculty'] = new_fid for sid in student_ids: data['id'] = sid context.students_catalog.modifyRecord(**data) courses = context.courses_catalog(faculty=faculty) courses_ids = [c.code for c in courses] for cid in courses_ids: data['code'] = cid context.courses_catalogModify(**data) elif pt == 'Faculty': for department in old_ids: students = context.students_catalog(department=department) student_ids = [s.id for s in students] data = {} new_did = new_ids[old_ids.index(department)] data['department'] = new_did for sid in student_ids: data['id'] = sid context.students_catalog.modifyRecord(**data) courses = context.courses_catalog(department=department) courses_ids = [c.code for c in courses] for cid in courses_ids: data['code'] = cid context.courses_catalogModify(**data) logger.info('%s finished renaming %s to %s' % (member,old_ids,new_ids)) return REQUEST.RESPONSE.redirect(here.absolute_url() + \ ('/academics_index?portal_status_message=%s' \ % ('psm_item(s)_renamed',)))