Exemple #1
0
 def giveAssignmenttoStudent(self):
     ids = self.readStudentID()
     if not self._studentController.checkID(ids):
         raise myException("There is no student having this id! \n")
     ida = self.readAssignmentID()
     if not self._assignmentController.checkID(ida):
         raise myException("There is no assignment having this id! \n")
     self._gradeController.giveAssigmenttoStudent(ids, ida)
Exemple #2
0
 def giveAssignmenttoGroup(self):
     group = self.readStudentGroup()
     if not self._studentController.checkGroup(group):
         raise myException("This group does not exist! \n")
     ida = self.readAssignmentID()
     if not self._assignmentController.checkID(ida):
         raise myException("There is no assignment having this id! \n")
     self._gradeController.giveAssigmenttoGroup(group, ida)
Exemple #3
0
 def s3(self):
     #l = list(filter(lambda x: self.getAverage(x.getID()) != -1 , self._studentList.getAll()))
     l = my_filter(self._studentList.getAll(), self.f3)
     if len(l) == 0:
         raise myException("No student was graded! \n")
     my_sort(l, self.cmp3)
     return l        
Exemple #4
0
 def s1(self,ida):
     #l = list(filter(lambda x: x.getAssignmentID() == ida and x.getGrade() != -1 , self._gradeList.getAll()))
     l = my_filter(self._gradeList.getAll(), self.f1, ida)
     if(len(l)) == 0:
         raise myException("There is no student graded at this assignment! \n")
     my_sort(l, self.cmp1)
     return l
Exemple #5
0
 def s4(self):
     #l = list(filter(lambda x: self.getAverage(x.getID()) != -1 , self._assignmentList.getAll()))
     l = my_filter(self._assignmentList.getAll(), self.f4)
     if len(l) == 0:
         raise myException("There are no graded assignments! \n")
     my_sort(l, self.cmp4)
     return l
Exemple #6
0
 def updateStudent(self):
     id = self.readStudentID()
     if not self._studentController.checkID(id):
         raise myException("There is no student havin this id! \n")
     print("Enter the new data: \n")
     idn = self.readStudentID()
     name = self.readStudentName()
     group = self.readStudentGroup()
     self._studentController.updateStudent(id, idn, name, group)
Exemple #7
0
 def updateAssignment(self):
     id = self.readAssignmentID()
     if not self._assignmentController.checkID(id):
         raise myException("There is no assignment having this id! \n")
     print("Enter the new data: \n")
     idn = self.readAssignmentID()
     desc = self.readAssignmentDescription()
     deadline = self.readAssignmentDeadline()
     self._assignmentController.updateAssignment(id, idn, desc, deadline)
Exemple #8
0
 def addAssignment(self,id,desc,deadline):
     va = Validator(id,desc,deadline)
     va.assignmentValidator()
     if self.checkID(id):
         raise myException("This id is used by another assignment! \n")
     undo = FunctionCall(self.removeAssignment,id)
     redo = FunctionCall(self.addAssignment,id, desc, deadline)
     oper = Operation(undo,redo)
     self._undoController.addOperation(oper)
     self._assignmentList.addObject(Assignment(id,desc,deadline))
Exemple #9
0
 def addStudent(self,id,name,group):
     vs = Validator(id,name,group)
     vs.studentValidator()
     if self.checkID(id):
         raise myException("This id is used by another student! \n")
     undo = FunctionCall(self.removeStudent,id)
     redo = FunctionCall(self.addStudent,id, name, group)
     oper = Operation(undo,redo)
     self._undoController.addOperation(oper)
     self._studentList.addObject(Student(id,name,group))
Exemple #10
0
 def s1(self):
     ida = self.readAssignmentID()
     if not self._assignmentController.checkID(ida):
         raise myException("There is no assignment having this id! \n")
     newList = self._gradeController.s1(ida)
     for p in newList:
         i = self._studentController.getIndex(p.getStudentID())
         print(
             str(p.getGrade()) + "  " +
             str(self._studentController.getList().getObject(i)))
Exemple #11
0
 def s2(self):
     cd = self.readCurrentDeadline()
     if type(cd) != int or cd < 1:
         raise myException(
             "The current date must be an integer greater than 1!")
     newList = self._assignmentController.s2(cd)
     for p in newList:
         i = self._studentController.getIndex(p.getStudentID())
         print(
             str(p.getAssignmentID()) + "  " +
             str(self._studentController.getList().getObject(i)))
Exemple #12
0
    def redo(self):
        #print (self._index)
        #if self._index>= len(self._operations) or self._index == -1:
        #return False
        if self._index == len(self._operations) - 1:
            raise myException("No more redos!")

        #if you only have one operations and the lenght is 1 than the lenght is
        self._index += 1
        self._duringUndo = True
        self._operations[self._index].redo()
        self._duringUndo = False
Exemple #13
0
 def giveGrade(self,ids,ida,grade):
     vg = Validator(grade)
     vg.gradeValidator()
     for i in range(len(self._gradeList)):
         if self._gradeList.getObject(i).getStudentID() == ids and self._gradeList.getObject(i).getAssignmentID() == ida:
             if self._gradeList.getObject(i).getGrade() == -1:
                 undo = FunctionCall(self.giveGradeUndo, ids, ida)
                 redo = FunctionCall(self.giveGrade,ids, ida, grade)
                 oper = Operation(undo,redo)
                 self._undoController.addOperation(oper)
                 self._gradeList.getObject(i).setGrade(grade)
             else:
                 raise myException("This student has already been graded for this assignment! \n")
 def assignmentValidator(self):
     s = ""
     if type(self._c1) != int or self._c1 < 1:
         s += "The assignment's id must be a positive integer! \n"
     k = True
     for letter in self._c2:
         if not letter.isalpha() and not letter.isspace():
             k = False
     if not k:
         s += "The assignment's description must contain only letters! \n"
     if type(self._c3) != int or self._c3 < 1:
         s += "The assignment's deadline must be a positive integer corresponding to a week! \n"
     if len(s) != 0:
         raise myException(s)
     return None
Exemple #15
0
 def removeAssignment(self,id):
     if not self.checkID(id):
         raise myException("There is no assignment having this id! \n")
     index = self.getIndex(id)
     undo = FunctionCall(self.addAssignment,id,self._assignmentList.getObject(index).getDescription(),self._assignmentList.getObject(index).getDeadline())
     redo = FunctionCall(self.removeAssignment,id)
     oper = Operation(undo,redo)
     self._undoController.addOperation(oper)
     self._assignmentList.removeObject(index)
     i = 0 
     while i < len(self._gradeList):
         if self._gradeList.getObject(i).getAssignmentID() == id:
             self._gradeList.removeObject(i)
             i -= 1
         i += 1
 def studentValidator(self):
     s = ""
     if type(self._c1) != int or self._c1 < 1:
         s += "The student's id must be a positive integer! \n"
     k = True
     for letter in self._c2:
         if not letter.isalpha() and not letter.isspace():
             k = False
     if not k:
         s += "The student's name must contain only letters! \n"
     if type(self._c3) != int or self._c3 < 1:
         s += "The student's group must be a positive integer! \n"
     if len(s) != 0:
         raise myException(s)
     return None
Exemple #17
0
 def updateStudent(self,oldID,id,name,group):
     vs = Validator(id,name,group)
     vs.studentValidator()
     if self.checkID(id) and id != oldID:
         raise myException("There already is a student having this id! \n")
     index = self.getIndex(oldID)
     undo = FunctionCall(self.updateStudent,id ,oldID, self._studentList.getObject(index).getName(),self._studentList.getObject(index).getGroup())
     redo = FunctionCall(self.updateStudent,oldID, id, name, group)
     oper = Operation(undo,redo)
     self._undoController.addOperation(oper)
     self._studentList.getObject(index).setID(id)
     self._studentList.getObject(index).setName(name)
     self._studentList.getObject(index).setGroup(group)
     for i in range(len(self._gradeList)):
         if self._gradeList.getObject(i).getStudentID() == oldID:
             self._gradeList.getObject(i).setStudentID(id)
Exemple #18
0
 def updateAssignment(self,oldID,id,desc,deadline):
     va = Validator(id, desc, deadline)
     va.assignmentValidator()
     if self.checkID(id) and id != oldID:
         raise myException("There already is an assignment having this id! \n")
     index = self.getIndex(oldID)
     undo = FunctionCall(self.updateAssignment , id,oldID, self._assignmentList.getObject(index).getDescription(), self._assignmentList.getObject(index).getDeadline())
     redo = FunctionCall(self.updateAssignment,oldID, id, desc, deadline)
     oper = Operation(undo,redo)
     self._undoController.addOperation(oper)
     self._assignmentList.getObject(index).setID(id)
     self._assignmentList.getObject(index).setDescription(desc)
     self._assignmentList.getObject(index).setDeadline(deadline)
     for i in range(len(self._gradeList)):
         if self._gradeList.getObject(i).getAssignmentID() == oldID:
             self._gradeList.getObject(i).setAssignmentID(id) 
Exemple #19
0
    def undo(self):
        '''
        first it checks the index
        when we want to undo, we take the operation at index 0 then we decrease the index
    
        '''
        self._duringUndo = True
        #print(self._duringUndo)
        #print(self._index)
        if self._index == -1:
            raise myException("No more undos!")
            #return False #no more undos

        self._operations[self._index].undo()
        self._duringUndo = False
        #print(self._duringUndo)
        self._index = self._index - 1
        #print(self._index)

        return True
Exemple #20
0
 def s2(self,cd):
     #l = list(filter(lambda x: x.getDeadline()< cd, self._assignmentList.getAll()))
     l = my_filter(self._assignmentList.getAll(), self.f21, cd)
     #l1 = list(filter(lambda x: x.getGrade() == -1,self._gradeList.getAll()))
     l1 = my_filter(self._gradeList.getAll(), self.f22)
     if len(l) == 0 or len(l1) == 0:
         raise myException("There are no late students in handing their assignments! \n")
     i = 0
     while i<len(l1):
         k = False
         j = 0
         while j < len(l):
             if l1[i].getAssignmentID() == l[j].getID():
                 k = True
             j += 1
         if not k:
             l1.pop(i)
             i -= 1
         i += 1
     return l1
 def gradeValidator(self):
     if type(self._c1) != float or self._c1 < 1 or self._c1 > 10:
         raise myException(
             "The grade must be a positive value between 1 and 10! \n")
Exemple #22
0
 def removeStudent(self):
     id = self.readStudentID()
     if not self._studentController.checkID(id):
         raise myException("There is no student having this id! \n")
     self._studentController.removeStudent(id)