source: WAeUP_SRP/base/skins/waeup_student/create_level.py @ 2458

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

rebuild getNextInfo.py completely
fetch session from portal properties.xml
change all scripts using getSessionId
remove StudentCourseResult? relevant code from event services
make pay_by_sc.py and interswitch_cb.py work (rebuild both)

  • Property svn:keywords set to Id
File size: 6.3 KB
Line 
1##parameters=
2# $Id: create_level.py 2454 2007-10-27 21:53:04Z 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
35current_session = student.session
36in_progress =  request.get('in_progress','not started')
37#level_created =  request.get('level_created','xxx')
38create_level =  request.get('create_level',None)
39
40##if context.hasObject(current_level) and create_level:
41##    if getattr(context,current_level).objectIds():
42##        logger.info('%s tried to add already existing level %s' % (student.id,current_level))
43##    return
44logger.info('%s started to create level %s' % (student.id,current_level))
45
46##if in_progress in ('not started','started'):
47##    session.set('in_progress','started')
48##    view = context.in_progress_view(refresh=20,page='create_level?in_progress=started')
49##    response.setHeader('Content-type','text/html; charset=ISO-8859-15')
50##    response.setHeader('Content-length','%d' % (len(view)))
51##    response.setStatus('OK')
52##    response.write(view)
53##    response.write('')
54##    if in_progress == 'started':
55##        return
56
57if context.hasObject(current_level):
58    level = getattr(context,"%s" % current_level)
59else:
60    context.invokeFactory('StudentStudyLevel',"%s" % current_level)
61    level = getattr(context,"%s" % current_level)
62    context.portal_workflow.doActionFor(level,'open')
63    #study_session = context.getSessionString()
64    level.getContent().edit(mapping={'session': current_session})
65    context.portal_workflow.doActionFor(level,'close_for_edit')
66    #context.waeup_tool.doCommit()
67level_id = level.getId()
68student_id = context.getStudentId()
69session_id = context.getLevelSession(level.getContent(),student_id,level_id)
70
71if student.matric_no:
72    results = context.results_import(matric_no = student.matric_no)
73records = []
74l = []
75if student.session in ('6', '06') and results:
76    carry_overs = results
77    for co in carry_overs:
78        course_id = co.CosCode
79        if level.hasObject(course_id):    #already created
80            continue
81        carry_over = False
82        query = Eq('code',co.CosCode)
83        c_res = aq_courses(query)
84        if not c_res:
85            #logger.info('%s", course %s not found in courses_catalog' % (student.id,co.CosCode))
86            continue
87        course_cat_entry = c_res[0]
88        passmark = getattr(course_cat_entry,'passmark',None)
89        if not passmark:
90            carry_over = co.GRADE in ('D','E','F')
91        else:
92            try:
93                score = int(co.Score)
94            except:
95                # logger.info('%s, course %s has invalid score %s"' % (student.id,
96                #                                                     course_id,
97                #                                                     co.Score))
98                continue
99            if int(c_res[0].passmark) <= score:
100                continue
101            carry_over = True
102        if not carry_over:
103            continue
104        if course_id in l:
105            # don't add twice
106            continue
107        l += course_id,
108        d = context.getCourseInfo(co.CosCode)
109        d['course_id'] = course_id
110        d['grade'] = co.GRADE
111        d['carry_over'] = carry_over
112        # course_id = level.invokeFactory('StudentCourseResult',"%s_co" % course_id)
113        # course_result = getattr(level,course_id)
114        # context.portal_workflow.doActionFor(course_result,'open')
115        # course_result.getContent().edit(mapping=d)
116        # context.waeup_tool.doCommit()
117        d['code'] = course_id
118        d['student_id'] = student_id
119        d['level_id'] = level_id
120        d['session_id'] = session_id
121        records.append(d)
122
123#level['create_course_results'](cert_id,current_level)
124res = context.portal_catalog(portal_type="Certificate", id = cert_id)
125if res:
126    cert = res[0]
127    path = cert.getPath()
128    query = Eq("path","%s/%s" % (path,current_level)) &\
129            Eq('portal_type','CertificateCourse')
130    courses = aq_portal(query)
131    for c in courses:
132        course_id = "%s" % c.getId
133        if course_id in l:
134            # don't add twice
135            continue
136        l += course_id,
137        d = context.getCourseInfo(c.getId)
138        # course_id = level.invokeFactory('StudentCourseResult',c.getId)
139        # course_result = getattr(level,course_id)
140        # context.portal_workflow.doActionFor(course_result,'open')
141        # d['core_or_elective'] = True
142        # course_result.getContent().edit(mapping=d)
143        # context.waeup_tool.doCommit()
144        d['carry_over'] = False
145        d['core_or_elective'] = getattr(c.getObject().getContent(),'core_or_elective')
146        d['course_id'] = course_id
147        d['student_id'] = student_id = context.getStudentId()
148        d['level_id'] = level_id
149        d['session_id'] = session_id
150        #context.course_results.addRecord(**d)
151        records.append(d)
152if records:
153    context.course_results.addMultipleRecords(records)
154logger.info('%s finished to create level %s' % (student.id,current_level))
155
156#if current_session == '05':
157#    next_session = '06'
158#    next_level = "%s" % (int(current_level) + 100)
159#    study_course = getattr(student,'study_course')
160#    context.portal_workflow.doActionFor(study_course,'open')
161#    study_course_doc = study_course.getContent()
162#    study_course_doc.edit(mapping= {'current_level': next_level,
163#                                    'current_session': next_session,})
164#    context.portal_workflow.doActionFor(study_course,'close_for_edit')
165
166return response.redirect("%s/%s" % (context.absolute_url(),current_level))
Note: See TracBrowser for help on using the repository browser.