本文整理汇总了Python中yokadi.core.dbutils.addTask函数的典型用法代码示例。如果您正苦于以下问题:Python addTask函数的具体用法?Python addTask怎么用?Python addTask使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了addTask函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: testTitleFormater
def testTitleFormater(self):
dbutils.getOrCreateProject("x", interactive=False)
dbutils.getOrCreateKeyword("key1", interactive=False)
dbutils.getOrCreateKeyword("key2", interactive=False)
task = dbutils.addTask("x", "t1", {})
taskWithKeywords = dbutils.addTask("x", "t2", {"key1": None, "key2": 12})
longTask = dbutils.addTask("x", "01234567890123456789", {})
longTask.description = "And it has a description"
TEST_DATA = (
(task, 20, "t1"),
(taskWithKeywords, 20, "t2 (key1, key2)"),
(taskWithKeywords, 4, "t2 >"),
(longTask, 10, longTask.title[:8] + ">*"),
(longTask, len(longTask.title), longTask.title[:-2] + ">*"),
(longTask, len(longTask.title) + 1, longTask.title + "*"),
(longTask, 40, longTask.title.ljust(39) + "*"),
)
for task, width, expected in TEST_DATA:
with self.subTest(task=task, width=width):
formater = TitleFormater(width)
out = formater(task)[0]
out = stripColor(out)
expected = expected.ljust(width)
self.assertEqual(out, expected)
示例2: testKList
def testKList(self):
t1 = dbutils.addTask("x", "t1", dict(k1=12, k2=None), interactive=False)
t2 = dbutils.addTask("x", "t2", dict(k1=None, k3=None), interactive=False)
lst = list(_listKeywords(self.session))
lst = [(name, list(ids)) for name, ids in lst]
self.assertEqual(lst, [("k1", [t1.id, t2.id]),
("k2", [t1.id]),
("k3", [t2.id]),
])
示例3: testTitleFormater
def testTitleFormater(self):
dbutils.getOrCreateProject("x", interactive=False)
dbutils.getOrCreateKeyword("k1", interactive=False)
dbutils.getOrCreateKeyword("k2", interactive=False)
t1 = dbutils.addTask("x", "t1", {})
t2 = dbutils.addTask("x", "t2", {"k1": None, "k2": 12})
longerTask = dbutils.addTask("x", "A longer task name", {})
longerTask.description = "And it has a description"
out = StringIO()
renderer = TextListRenderer(out, termWidth=80, cryptoMgr=YokadiCryptoManager())
renderer.addTaskList("Foo", [t1])
self.assertEqual(renderer.maxTitleWidth, 5)
renderer.end()
expected = str(\
"%(CYAN)s Foo %(RESET)s\n" \
+ "%(BOLD)sID|Title|U |S|Age |Due date%(RESET)s\n" \
+ "--------------------------------\n" \
+ "1 |t1 %(RESET)s|0 |N|0m | \n" \
) % dict(CYAN=C.CYAN, RESET=C.RESET, BOLD=C.BOLD)
testutils.multiLinesAssertEqual(self, out.getvalue(), expected)
out = StringIO()
renderer = TextListRenderer(out, termWidth=80, cryptoMgr=YokadiCryptoManager())
renderer.addTaskList("Foo", [t1, t2])
self.assertEqual(renderer.maxTitleWidth, 11)
renderer.end()
expected = str(\
"%(CYAN)s Foo %(RESET)s\n" \
+ "%(BOLD)sID|Title |U |S|Age |Due date%(RESET)s\n" \
+ "--------------------------------------\n" \
+ "1 |t1 %(RESET)s|0 |N|0m | \n" \
+ "2 |t2 (%(BOLD)sk1, k2)%(RESET)s|0 |N|0m | \n" \
) % dict(CYAN=C.CYAN, RESET=C.RESET, BOLD=C.BOLD)
testutils.multiLinesAssertEqual(self, out.getvalue(), expected)
out = StringIO()
renderer = TextListRenderer(out, termWidth=80, cryptoMgr=YokadiCryptoManager())
renderer.addTaskList("Foo", [t2, longerTask])
self.assertEqual(renderer.maxTitleWidth, len(longerTask.title) + 1)
renderer.end()
expected = str(\
"%(CYAN)s Foo %(RESET)s\n" \
+ "%(BOLD)sID|Title |U |S|Age |Due date%(RESET)s\n" \
+ "----------------------------------------------\n" \
+ "2 |t2 (%(BOLD)sk1, k2) %(RESET)s|0 |N|0m | \n" \
+ "3 |A longer task name%(RESET)s*|0 |N|0m | \n" \
) % dict(CYAN=C.CYAN, RESET=C.RESET, BOLD=C.BOLD)
testutils.multiLinesAssertEqual(self, out.getvalue(), expected)
示例4: testKEditMerge
def testKEditMerge(self):
t1 = dbutils.addTask("x", "t1", dict(k1=None, k2=None), interactive=False)
t2 = dbutils.addTask("x", "t2", dict(k1=None), interactive=False)
tui.addInputAnswers("k2", "y")
self.cmd.do_k_edit("k1")
kwDict = t1.getKeywordDict()
self.assertTrue("k1" not in kwDict)
self.assertTrue("k2" in kwDict)
kwDict = t2.getKeywordDict()
self.assertTrue("k1" not in kwDict)
self.assertTrue("k2" in kwDict)
self.assertRaises(YokadiException, dbutils.getKeywordFromName, "k1")
示例5: testTitleMapping
def testTitleMapping(self):
tui.addInputAnswers("y")
t1 = dbutils.addTask("x", "t1", {})
v1 = yical.createVTodoFromTask(t1)
# Check id is here
self.assertEqual(v1.get("summary")[-4:], " (%s)" % t1.id)
# Title and id should not change with update
origin_id = t1.id
origin_title = t1.title
yical.updateTaskFromVTodo(t1, v1)
self.assertEqual(t1.id, origin_id)
self.assertEqual(t1.title, origin_title)
# Update vtodo summary and remove (id) or space before (id) info.
# Only task title should be changed
for new_summary in ("hello", "hello(%s)" % origin_id, "hello (%s)" % origin_id,
"(%s)hello" % origin_id, " (%s)hello" % origin_id):
v1["summary"] = new_summary
yical.updateTaskFromVTodo(t1, v1)
self.assertEqual(t1.id, origin_id)
self.assertEqual(t1.title, "hello")
# Update votod with fake id info.
# Should be present in task title
for new_summary in ("hello", "hello()", "hello(123456)", "hello (123456)"):
v1["summary"] = new_summary
yical.updateTaskFromVTodo(t1, v1)
self.assertEqual(t1.id, origin_id)
self.assertEqual(t1.title, new_summary)
示例6: _t_add
def _t_add(self, cmd, line):
"""Code shared by t_add, bug_add and n_add."""
parser = self._parser_t_add(cmd)
args = parser.parse_args(line)
line = " ".join(args.cmd)
if not line:
raise BadUsageException("Missing parameters")
projectName, title, keywordDict = parseutils.parseLine(line)
projectName = self._realProjectName(projectName)
if not title:
raise BadUsageException("Missing title")
if args.crypt:
# Obfuscate line in history
length = readline.get_current_history_length()
if length > 0: # Ensure history is positive to avoid crash with bad readline setup
readline.replace_history_item(length - 1, "%s %s " % (cmd,
line.replace(title, "<...encrypted...>")))
# Encrypt title
title = self.cryptoMgr.encrypt(title)
task = dbutils.addTask(projectName, title, keywordDict)
if not task:
tui.reinjectInRawInput("%s %s" % (cmd, line))
return None
self.lastTaskId = task.id
if args.describe:
self.do_t_describe(self.lastTaskId)
return task
示例7: _processVTodo
def _processVTodo(self, vTodo):
if vTodo["UID"] in self.newTask:
# This is a recent new task but remote ical calendar tool is not
# aware of new Yokadi UID. Update it here to avoid duplicate new tasks
print "update UID to avoid duplicate task"
vTodo["UID"] = TASK_UID % self.newTask[vTodo["UID"]]
if vTodo["UID"].startswith(UID_PREFIX):
# This is a yokadi Task.
if vTodo["LAST-MODIFIED"].dt > vTodo["CREATED"].dt:
# Task has been modified
print "Modified task: %s" % vTodo["UID"]
result = TASK_RE.match(vTodo["UID"])
if result:
id = result.group(1)
task = dbutils.getTaskFromId(id)
print "Task found in yokadi db: %s" % task.title
updateTaskFromVTodo(task, vTodo)
else:
raise YokadiException("Task %s does exist in yokadi db " % id)
else:
# This is a new task
print "New task %s (%s)" % (vTodo["summary"], vTodo["UID"])
keywordDict = {}
task = dbutils.addTask(INBOX_PROJECT, vTodo["summary"], keywordDict, interactive=False)
# Keep record of new task origin UID to avoid duplicate
# if user update it right after creation without reloading the
# yokadi UID
# TODO: add purge for old UID
self.newTask[vTodo["UID"]] = task.id
示例8: testKEditNoMerge
def testKEditNoMerge(self):
t1 = dbutils.addTask("x", "t1", dict(k1=12, k2=None), interactive=False)
tui.addInputAnswers("newk1")
self.cmd.do_k_edit("k1")
kwDict = t1.getKeywordDict()
self.assertTrue("k1" not in kwDict)
self.assertEqual(kwDict.get("newk1"), 12)
self.assertRaises(YokadiException, dbutils.getKeywordFromName, "k1")
示例9: testTfilter
def testTfilter(self):
t1 = dbutils.addTask("x", "t1", interactive=False)
t2 = dbutils.addTask("x", "t2", keywordDict={"kw1": None, "kw2": 12}, interactive=False)
t3 = dbutils.addTask("y", "t3", interactive=False)
testData = [
("@kw1", {"x": [t2]}),
("x", {"x": [t1, t2]}),
("x @kw1", {"x": [t2]}),
("none", {"x": [t1, t2], "y": [t3]}),
]
for filter, expectedTaskDict in testData:
self.cmd.do_t_filter(filter)
renderer = testutils.TestRenderer()
self.cmd.do_t_list("", renderer=renderer)
self.assertEqual(renderer.taskDict, expectedTaskDict)
self.assertRaises(YokadiException, self.cmd.do_t_filter, "")
示例10: testKEditCannotMerge
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")
示例11: testGetTaskFromId
def testGetTaskFromId(self):
tui.addInputAnswers("y")
t1 = dbutils.addTask("x", "t1", {})
task = dbutils.getTaskFromId(str(t1.id))
self.assertEqual(task, t1)
task = dbutils.getTaskFromId(t1.id)
self.assertEqual(task, t1)
task = dbutils.getTaskFromId(t1.uuid)
self.assertEqual(task, t1)
示例12: testRemove
def testRemove(self):
# Create project p1 with one associated task
tui.addInputAnswers("y")
self.cmd.do_p_add("p1")
self.session.query(Project).one()
task = dbutils.addTask("p1", "t1", interactive=False)
taskId = task.id
# Remove project, its task should be removed
tui.addInputAnswers("y")
self.cmd.do_p_remove("p1")
self.assertEqual(list(self.session.query(Task).filter_by(id=taskId)), [])
示例13: testMerge
def testMerge(self):
COUNT = 4
for x in range(COUNT):
dbutils.addTask('p1', 'p1-t{}'.format(x), interactive=False)
dbutils.addTask('p2', 'p2-t{}'.format(x), interactive=False)
# Merge p1 into p2
tui.addInputAnswers("y")
self.cmd.do_p_merge("p1 p2")
# p2 should have both its tasks and all p1 tasks now
project = self.session.query(Project).filter_by(name="p2").one()
tasks = set([x.title for x in project.tasks])
expected = set()
for x in range(COUNT):
expected.add('p1-t{}'.format(x))
expected.add('p2-t{}'.format(x))
self.assertEqual(tasks, expected)
# p1 should be gone
testutils.assertQueryEmpty(self, self.session.query(Project).filter_by(name="p1"))
示例14: testFullRendering
def testFullRendering(self):
dbutils.getOrCreateProject("x", interactive=False)
dbutils.getOrCreateKeyword("k1", interactive=False)
dbutils.getOrCreateKeyword("k2", interactive=False)
dbutils.addTask("x", "t1", {})
t2 = dbutils.addTask("x", "t2", {"k1": None, "k2": 12})
longTask = dbutils.addTask("x", "A longer task name", {})
longTask.description = "And it has a description"
out = StringIO()
renderer = TextListRenderer(out, termWidth=80)
renderer.addTaskList("Foo", [t2, longTask])
self.assertEqual(renderer.maxTitleWidth, len(longTask.title) + 1)
renderer.end()
out = stripColor(out.getvalue())
expected = \
" Foo \n" \
"ID│Title │U │S│Age │Due date\n" \
"──┼───────────────────┼───┼─┼────────┼────────\n" \
"2 │t2 (k1, k2) │0 │N│0m │ \n" \
"3 │A longer task name*│0 │N│0m │ \n"
self.assertMultiLineEqual(out, expected)
示例15: testTaskLockManagerStaleLock
def testTaskLockManagerStaleLock(self):
tui.addInputAnswers("y")
t1 = dbutils.addTask("x", "t1", {})
taskLockManager = dbutils.TaskLockManager(t1)
# Lock the task
taskLockManager.acquire(pid=1, now=datetime(2014, 1, 1))
lock1 = taskLockManager._getLock()
self.assertEqual(lock1.pid, 1)
# Try to lock again, the stale lock should get reused
taskLockManager.acquire(pid=2, now=datetime(2015, 1, 1))
lock2 = taskLockManager._getLock()
self.assertEqual(lock1.id, lock2.id)
self.assertEqual(lock2.pid, 2)