def testKEditCannotMerge(self): """ One can't merge keywords if they have different values """ t1 = dbutils.addTask("x", "t1", dict(k1=12, k2=None), interactive=False) tui.addInputAnswers("k2", "y") self.cmd.do_k_edit("k1") kwDict = t1.getKeywordDict() self.assertTrue("k1" in kwDict) self.assertTrue("k2" in kwDict) dbutils.getKeywordFromName("k1")
def do_k_remove(self, line): """Remove a keyword k_remove @<keyword>""" keyword = dbutils.getKeywordFromName(line) if keyword.tasks: print "The keyword %s is used by the following tasks: %s" % (keyword.name, ", ".join(str(task.id) for task in keyword.tasks)) if tui.confirm("Do you really want to remove this keyword"): keyword.destroySelf() print "Keyword %s has been removed" % keyword.name
def do_k_edit(self, line): """Edit a keyword k_edit @<keyword>""" session = db.getSession() keyword = dbutils.getKeywordFromName(line) oldName = keyword.name newName = tui.editLine(oldName) if newName == "": print("Cancelled") return lst = session.query(Keyword).filter_by(name=newName).all() if len(lst) == 0: # Simple case: newName does not exist, just rename the existing keyword keyword.name = newName session.merge(keyword) session.commit() print("Keyword %s has been renamed to %s" % (oldName, newName)) return # We already have a keyword with this name, we need to merge print("Keyword %s already exists" % newName) if not tui.confirm("Do you want to merge %s and %s" % (oldName, newName)): return # Check we can merge conflictingTasks = [] for task in keyword.tasks: kwDict = task.getKeywordDict() if oldName in kwDict and newName in kwDict and kwDict[ oldName] != kwDict[newName]: conflictingTasks.append(task) if len(conflictingTasks) > 0: # We cannot merge tui.error("Cannot merge keywords %s and %s because they are both" " used with different values in these tasks:" % (oldName, newName)) for task in conflictingTasks: print("- %d, %s" % (task.id, task.title)) print("Edit these tasks and try again") return # Merge for task in keyword.tasks: kwDict = task.getKeywordDict() if newName not in kwDict: kwDict[newName] = kwDict[oldName] del kwDict[oldName] task.setKeywordDict(kwDict) session.delete(keyword) session.commit() print("Keyword %s has been merged with %s" % (oldName, newName))
def do_k_remove(self, line): """Remove a keyword k_remove @<keyword>""" session = db.getSession() keyword = dbutils.getKeywordFromName(line) if keyword.tasks: print("The keyword %s is used by the following tasks: %s" % (keyword.name, ", ".join(str(task.id) for task in keyword.tasks))) if tui.confirm("Do you really want to remove this keyword"): session.delete(keyword) session.commit() print("Keyword %s has been removed" % keyword.name)
def do_k_edit(self, line): """Edit a keyword k_edit @<keyword>""" session = db.getSession() keyword = dbutils.getKeywordFromName(line) oldName = keyword.name newName = tui.editLine(oldName) if newName == "": print("Cancelled") return lst = session.query(Keyword).filter_by(name=newName).all() if len(lst) == 0: # Simple case: newName does not exist, just rename the existing keyword keyword.name = newName session.merge(keyword) session.commit() print("Keyword %s has been renamed to %s" % (oldName, newName)) return # We already have a keyword with this name, we need to merge print("Keyword %s already exists" % newName) if not tui.confirm("Do you want to merge %s and %s" % (oldName, newName)): return # Check we can merge conflictingTasks = [] for task in keyword.tasks: kwDict = task.getKeywordDict() if oldName in kwDict and newName in kwDict and kwDict[oldName] != kwDict[newName]: conflictingTasks.append(task) if len(conflictingTasks) > 0: # We cannot merge tui.error("Cannot merge keywords %s and %s because they are both" " used with different values in these tasks:" % (oldName, newName)) for task in conflictingTasks: print("- %d, %s" % (task.id, task.title)) print("Edit these tasks and try again") return # Merge for task in keyword.tasks: kwDict = task.getKeywordDict() if newName not in kwDict: kwDict[newName] = kwDict[oldName] del kwDict[oldName] task.setKeywordDict(kwDict) session.delete(keyword) session.commit() print("Keyword %s has been merged with %s" % (oldName, newName))
def do_k_remove(self, line): """Remove a keyword k_remove @<keyword>""" session = db.getSession() keyword = dbutils.getKeywordFromName(line) if keyword.tasks: taskList = ", ".join(str(task.id) for task in keyword.tasks) print("The keyword {} is used by the following tasks: {}".format(keyword.name, taskList)) if not tui.confirm("Do you really want to remove this keyword"): return session.delete(keyword) session.commit() print("Keyword {} has been removed".format(keyword.name))
def do_k_remove(self, line): """Remove a keyword k_remove @<keyword>""" session = db.getSession() keyword = dbutils.getKeywordFromName(line) if keyword.tasks: taskList = ", ".join(str(task.id) for task in keyword.tasks) print("The keyword {} is used by the following tasks: {}".format( keyword.name, taskList)) if not tui.confirm("Do you really want to remove this keyword"): return session.delete(keyword) session.commit() print("Keyword {} has been removed".format(keyword.name))
def testGetKeywordFromName(self): tui.addInputAnswers("y") k1 = dbutils.getOrCreateKeyword("k1", self.session) self.assertRaises(YokadiException, dbutils.getKeywordFromName, "") self.assertRaises(YokadiException, dbutils.getKeywordFromName, "foo") self.assertEqual(k1, dbutils.getKeywordFromName("k1"))