예제 #1
0
 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)
예제 #2
0
    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
예제 #4
0
 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
예제 #5
0
 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
예제 #6
0
 def __gradeLinked(grade: Grade, item):
     if type(item) is Student:
         return grade.getStudentId() == item.getStudentId()
     elif type(item) is Assignment:
         return grade.getAssignmentId() == item.getAssignmentId()
예제 #7
0
 def getGrade(self, studentId: int, assignmentId: int) -> Grade:
     self.findStudent(studentId)
     self.findAssignment(assignmentId)
     grade = Grade(studentId, assignmentId)
     return self.__gradeRepository.getItem(grade)
 def validateGrade(grade: Grade):
     StudentValidator.validateId(grade.getStudentId())
     AssignmentValidator.validateId(grade.getAssignmentId())
     GradeValidator.validateGradeNumber(grade.getGrade())