def findGrade(self, studentId: int, assignmentId: int) -> Grade: """ Finds and returns the grade of a student for a given assignment """ grade = Grade(studentId, assignmentId) GradeValidator.validateGrade(grade) return self.__gradeRepository.getItem(grade)
def convertJSONToList(itemType: type, jsonObject): list = json.loads(jsonObject) newList = [] newItem = None for item in list: if itemType is Student: newItem = Student( TypeParser.parseInt(item["studentId"], InvalidStudentId), item["name"], TypeParser.parseInt(item["group"], InvalidStudentGroup)) StudentValidator.validateStudent(newItem) elif itemType is Grade: newItem = Grade( TypeParser.parseInt(item["studentId"], InvalidStudentId), TypeParser.parseInt(item["assignmentId"], InvalidAssignmentId), item["grade"]) GradeValidator.validateGrade(newItem) elif itemType is Assignment: newItem = Assignment( TypeParser.parseInt(item["assignmentId"], InvalidAssignmentId), item["description"], TypeParser.parseDate(item["deadline"], InvalidAssignmentDeadline)) AssignmentValidator.validateAssignment(newItem) newList.append(newItem) return newList
def convertTuples(tupleList: List[Tuple], itemType: type): newList = [] newItem = None for item in tupleList: if itemType is Student: newItem = Student(item[0], item[1], item[2]) elif itemType is Grade: newItem = Grade(item[0], item[1], item[2] if item[2] != "NULL" else None) elif itemType is Assignment: newItem = Assignment(item[0], item[1], TypeParser.parseDate(item[2], InvalidAssignmentDeadline)) newList.append(newItem) return newList
def assignToStudent(self, studentId, assignmentId, newCommit=True) -> Grade: """ Gives an assignment to a student """ self.findStudent(studentId) self.findAssignment(assignmentId) grade = Grade(studentId, assignmentId) self.__gradeRepository.addItem(grade) if newCommit: self.__changesStack.beginCommit() self.__changesStack.addChange(ChangesStack.ItemAdded(grade)) if newCommit: self.__changesStack.endCommit() return grade
def addRandomGrades(self, studentNumber: int, assignmentNumber: int, number: int): for i in range(number): grade = random.randint(0, 10) if grade == 0: grade = None valid = False while not valid: studentId = random.randint(0, studentNumber - 1) assignmentId = random.randint(0, assignmentNumber - 1) try: self.__gradeRepository.addItem(Grade(studentId, assignmentId, grade)) valid = True except DuplicateItemError: pass
def getGrade(self, studentId: int, assignmentId: int) -> Grade: self.findStudent(studentId) self.findAssignment(assignmentId) grade = Grade(studentId, assignmentId) return self.__gradeRepository.getItem(grade)