def receiveMessage(self, msg):
     #depending on the content of the message react differently
     #logInfo('Entering CSVReader.receiveMessage', 5)
     
     reply = None
     #Only considering 
     if msg.getSpeechAct() == INFORM_ACT:
     
         if msg.getVerb() == ELECTRONIX_TUTOR_TASK_UPLOAD_VERB:
             logInfo('{0} is processing a {1},{2} message'.format(CSV_READER_SERVICE_NAME, ELECTRONIX_TUTOR_TASK_UPLOAD_VERB, INFORM_ACT), 4)
             csvString = msg.getResult()
             taskList = self.processCSVFile(csvString)
             print("STORAGE SERVICE NAME: %s"%(STORAGE_SERVICE_NAME))
             reply = Message(STORAGE_SERVICE_NAME, VALUE_VERB, TASKS_OBJECT, taskList)
     
     if msg.getSpeechAct() == REQUEST_ACT:
         if msg.getVerb() == ELECTRONIX_TUTOR_TASK_UPLOAD_VERB:
             dbtaskList = DBTask.find_all()
             dbassistmentItemsList = DBAssistmentsItem.find_all()
             
             for dbTask in dbtaskList:
                 if dbTask.assistmentsItemId is not None and dbTask.assistmentsItemId is not '':
                     for dbassistmentsItem in dbassistmentItemsList:
                         if  dbassistmentsItem.id == dbTask.assistmentsItemId:
                             dbTask.assistmentsItemCache = dbassistmentsItem
                             break
             
             taskList = [x.toSerializable() for x in dbtaskList]
             reply = Message(CSV_READER_SERVICE_NAME, ELECTRONIX_TUTOR_TASK_UPLOAD_VERB, None, taskList, INFORM_ACT, msg.getContext())
     
     if reply is not None:
         logInfo('{0} is broadcasting a {1}, {2} message'.format(CSV_READER_SERVICE_NAME, INFORM_ACT, VALUE_VERB), 4)
         self.sendMessage(reply)
Example #2
0
 def populateTaskAssistmentsDictionary(self):
     result = {}
     tasks = DBTask.find_all()
     assistmentsItems = DBAssistmentsItem.find_all()
     
     for task in tasks:
         if task.assistmentsItemId is not '':
             for assistmentsItem in assistmentsItems:
                 if assistmentsItem.id == task.assistmentsItemId:
                     result[assistmentsItem.id] = task.taskId
                     break
     
     return result
Example #3
0
    def getRecommendedTasks(self, studentId, studentModel,
                            numberOfTasksRequested):
        logInfo("MAKING RECOMMENDATIONS", 1)
        taskMastery = list()

        dbtaskList = DBTask.find_all()
        dbassistmentItemsList = DBAssistmentsItem.find_all()

        for dbTask in dbtaskList:
            if dbTask.assistmentsItemId is not None and dbTask.assistmentsItemId is not '':
                for dbassistmentsItem in dbassistmentItemsList:
                    if dbassistmentsItem.id == dbTask.assistmentsItemId:
                        dbTask.assistmentsItemCache = dbassistmentsItem
                        break

        taskList = [x.toSerializable() for x in dbtaskList]
        logInfo("RETRIEVED TASKS FROM DATABASE", 1)
        #taskList = self.validateTasks(taskList)
        #taskList = self.checkNovelty(studentId, taskList)

        for task in taskList:
            taskMastery.append((self.calcMaxMasteryGain(task,
                                                        studentModel), task))

        sortedTaskMastery = sorted(taskMastery,
                                   key=lambda taskMastery: taskMastery[0],
                                   reverse=True)

        #logInfo("sortedTaskMastery={0}".format(sortedTaskMastery), 6)
        result = sortedTaskMastery
        #print("RESULT: " + str(len(result)))
        student = self.retrieveStudentFromCacheOrDB(studentId, None, True)
        logInfo("retrieved student", 1)
        sessions = student.getSessions(False)
        logInfo("retrieved sessions", 1)
        for gain, task in result:
            if task._assistmentsItem is not None:
                task._assistmentsItem._assignmentNumber = self.findAssignmentNumber(
                    task, sessions)
        # print("TASK: " + str(task))
        #print(str(task._assistmentsItem))

        result = [
            task for gain, task in result if task._assistmentsItem is not None
            and task._assistmentsItem.getActiveAssignmentURL() is not None
        ]
        result = result[0:numberOfTasksRequested]
        #print("RESULT:" + str(result))
        logInfo("GOT RESULT", 1)
        return result
 def getRecommendedTasks(self, studentId, studentModel, numberOfTasksRequested):
     print("MAKING RECOMMENDATIONS")
     taskMastery = list()
     
     dbtaskList = DBTask.find_all()
     dbassistmentItemsList = DBAssistmentsItem.find_all()
     
     for dbTask in dbtaskList:
         if dbTask.assistmentsItemId is not None and dbTask.assistmentsItemId is not '':
             for dbassistmentsItem in dbassistmentItemsList:
                 if  dbassistmentsItem.id == dbTask.assistmentsItemId:
                     dbTask.assistmentsItemCache = dbassistmentsItem
                     break
     
     taskList = [x.toSerializable() for x in dbtaskList]
     print("RETRIEVED TASKS FROM DATABASE")
     #taskList = self.validateTasks(taskList)
     #taskList = self.checkNovelty(studentId, taskList)
            
     for task in taskList:
         taskMastery.append((self.calcMaxMasteryGain(task, studentModel), task))
         
     sortedTaskMastery = sorted(taskMastery, key=lambda taskMastery : taskMastery[0], reverse=True)
     
     #logInfo("sortedTaskMastery={0}".format(sortedTaskMastery), 6)
     result = sortedTaskMastery
     #print("RESULT: " + str(len(result)))
     student = self.retrieveStudentFromCacheOrDB(studentId, None, True)
     logInfo("retrieved student", 1)
     sessions = student.getSessions(False)
     logInfo("retrieved sessions", 1)
     for gain, task in result:
         if task._assistmentsItem is not None:
             task._assistmentsItem._assignmentNumber = self.findAssignmentNumber(task, sessions)
        # print("TASK: " + str(task))
        #print(str(task._assistmentsItem))
     result = [task for gain, task in result if task._assistmentsItem is not None and
                   task._assistmentsItem.getActiveAssignmentURL() is not None]
     result = result[0:numberOfTasksRequested]
     #print("RESULT:" + str(result))
     return result
Example #5
0
    def receiveMessage(self, msg):
        #depending on the content of the message react differently
        #logInfo('Entering CSVReader.receiveMessage', 5)

        reply = None
        #Only considering
        if msg.getSpeechAct() == INFORM_ACT:

            if msg.getVerb() == ELECTRONIX_TUTOR_TASK_UPLOAD_VERB:
                logInfo(
                    '{0} is processing a {1},{2} message'.format(
                        CSV_READER_SERVICE_NAME,
                        ELECTRONIX_TUTOR_TASK_UPLOAD_VERB, INFORM_ACT), 4)
                csvString = msg.getResult()
                taskList = self.processCSVFile(csvString)
                print("STORAGE SERVICE NAME: %s" % (STORAGE_SERVICE_NAME))
                reply = Message(STORAGE_SERVICE_NAME, VALUE_VERB, TASKS_OBJECT,
                                taskList)

        if msg.getSpeechAct() == REQUEST_ACT:
            if msg.getVerb() == ELECTRONIX_TUTOR_TASK_UPLOAD_VERB:
                dbtaskList = DBTask.find_all()
                dbassistmentItemsList = DBAssistmentsItem.find_all()

                for dbTask in dbtaskList:
                    if dbTask.assistmentsItemId is not None and dbTask.assistmentsItemId is not '':
                        for dbassistmentsItem in dbassistmentItemsList:
                            if dbassistmentsItem.id == dbTask.assistmentsItemId:
                                dbTask.assistmentsItemCache = dbassistmentsItem
                                break

                taskList = [x.toSerializable() for x in dbtaskList]
                reply = Message(CSV_READER_SERVICE_NAME,
                                ELECTRONIX_TUTOR_TASK_UPLOAD_VERB, None,
                                taskList, INFORM_ACT, msg.getContext())

        if reply is not None:
            logInfo(
                '{0} is broadcasting a {1}, {2} message'.format(
                    CSV_READER_SERVICE_NAME, INFORM_ACT, VALUE_VERB), 4)
            self.sendMessage(reply)