- Timestamp:
- 25 Oct 2012, 12:01:23 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.kofa/trunk/src/waeup/kofa/students/batching.py
r9316 r9418 720 720 721 721 class StudentVerdictProcessor(StudentStudyCourseProcessor): 722 """A batch processor for verdicts.722 """A special batch processor for verdicts. 723 723 724 724 Import verdicts and perform workflow transitions. … … 728 728 grok.name(util_name) 729 729 730 name = u'Verdict Processor ( update only)'730 name = u'Verdict Processor (special processor, update only)' 731 731 iface = IStudentVerdictUpdate 732 732 factory_name = 'waeup.StudentStudyCourse' … … 793 793 notify(grok.ObjectModifiedEvent(obj.__parent__)) 794 794 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 = ICourseTicket 809 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 None 819 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 None 825 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 return 838 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__.code 844 obj.dcode = entries[0].__parent__.__parent__.code 845 obj.title = entries[0].title 846 if getattr(obj, 'credits', None) is None: 847 obj.credits = entries[0].credits 848 if getattr(obj, 'passmark', None) is None: 849 obj.passmark = entries[0].passmark 850 obj.semester = entries[0].semester 851 parent[row['code']] = obj 852 return 853 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_dict 870 return errs, inv_errs, conv_dict
Note: See TracChangeset for help on using the changeset viewer.