- Timestamp:
- 25 Oct 2012, 21:52:10 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.kofa/trunk/src/waeup/kofa/students/batching.py
r9418 r9420 43 43 IStudent, IStudentStudyCourse, 44 44 IStudentUpdateByRegNo, IStudentUpdateByMatricNo, 45 IStudentStudyLevel, ICourseTicket ,45 IStudentStudyLevel, ICourseTicketImport, 46 46 IStudentOnlinePayment, IStudentVerdictUpdate) 47 47 from waeup.kofa.students.workflow import ( … … 305 305 grok.baseclass() 306 306 307 # additional available 307 # additional available fields 308 308 # beside 'student_id', 'reg_number' and 'matric_number' 309 309 additional_fields = [] … … 541 541 542 542 name = u'CourseTicket Processor' 543 iface = ICourseTicket 543 iface = ICourseTicketImport 544 544 factory_name = 'waeup.CourseTicket' 545 545 … … 547 547 additional_fields = ['level', 'code'] 548 548 additional_headers = ['level', 'code'] 549 550 @property 551 def available_fields(self): 552 fields = [ 553 'student_id','reg_number','matric_number', 554 'mandatory', 'score', 'carry_over', 'automatic', 555 'level_session' 556 ] + self.additional_fields 557 return sorted(fields) 549 558 550 559 def getParent(self, row, site): … … 579 588 obj.dcode = entries[0].__parent__.__parent__.code 580 589 obj.title = entries[0].title 581 if getattr(obj, 'credits', None) is None:582 583 if getattr(obj, 'passmark', None) is None:584 590 #if getattr(obj, 'credits', None) is None: 591 obj.credits = entries[0].credits 592 #if getattr(obj, 'passmark', None) is None: 593 obj.passmark = entries[0].passmark 585 594 obj.semester = entries[0].semester 586 595 parent[row['code']] = obj … … 602 611 errs, inv_errs, conv_dict = super( 603 612 CourseTicketProcessor, self).checkConversion(row, mode=mode) 604 605 # We have to check if course really exists. 613 if mode == 'remove': 614 return errs, inv_errs, conv_dict 615 # In update and create mode we have to check if course really exists. 606 616 # This is not done by the converter. 607 617 catalog = getUtility(ICatalog, name='courses_catalog') … … 610 620 errs.append(('code','non-existent')) 611 621 return errs, inv_errs, conv_dict 622 # If level_session is provided in row we have to check if 623 # the parent studylevel exists and if its level_session 624 # attribute corresponds with the expected value in row. 625 level_session = row.get('level_session', IGNORE_MARKER) 626 if level_session not in (IGNORE_MARKER, ''): 627 site = grok.getSite() 628 studylevel = self.getParent(row, site) 629 if studylevel is not None: 630 if studylevel.level_session != level_session: 631 errs.append(('level_session','does not match %s' 632 % studylevel.level_session)) 633 else: 634 errs.append(('level','does not exist')) 612 635 return errs, inv_errs, conv_dict 613 636 … … 793 816 notify(grok.ObjectModifiedEvent(obj.__parent__)) 794 817 return 795 796 class CourseResultProcessor(CourseTicketProcessor):797 """A special batch processor for course results objects.798 799 Import course results, compares session and creates study level.800 """801 grok.implements(IBatchProcessor)802 grok.provides(IBatchProcessor)803 grok.context(Interface)804 util_name = 'courseresultprocessor'805 grok.name(util_name)806 807 name = u'Course Result Processor (special processor)'808 iface = ICourseTicket809 factory_name = 'waeup.CourseTicket'810 811 location_fields = []812 additional_fields = ['level', 'code']813 additional_headers = ['level', 'code']814 815 def getParent(self, row, site):816 student = self._getStudent(row, site)817 if student is None:818 return None819 return student['studycourse'].get(row['level'])820 821 def getEntry(self, row, site):822 level = self.getParent(row, site)823 if level is None:824 return None825 return level.get(row['code'])826 827 def updateEntry(self, obj, row, site):828 """Update obj to the values given in row.829 """830 items_changed = super(CourseTicketProcessor, self).updateEntry(831 obj, row, site)832 parent = self.getParent(row, site)833 student = self.getParent(row, site).__parent__.__parent__834 student.__parent__.logger.info(835 '%s - Course ticket in %s updated: %s'836 % (student.student_id, parent.level, items_changed))837 return838 839 def addEntry(self, obj, row, site):840 parent = self.getParent(row, site)841 catalog = getUtility(ICatalog, name='courses_catalog')842 entries = list(catalog.searchResults(code=(row['code'],row['code'])))843 obj.fcode = entries[0].__parent__.__parent__.__parent__.code844 obj.dcode = entries[0].__parent__.__parent__.code845 obj.title = entries[0].title846 if getattr(obj, 'credits', None) is None:847 obj.credits = entries[0].credits848 if getattr(obj, 'passmark', None) is None:849 obj.passmark = entries[0].passmark850 obj.semester = entries[0].semester851 parent[row['code']] = obj852 return853 854 def delEntry(self, row, site):855 raise NotImplementedError('method not implemented')856 857 def checkConversion(self, row, mode='ignore'):858 """Validates all values in row.859 """860 errs, inv_errs, conv_dict = super(861 CourseTicketProcessor, self).checkConversion(row, mode=mode)862 863 # We have to check if course really exists.864 # This is not done by the converter.865 catalog = getUtility(ICatalog, name='courses_catalog')866 entries = catalog.searchResults(code=(row['code'],row['code']))867 if len(entries) == 0:868 errs.append(('code','non-existent'))869 return errs, inv_errs, conv_dict870 return errs, inv_errs, conv_dict
Note: See TracChangeset for help on using the changeset viewer.