##parameters=
# $Id: id_rename.py 2743 2007-11-22 21:42:57Z henrik $
"""
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 started 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() + \
                                ('?portal_status_message=%s' \
                                % ('psm_item(s)_renamed',)))
