コード例 #1
0
    def testAssessmentEvent(self):
        #This test will be edited after timeStamp is finished being added to Individual score and tag Score in knowledgeModel
        testKnowledge = KnowledgeModel({}, [])
        beforeTime = AssesmentEvent(0)
        sleep(0.1)
        testKnowledge.updateQuestionTagScore("Tag1", 15)
        sleep(0.1)
        afterTime = AssesmentEvent(0)
        time = testKnowledge.questionTagKnowledgeScore["Tag1"][0].getTime()
        beforeTimeCorrect = 0
        afterTimeCorrect = 0

        if(beforeTime.getTime() < time):
            beforeTimeCorrect = 1

        if (afterTime.getTime() > time):
            afterTimeCorrect = 1

        self.assertEqual(1, beforeTimeCorrect)
        self.assertEqual(1, afterTimeCorrect)
コード例 #2
0
    def testBuckets(self):
        testKnowledge = KnowledgeModel({}, [])
        individuals = ['i1', 'i2', 'i3']
        individualBuckets = {"Known": [], "Unknown": [], "Unclear": [], "Not Asked": individuals}
        for j in range(0, 15, 1):
            for i in individuals:
                testKnowledge.updateIndividualScore({'i1': 1, 'i2':(-1)^j, 'i3':1})
        testKnowledge.updateIndividualBuckets()

        x = 0
        if 'i1' in individualBuckets["Known"]:
            x = 1
        self.assertEqual(1, x)

        if 'i2' in individualBuckets["Unknown"]:
            x = 2
        self.assertEqual(2, x)

        if 'i3' in individualBuckets["Unclear"]:
            x = 3
        self.assertEqual(3, x)
コード例 #3
0
ファイル: MainWindow.py プロジェクト: j-kallwies/IKnow
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.setWindowTitle("IKnow")

        # DB-Connection
        self.dbConnection = DatabaseConnection()
        if self.dbConnection.connect():
            logging.info("Connected to the Database")
        else:
            logging.error("Failed to connect to the database")

        # Create Models
        self.tagModel = TagModel(self.dbConnection.db)
        self.knowledgeModel = KnowledgeModel(self.dbConnection.db)

        # Setup views
        self.ui.knowledgeTableView.setModel(self.knowledgeModel)
        self.ui.knowledgeTableView.hideColumn(0)
        self.ui.knowledgeTableView.setColumnWidth(1, 600)
        self.ui.knowledgeTableView.setColumnWidth(2, 700)

        self.ui.tagTreeWidget.setColumnWidth(0, 300)
        self.ui.tagTreeWidget.setColumnWidth(1, 30)

        # Load tags
        self.updateTagWidget()

        self.currentTag = None
        self.filterKnowledgeText = ""

        # Create menus
        act = QtGui.QAction("Remove selected Tag", self, statusTip="Remove the selected Tag. The child Tags are not touched.", triggered=self.removeSelectedTag)
        self.ui.tagTreeWidget.addAction(act)
        self.ui.tagTreeWidget.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)

        # Connect signals and slots
        self.ui.tagTreeWidget.currentItemChanged.connect(self.tagChanged)
        self.ui.newTagButton.clicked.connect(self.showNewTagButtonDialog)
        self.ui.updateTagsButton.clicked.connect(self.updateTagWidget)
        self.ui.newKnowledgeButton.clicked.connect(self.showNewKnowledgeDialog)

        self.ui.filterTagsEdit.textChanged.connect(self.updateTagWidget)
        self.ui.filterKnowledgeEdit.textChanged.connect(self.filterKnowledgeByText)

        self.ui.knowledgeTableView.doubleClicked.connect(self.showEditKnowledgeDialog)
コード例 #4
0
 def testIndividualScore(self):
     #Does not use timeStamp, but instead averages all scores
     testKnowledge = KnowledgeModel({}, [])
     testKnowledge.updateIndividualScore("i1", 5.6)
     testKnowledge.updateIndividualScore("i2", 7)
     testKnowledge.updateIndividualScore("i3", -4)
     testKnowledge.updateIndividualScore("i4", 50)
     testKnowledge.updateIndividualScore("i5", 0)
     self.assertAlmostEqual(5.6, testKnowledge.calcIndividualScore("i1"))
     self.assertEqual(-4, testKnowledge.calcIndividualScore("i3"))
     testKnowledge.updateIndividualScore("i3", -5)
     testKnowledge.updateIndividualScore("i1", -4.5)
     testKnowledge.updateIndividualScore("i2", 0)
     self.assertAlmostEqual(-4.5, testKnowledge.calcIndividualScore("i3"))
     self.assertAlmostEqual(0.55, testKnowledge.calcIndividualScore("i1")) ##uses almost equal for rounding
     self.assertAlmostEqual(3.5, testKnowledge.calcIndividualScore("i2"))
コード例 #5
0
 def testTagScore(self):
     testKnowledge = KnowledgeModel({}, [])
     testKnowledge.updateQuestionTagScore("tag1", 0.5)
     self.assertEqual(0.5, testKnowledge.calcQuestionTagScore("tag1"))
     testKnowledge.updateQuestionTagScore("tag1", 0.75)
     self.assertEqual(0.625, testKnowledge.calcQuestionTagScore("tag1"))
コード例 #6
0
ファイル: MainWindow.py プロジェクト: j-kallwies/IKnow
class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.setWindowTitle("IKnow")

        # DB-Connection
        self.dbConnection = DatabaseConnection()
        if self.dbConnection.connect():
            logging.info("Connected to the Database")
        else:
            logging.error("Failed to connect to the database")

        # Create Models
        self.tagModel = TagModel(self.dbConnection.db)
        self.knowledgeModel = KnowledgeModel(self.dbConnection.db)

        # Setup views
        self.ui.knowledgeTableView.setModel(self.knowledgeModel)
        self.ui.knowledgeTableView.hideColumn(0)
        self.ui.knowledgeTableView.setColumnWidth(1, 600)
        self.ui.knowledgeTableView.setColumnWidth(2, 700)

        self.ui.tagTreeWidget.setColumnWidth(0, 300)
        self.ui.tagTreeWidget.setColumnWidth(1, 30)

        # Load tags
        self.updateTagWidget()

        self.currentTag = None
        self.filterKnowledgeText = ""

        # Create menus
        act = QtGui.QAction("Remove selected Tag", self, statusTip="Remove the selected Tag. The child Tags are not touched.", triggered=self.removeSelectedTag)
        self.ui.tagTreeWidget.addAction(act)
        self.ui.tagTreeWidget.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)

        # Connect signals and slots
        self.ui.tagTreeWidget.currentItemChanged.connect(self.tagChanged)
        self.ui.newTagButton.clicked.connect(self.showNewTagButtonDialog)
        self.ui.updateTagsButton.clicked.connect(self.updateTagWidget)
        self.ui.newKnowledgeButton.clicked.connect(self.showNewKnowledgeDialog)

        self.ui.filterTagsEdit.textChanged.connect(self.updateTagWidget)
        self.ui.filterKnowledgeEdit.textChanged.connect(self.filterKnowledgeByText)

        self.ui.knowledgeTableView.doubleClicked.connect(self.showEditKnowledgeDialog)

    def removeSelectedTag(self):
        selectedItem = self.ui.tagTreeWidget.selectedItems()[0]
        IDtoRemove = int(selectedItem.text(1))
        logging.debug("Remove selected Tag (ID=%d)." % IDtoRemove)
        self.tagModel.removeTag(IDtoRemove)
        self.updateTagWidget()

    def updateTagWidget(self):
        self.tagModel.updateTree()

        logging.debug("filter-Edit=%s" % self.ui.filterTagsEdit.text())
        filter = self.ui.filterTagsEdit.text()
        if filter == "":
            filterIDs = None
        else:
            foundIDs = self.tagModel.getIDsFilteredByName(filter)
            logging.debug("foundIDs=" + str(foundIDs))
            filterIDs = []
            filterIDs.extend(foundIDs)
            for ID in foundIDs:
                logging.debug("foundIDs=%s" % str(foundIDs))
                filterIDs.extend(self.tagModel.getParentIDsDownToRoot(ID))
                filterIDs.extend(self.tagModel.getAllChildIDs(ID))
            filterIDs = set(filterIDs)
            logging.debug("filterIDs=" + str(filterIDs))

        # Clear tree
        self.ui.tagTreeWidget.clear()

        # No filter applied => Show all tags
        if filter == "":
            self.tagModel.fillTreeWidgetWithTags(self.ui.tagTreeWidget)

        # Found tags with applied filter
        if filter != "" and len(foundIDs) > 0:
            self.tagModel.fillTreeWidgetWithTags(self.ui.tagTreeWidget, filterIDs=filterIDs)
            self.ui.tagTreeWidget.expandAll()

    def showNewTagButtonDialog(self):
        logging.debug("Show NewTagDialog")
        newTagDlg = NewTagDialog(self, self.tagModel, self.tagModel.tagParentsModel, parentID=self.currentTag)
        newTagDlg.exec_()
        self.updateTagWidget()

    def showNewKnowledgeDialog(self):
        logging.debug("Show NewKnowledgeDialog")
        newKnowledgeDlg = NewKnowledgeDialog(self, self.tagModel, self.tagModel.tagParentsModel, self.knowledgeModel, parentID=self.currentTag)
        newKnowledgeDlg.exec_()
        self.reloadKnowledge()

    def showEditKnowledgeDialog(self, modelIndex):
        logging.debug("Show EditKnowledgeDialog")
        logging.debug("Row=%d" % modelIndex.row())
        newKnowledgeDlg = NewKnowledgeDialog(self, self.tagModel, self.tagModel.tagParentsModel, self.knowledgeModel, editRow=modelIndex.row())
        newKnowledgeDlg.exec_()
        self.knowledgeModel.setFilterByTagID(self.currentTag)

    def tagChanged(self, current, previous):
        self.currentTag = int(current.text(1))
        logging.debug("currentTag = %d", self.currentTag)
        self.reloadKnowledge()

    def filterKnowledgeByText(self, filterText):
        self.filterKnowledgeText = filterText
        logging.debug("filterKnowledgeByText: self.filterKnowledgeText=%s" % self.filterKnowledgeText)
        self.reloadKnowledge()

    def reloadKnowledge(self):
        self.knowledgeModel.reload(self.currentTag, self.filterKnowledgeText)