source: WAeUP_SRP/trunk/skins/waeup_student/create_level.py @ 2024

Last change on this file since 2024 was 1986, checked in by Henrik Bettermann, 17 years ago

show sessions, courselevel and entrymodes vocabularies in correct order, please check
(btw courselevel should be renamed to levels)

  • Property svn:keywords set to Id
File size: 5.0 KB
Line 
1##parameters=
2# $Id: create_level.py 1986 2007-07-05 09:10:38Z henrik $
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.