## Script (Python) "course_edit" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters=REQUEST, cpsdocument_edit_button=None, cpsdocument_edit_and_view_button=None, action=None ##title= # $Id: course_edit.py 1071 2006-12-16 15:53:13Z joachim $ """ """ try: from Products.zdb import set_trace except: def set_trace(): pass from urllib import urlencode from Products.CPSDocument.utils import getFormUidUrlArg from Products.AdvancedQuery import Eq, Between, Le,In import DateTime current = DateTime.DateTime() import logging logger = logging.getLogger('Skins.course_edit') wf = context.portal_workflow request = REQUEST edit = "edit" in request.form.keys() mtool = context.portal_membership member = mtool.getAuthenticatedMember() member_id = str(member) requested_id = context.getStudentId() if requested_id and not context.isStaff() and member_id != requested_id: logger.info('%s tried to access personal object of %s' % (member_id,requested_id)) student_id = requested_id return REQUEST.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url()) elif context.isStaff(): student_id = requested_id else: student_id = member_id level_id = context.getId() course_id = traverse_subpath[0] query = Eq('student_id',student_id) &\ Eq('level_id', level_id) &\ Eq('code', course_id) course_results = context.course_results.evalAdvancedQuery(query) mode = 'edit' object = {} course = course_results[0] for field in context.course_results.schema(): object[field] = getattr(course,field) lt = context.portal_layouts res,psm, ds = lt.renderLayout(schema_id = 'student_course_result', layout_id = 'student_course_result_fe', layout_mode = mode, context=context, mapping=edit and REQUEST, ob=object, commit = False) while True: if psm == 'invalid': psm = "Please correct your input" break elif psm == '': break if edit: data = {} dm = ds.getDataModel() for field in context.course_results.schema(): if dm.has_key("%s" % field): data[field] = dm.get(field) data['key'] = object['key'] context.course_results.modifyRecord(**data) logger.info('%s edited course result data %s' % (student_id, course_id)) psm = 'psm_content_changed' break return context.course_edit_form(rendered = res, psm = psm, mode = mode, ds = ds, )