+ # def show_pick_tasks(self, search, hide_chosen_tasks, sort_order=None):
+ # prev_date_str, next_date_str = self.neighbor_dates()
+
+ # chosen_todos = self.selected_day.linked_todos_as_list
+
+ # relevant_todos = []
+ # for todo in self.todos.values():
+ # if todo.done\
+ # or (not todo.visible)\
+ # or (not todo.matches(search))\
+ # or todo.earliest_date >= self.selected_date:
+ # continue
+ # relevant_todos += [todo]
+
+ # filtered_tasks = []
+ # chosen_tasks = [todo.task for todo in self.selected_day.linked_todos_as_list]
+ # for uuid, task in self.tasks.items():
+ # if (not task.visible)\
+ # or (not task.matches(search))\
+ # or (hide_chosen_tasks and task in chosen_tasks):
+ # continue
+ # filtered_tasks += [task]
+
+ # if sort_order == 'title':
+ # chosen_todos.sort(key=lambda t: t.title)
+ # relevant_todos.sort(key=lambda t: t.dated_title)
+ # tasks.sort(key=lambda t: t.title.then)
+ # elif sort_order == 'effort':
+ # chosen_todos.sort(key=lambda t:
+ # t.day_effort if t.day_effort else (t.default_effort if t.done else 0),
+ # reverse=True)
+ # relevant_todos.sort(key=lambda t: t.all_days_effort, reverse=True)
+ # filtered_tasks.sort(key=lambda t: t.default_effort.then, reverse=True)
+
+ # return j2env.get_template('pick_tasks.html').render(
+ # sort=sort_order,
+ # tags=self.t_tags,
+ # chosen_todos=chosen_todos,
+ # filter_and=self.tag_filter_and,
+ # filter_not=self.tag_filter_not,
+ # day=self.selected_day,
+ # prev_date=prev_date_str,
+ # next_date=next_date_str,
+ # all_tasks=[t for t in self.tasks.values()],
+ # filtered_tasks=filtered_tasks,
+ # hide_chosen_tasks=hide_chosen_tasks,
+ # relevant_todos=relevant_todos,
+ # search=search)
+
+ # helpers
+
+ def set_visibilities(self):
+ for uuid, t in self.tasks.items():
+ t.visible = len([tag for tag in self.tag_filter_and if not tag in t.tags.now]) == 0\
+ and len([tag for tag in self.tag_filter_not if tag in t.tags.now]) == 0\
+ and ((not self.hide_unchosen) or uuid in self.selected_day.todos.keys())
+ for todo in self.todos.values():
+ todo.visible = len([tag for tag in self.tag_filter_and if not tag in todo.day_tags | todo.task.tags.now ]) == 0\
+ and len([tag for tag in self.tag_filter_not if tag in todo.day_tags | todo.task.tags.now ]) == 0\
+ and ((not self.hide_done) or (not todo.done))
+
+ def get_limit_days_from_date_strings(self, start_date_str, end_date_str):
+ todays_date_obj = datetime.strptime(today_date(), DATE_FORMAT)
+ yesterdays_date_obj = todays_date_obj - timedelta(1)
+ def get_day_limit_obj(index, day_limit_string):
+ date_obj = datetime.strptime(sorted(self.days.keys())[index], DATE_FORMAT)
+ if day_limit_string and len(day_limit_string) > 0:
+ if day_limit_string in {'today', 'yesterday'}:
+ date_obj = todays_date_obj if day_limit_string == 'today' else yesterdays_date_obj
+ else:
+ date_obj = datetime.strptime(day_limit_string, DATE_FORMAT)
+ return date_obj
+ start_date_obj = get_day_limit_obj(0, start_date_str)
+ end_date_obj = get_day_limit_obj(-1, end_date_str)
+ return start_date_obj, end_date_obj
+
+ def neighbor_dates(self):
+ current_date = datetime.strptime(self.selected_date, DATE_FORMAT)
+ prev_date = current_date - timedelta(days=1)
+ prev_date_str = prev_date.strftime(DATE_FORMAT)
+ next_date = current_date + timedelta(days=1)
+ next_date_str = next_date.strftime(DATE_FORMAT)
+ return prev_date_str, next_date_str
+
+