def load(): if not Config.get('cache_enabled'): return None if not os.path.exists(Config.get('cache')): return None with open(Config.get('cache'), 'r') as fd: return ResultSet.deserialize(fd.read())
def get_date(self): local_zone = tz.tzlocal() if self.due_date: if Config.get('time_offset'): dt = self.due_date.astimezone(local_zone) + timedelta(hours=Config.get('time_offset')) return dt.strftime(Config.get('output_date_format')) return self.due_date.astimezone(local_zone).strftime(Config.get('output_date_format')) return ''
def result_set(obj): if obj.name: print( "{}{}\n{}{}".format( Config.color("filter"), obj.name, "".join("=" for _ in obj.name or ""), Config.color("endc") ) ) for task_set in obj.task_sets: Plain.task_set(task_set) if obj.tasks: Plain.task_set(obj.tasks)
def task(obj): indent = " " * (int(obj.get("indent", "1")) - 1) prio = " " if obj.priority and obj.priority != 1: prio = "!" * (obj.priority - 1) due = obj.get_date() if due: due += " " line = Plain.FORMAT["task"].format( c0=Config.color("endc"), c1=Config.color("content"), c2=Config.color("date"), c3=Config.color("project"), c4=Config.color("label"), c5=Config.color("priority"), indent=indent, priority=prio, content=obj.get("content"), project_name=obj.get("project_name"), # nopep8 label_names=obj.get("label_names"), due=due, taskid=obj.get("id"), ) sys.stdout.write(line)
def api_call(method, **options): options['token'] = Config.get('api_token') query_string = parse.urlencode(options) url = "{apiurl}/{method}?{query}".format(apiurl=API_URL, method=method, query=query_string) try: req = request.urlopen(url) content = req.read().decode('utf-8') return json.loads(content) except Exception as ex: print(ex)
def command(args, options): cinfo = args and content_info(args, options) or {} formater = output.formaters[options.format] list_opts = { 'filters': get_filters(options), 'reverse': options.reverse, 'order': ORDER_OPTIONS.get(options.order), 'search': cinfo.get('merged'), } due_date = options.date and todoist_date(options.date) or None if options.configure: Config.configure() elif options.query: todoist.query(cinfo, options.query, output_engine=formater, **list_opts) # nopep8 elif options.all: todoist.query(cinfo, 'view all', output_engine=formater, **list_opts) elif options.archive: todoist.archive(cinfo, options.limit, options.date, options.project_name, # nopep8 output_engine=formater, **list_opts) elif options.complete: todoist.complete_tasks(cinfo) elif options.add_task: todoist.add_task(cinfo, due_date) elif options.labels: todoist.list_labels(cinfo, info=options.info, reverse=options.reverse) elif options.projects: todoist.list_projects(cinfo, reverse=options.reverse) elif options.edit_id: todoist.edit_task(cinfo, options.edit_id, due_date) elif options.project_name: todoist.project_tasks(cinfo, options.project_name, output_engine=formater, **list_opts) elif options.cached: todoist.list_cache(output_engine=formater) else: todoist.list_tasks(cinfo, due_date, output_engine=formater, **list_opts) # nopep8
def save(self): if not Config.get('cache_enabled'): return None with open(Config.get('cache'), 'w') as fd: fd.write(self.serialize())