def testProjectCompleter(self): self.session.add_all([Project(name="foo"), Project(name="foo2"), Project(name="bar")]) expected = ["foo ", "foo2 "] completer = completers.ProjectCompleter(1) result = completer("f", "t_add f", 6, 8) self.assertEqual(result, expected)
def testProjectCompleter(self): Project(name=u"foo") Project(name=u"foo2") Project(name=u"bar") expected = [u"foo ", u"foo2 "] completer = completers.ProjectCompleter(1) result = completer("f", "t_add f", 6, 8) self.assertEqual(result, expected)
def testTlistUrgency0(self): # Given a project with two tasks, one with a negative urgency prj = Project(name="prj") self.session.add(prj) t1 = Task(project=prj, title="t1") self.session.add(t1) t2 = Task(project=prj, title="t2", urgency=-1) self.session.add(t2) self.session.flush() # When I list tasks with -u 0 renderer = testutils.TestRenderer() self.cmd.do_t_list("-u 0", renderer=renderer) # Then the task with a negative urgency is not listed self.assertEqual(renderer.tasks, [t1])
def testRenderListSectionOrder(self): projectNames = "ccc", "aaa", "UPPER_CASE", "zzz", "mmm" projectList = [] for name in projectNames: prj = Project(name=name) task = Task(project=prj, title="Hello") self.session.add(prj) self.session.add(task) projectList.append(prj) self.session.flush() renderer = testutils.TestRenderer() self.cmd._renderList(renderer, projectList, filters=[], order=[]) self.assertEqual(list(renderer.taskDict.keys()), sorted(projectNames, key=lambda x: x.lower()))
def do_p_add(self, line): """Add new project. p_add <projectName>""" if not line: print("Missing project name.") return projectName = parseutils.parseOneWordName(line) session = db.getSession() try: project = Project(name=projectName) session.add(project) session.commit() except IntegrityError: session.rollback() raise YokadiException("A project named %s already exists. Please find another name" % projectName) print("Added project '%s'" % projectName)
def testRenderListSectionOrderKeywords(self): prj = Project(name="prj") keywordNames = ["kw_" + x for x in ("ccc", "aaa", "UPPER_CASE", "zzz", "mmm")] keywordList = [] for name in keywordNames: keyword = Keyword(name=name) task = Task(project=prj, title="Hello") TaskKeyword(task=task, keyword=keyword) self.session.add(task) keywordList.append(prj) self.session.flush() renderer = testutils.TestRenderer() self.cmd._renderList(renderer, [prj], filters=[], order=[], groupKeyword="kw_%") self.assertEqual(list(renderer.taskDict.keys()), sorted(keywordNames, key=lambda x: x.lower()))
def do_p_add(self, line): """Add new project. Will prompt to create keywords if they do not exist. p_add <projectName> [@<keyword1>] [@<keyword2>]""" if not line: print "Give at least a project name !" return projectName, garbage, keywordDict = parseutils.parseLine(line) if garbage: raise BadUsageException("Cannot parse line, got garbage (%s)" % garbage) try: project = Project(name=projectName) except DuplicateEntryError: raise YokadiException( "A project named %s already exists. Please find another name" % projectName) print "Added project '%s'" % projectName if not dbutils.createMissingKeywords(keywordDict.keys()): return None project.setKeywordDict(keywordDict)
def getOrCreateProject(projectName, interactive=True, createIfNeeded=True): """Get a project by its name. Create it if needed @param projectName: project name as a string @param interactive: Ask user before creating project (this is the default) @type interactive: Bool @param createIfNeeded: create project if it does not exist (this is the default) @type createIfNeeded: Bool @return: Project instance or None if user cancel creation or createIfNeeded is False""" result = Project.selectBy(name=projectName) result = list(result) if len(result): return result[0] if not createIfNeeded: return None if interactive and not tui.confirm("Project '%s' does not exist, create it" % projectName): return None project = Project(name=projectName) print "Added project '%s'" % projectName return project
def getOrCreateProject(projectName, interactive=True, createIfNeeded=True): """Get a project by its name. Create it if needed @param projectName: project name as a string @param interactive: Ask user before creating project (this is the default) @type interactive: Bool @param createIfNeeded: create project if it does not exist (this is the default) @type createIfNeeded: Bool @return: Project instance or None if user cancel creation or createIfNeeded is False""" session = db.getSession() result = session.query(Project).filter_by(name=projectName).all() if len(result): return result[0] if not createIfNeeded: return None if interactive and not tui.confirm( "Project '%s' does not exist, create it" % projectName): return None project = Project(name=projectName) session.add(project) print("Added project '%s'" % projectName) return project
def testMergeItselfFails(self): project = Project(name="p1") self.assertRaises(YokadiException, project.merge, self.session, project)