## Script (Python) "register_courses"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=REQUEST=None, student=None, action_after_reject=None, action_after_validate=None
##title=
##
# $Id: register_courses.py 1504 2007-02-26 21:20:40Z henrik $
"""
close the Students StudyLevel
"""
from Products.CMFCore.WorkflowCore import WorkflowException
try:
    from Products.zdb import set_trace
except:
    def set_trace():
        pass

from urllib import urlencode

request = context.REQUEST
mtool = context.portal_membership
member = mtool.getAuthenticatedMember()
member_id = str(member)
import logging
logger = logging.getLogger('Skins.register_courses')

wftool = context.portal_workflow
students_folder = context.portal_url.getPortalObject().campus.students
student_id = context.getStudentId()
student = getattr(students_folder,student_id)

# FUTMinna only
if context.getId() == '101':
    return 'Forbidden'

info = context.getStudyLevelInfo()
if info['credits_exceeded']:
    args = {}
    args['portal_status_message'] = "Your total credits exceed %s!" % info['max_credits']
    url = context.absolute_url() + '?' + urlencode(args)
    logger.info('%s tried to register course list with credits exceeded, probably by pressing the browser back button' % (student_id))
    return REQUEST.RESPONSE.redirect(url)

try:
    wftool.doActionFor(student,'register_courses')
except WorkflowException,E:
    logger.info('%s WorkflowException %s for %s' % (member_id,E,student_id))
    return request.RESPONSE.redirect("%s" % context.absolute_url())

try:
    wftool.doActionFor(context,'close')
except WorkflowException,E:
    #logger.info('%s WorkflowException %s for %s' % (member_id,E,student_id))
    #return request.RESPONSE.redirect("%s" % context.absolute_url())
    pass

logger.info('%s registered course list of %s' % (member_id,student_id))
args = {}
psm = "You successfully submitted your course list!"
args['portal_status_message'] = psm
if action_after_validate:
    url = context.absolute_url() + '/' + action_after_validate + '?' + urlencode(args)
else:
    url = context.absolute_url() + '?' + urlencode(args)
return REQUEST.RESPONSE.redirect(url)
