## Script (Python) "deleteStudentByMatricNo" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters=REQUEST,matric_no=None ##title= ## # $Id: deleteStudentByMatricNo.py 1567 2007-03-17 08:34:51Z henrik $ """ """ import logging logger = logging.getLogger('Skins.deleteStudentByMatricNo') request = REQUEST wftool = context.portal_workflow mtool = context.portal_membership member = mtool.getAuthenticatedMember() roles = member.getRolesInContext(context) stdir = context.portal_directories.students st_cat = context.students_catalog ret_imp = context.returning_import res_imp = context.results_import students = context.portal_url.getPortalObject().campus.students if str(member) not in ('admin','joachim') or matric_no is None: return # remove from students_catalog res = st_cat(matric_no=matric_no) if len(res) != 1: msg = "Student with matric_no %s not found in students_catalog" % matric_no logger.info(msg) return msg else: stbrain = res[0] student_id = stbrain.id st_cat.deleteRecord(student_id) msg = "Student with matric_no %s and student_id %s removed from students_catalog" % (matric_no,student_id) output = [] logger.info(msg) output.append(msg) # remove from returning_import res_ret = ret_imp(matric_no=matric_no) if len(res_ret) != 1: msg = "Student with matric_no %s not found in returning_import" % matric_no logger.info(msg) else: ret_imp.deleteRecord(matric_no) msg = "Student with matric_no %s removed from returning_import" % matric_no logger.info(msg) output.append(msg) # remove from results_import res_deleted = [] res_res = res_imp(matric_no=matric_no) if len(res_res) > 0: for r in res_res: res_imp.deleteRecord(r.key) res_deleted.append(r.key) msg = "%s results deleted from results_import" % (',\n'.join(res_deleted)) else: msg = "No results to delete for %s from results_import" % matric_no output.append(msg) logger.info(msg) # remove objects if hasattr(students,student_id): students.manage_delObjects((student_id),) msg = "Student object for %s deleted" % student_id else: msg = "No students object for %s" % student_id output.append(msg) logger.info(msg) # remove from directory if hasattr(stdir, student_id): stdir.deleteEntry(student_id) msg = "Student directory entry for %s deleted" % student_id else: msg = "No Student directory entry for %s" % student_id output.append(msg) logger.info(msg) return "\n".join(output)