source: WAeUP_SRP/branches/joachim-azax-branch/skins/waeup_student/create_level.py @ 15362

Last change on this file since 15362 was 1988, checked in by joachim, 17 years ago

merged r1979:r1987 from trunk

  • Property svn:keywords set to Id
File size: 5.0 KB
Line 
1##parameters=
2# $Id: create_level.py 1988 2007-07-05 11:14:12Z joachim $
3"""
4process the Application Form
5return html renderer + psm
6"""
7request = context.REQUEST
8import DateTime,logging
9try:
10    from Products.zdb import set_trace
11except:
12    def set_trace():
13        pass
14from Products.AdvancedQuery import Eq, Between, Le,In
15try:
16    aq_portal = context.portal_catalog.evalAdvancedQuery
17except:
18    aq_portal = context.portal_catalog_real.evalAdvancedQuery
19aq_courses = context.courses_catalog.evalAdvancedQuery
20
21current = DateTime.DateTime()
22request = context.REQUEST
23#session = request.SESSION
24response = request.RESPONSE
25redirect = response.redirect
26logger = logging.getLogger('Skins.create_level')
27mtool = context.portal_membership
28member = mtool.getAuthenticatedMember()
29member_id = str(member)
30lt = context.portal_layouts
31wt = context.waeup_tool
32student = context.students_catalog(id=context.getStudentId())[0]
33cert_id = student.course
34current_level = student.level
35in_progress =  request.get('in_progress','not started')
36#level_created =  request.get('level_created','xxx')
37create_level =  request.get('create_level',None)
38
39##if context.hasObject(current_level) and create_level:
40##    if getattr(context,current_level).objectIds():
41##        logger.info('%s tried to add already existing level %s' % (student.id,current_level))
42##    return
43logger.info('%s started to create level %s' % (student.id,current_level))
44
45##if in_progress in ('not started','started'):
46##    session.set('in_progress','started')
47##    view = context.in_progress_view(refresh=20,page='create_level?in_progress=started')
48##    response.setHeader('Content-type','text/html; charset=ISO-8859-15')
49##    response.setHeader('Content-length','%d' % (len(view)))
50##    response.setStatus('OK')
51##    response.write(view)
52##    response.write('')
53##    if in_progress == 'started':
54##        return
55
56if context.hasObject(current_level):
57    level = getattr(context,"%s" % current_level)
58else:
59    context.invokeFactory('StudentStudyLevel',"%s" % current_level)
60    level = getattr(context,"%s" % current_level)
61    context.portal_workflow.doActionFor(level,'open')
62    study_session = context.getSessionString()
63    level.getContent().edit(mapping={'session': study_session})
64    context.portal_workflow.doActionFor(level,'close_for_edit')
65    context.waeup_tool.doCommit()
66results = []
67if student.matric_no:
68    results = context.results_import(matric_no = student.matric_no)
69if results:
70    #carry_overs = [brain for brain in results if brain.GRADE in ('D','E','F')]
71    l = []
72    carry_overs = results
73
74    # carry_overs for probation students: yes or not, that is the question
75    #if student.verdict == "C": # on probation
76    #    carry_overs = []
77
78    for co in carry_overs:
79        cr_id = "%s_co" % co.CosCode
80        if level.hasObject(cr_id):    #already created
81            continue
82        carry_over = False
83        query = Eq('code',co.CosCode)
84        c_res = aq_courses(query)
85        if not c_res:
86            #logger.info('%s", course %s not found in courses_catalog' % (student.id,co.CosCode))
87            continue
88        course_cat_entry = c_res[0]
89        passmark = getattr(course_cat_entry,'passmark',None)
90        if not passmark:
91            carry_over = co.GRADE in ('D','E','F')
92        else:
93            try:
94                score = int(co.Score)
95            except:
96                # logger.info('%s, course %s has invalid score %s"' % (student.id,
97                #                                                     co.CosCode,
98                #                                                     co.Score))
99                continue
100            if int(c_res[0].passmark) <= score:
101                continue
102            carry_over = True
103        if not carry_over:
104            continue
105        d = context.getCourseInfo(co.CosCode)
106        d['grade'] = co.GRADE
107        d['carry_level'] = co.CarryLevel
108        cr_id = level.invokeFactory('StudentCourseResult',"%s_co" % co.CosCode)
109        course_result = getattr(level,cr_id)
110        context.portal_workflow.doActionFor(course_result,'open')
111        course_result.getContent().edit(mapping=d)
112        context.waeup_tool.doCommit()
113#level['create_course_results'](cert_id,current_level)
114res = context.portal_catalog(portal_type="Certificate", id = cert_id)
115l = []
116if res:
117    cert = res[0]
118    path = cert.getPath()
119    #set_trace()
120    query = Eq("path","%s/%s" % (path,current_level)) &\
121            Eq('portal_type','CertificateCourse')
122    courses = aq_portal(query)
123    for c in courses:
124        cr_id = "%s" % c.getId
125        if level.hasObject(cr_id):    #already created
126            continue
127        d = context.getCourseInfo(c.getId)
128        cr_id = level.invokeFactory('StudentCourseResult',c.getId)
129        course_result = getattr(level,cr_id)
130        context.portal_workflow.doActionFor(course_result,'open')
131        d['core_or_elective'] = getattr(c.getObject().getContent(),'core_or_elective')
132        course_result.getContent().edit(mapping=d)
133        context.waeup_tool.doCommit()
134logger.info('%s finished to create level %s' % (student.id,current_level))
135return response.redirect("%s/%s" % (context.absolute_url(),current_level))
136
Note: See TracBrowser for help on using the repository browser.