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

Last change on this file since 2486 was 2472, checked in by joachim, 17 years ago

define records

  • Property svn:keywords set to Id
File size: 6.4 KB
Line 
1##parameters=
2# $Id: create_level.py 2472 2007-10-29 10:09:33Z 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
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)
70results = []
71records = []
72if student.matric_no:
73    results = context.results_import(matric_no = student.matric_no)
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.