def do_t_remove(self, line): parser = self.parser_t_remove() options, args = parser.parse_args(line) task=dbutils.getTaskFromId(' '.join(args)) if not options.force: if not tui.confirm("Remove task '%s'" % task.title): return projectId = task.project.id task.destroySelf() print "Task '%s' removed" % (task.title) # Delete project with no associated tasks if Task.select(Task.q.projectID == projectId).count() == 0: Project.delete(projectId)
def do_p_remove(self, line): parser = self.parser_p_remove() options, args = parser.parse_args(line) project = getProjectFromName(' '.join(args)) if not options.force: if not tui.confirm("Remove project '%s' and all its tasks" % project.name): return taskList = Task.select(Task.q.projectID == project.id) taskList = list(taskList) print "Removing project tasks:" for task in taskList: task.delete(task.id) print "- task %(id)-3s: %(title)-30s" % dict(id=str(task.id), title=str(task.title)) project.delete(project.id) print "Project removed"
def getOrCreateKeyword(keywordName, interactive=True): """Get a keyword by its name. Create it if needed @param keywordName: keyword name as a string @param interactive: Ask user before creating keyword (this is the default) @type interactive: Bool @return: Keyword instance or None if user cancel creation""" result = Keyword.selectBy(name=keywordName) result = list(result) if len(result): return result[0] if interactive and not tui.confirm("Keyword '%s' does not exist, create it" % keywordName): return None keyword = Keyword(name=keywordName) print "Added keyword '%s'" % keywordName return keyword
def do_t_purge(self, line): parser = self.parser_t_purge() options, args = parser.parse_args(line) filters=[] filters.append(Task.q.status=="done") filters.append(Task.q.doneDate<(datetime.now()-timedelta(days=options.delay))) tasks=Task.select(AND(*filters)) if tasks.count()==0: print "No tasks need to be purged" return print "The following tasks will be removed:" print "\n".join(["%s: %s" % (task.id, task.title) for task in tasks]) if options.force or tui.confirm("Do you really want to remove those tasks (this action cannot be undone)?"): Task.deleteMany(AND(*filters)) print "Tasks deleted" else: print "Purge canceled"
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