def get_info(id, user): all_tasks = find_all(Category) cat = list( filter(lambda t: t.task_id == id and t.user_id == user, all_tasks)) all_tasks = find_all(Task_create_date) create = list( filter(lambda t: t.task_id == id and t.user_id == user, all_tasks)) all_tasks = find_all(Task_remind) remind = list( filter(lambda t: t.task_id == id and t.user_id == user, all_tasks)) all_tasks = find_all(Task_end) end = list( filter(lambda t: t.task_id == id and t.user_id == user, all_tasks)) if len(cat) == 0: cat = "-" else: cat = cat[0].category if len(create) == 0: create = "-" else: create = create[0].create_date if len(remind) == 0: remind = "-" else: remind = remind[0].next_remind_date if len(end) == 0: end = "-" else: end = end[0].end_date return cat, create, remind, end
def pie(user_id): # print(user_id) data_names = [] # user_id = 80148422 data_values = [] all_stat = find_all(Category) for i in all_stat: if i.user_id == user_id: if i.category not in data_names: data_names.append(i.category) data_values.append( len(task_service.find_tasks_by_category(i.task_id))) dpi = 80 fig = plt.figure(dpi=dpi, figsize=(512 / dpi, 384 / dpi)) mpl.rcParams.update({'font.size': 9}) plt.title('Распределение по категориям (%)') xs = range(len(data_names)) plt.pie(data_values, autopct='%.1f', radius=1.1, explode=[0.15] + [0 for _ in range(len(data_names) - 1)]) plt.legend(bbox_to_anchor=(-0.16, 0.45, 0.25, 0.25), loc='lower left', labels=data_names) fig.savefig(f'static/plots/{user_id}_pie.png')
def pie(): data_names = [] all_stat = find_all(Project) for i in all_stat: data_names.append(i.title) data_values = [] for i in data_names: data_values.append(len(task_service.find_tasks_by_category(i))) dpi = 80 fig = plt.figure(dpi=dpi, figsize=(512 / dpi, 384 / dpi)) mpl.rcParams.update({'font.size': 9}) plt.title('Распределение по категориям (%)') xs = range(len(data_names)) plt.pie(data_values, autopct='%.1f', radius=1.1, explode=[0.15] + [0 for _ in range(len(data_names) - 1)]) plt.legend(bbox_to_anchor=(-0.16, 0.45, 0.25, 0.25), loc='lower left', labels=data_names) fig.savefig('pie.png')
def day(): data_names = [] categories = [] all_stat = find_all(Task) a = datetime.datetime.now().timetuple().tm_yday - 1 b = datetime.datetime.now().timetuple().tm_yday + 1 for i in all_stat: if i.next_remind_date is not None: a = math.fabs((i.next_remind_date - datetime.datetime.now()).days) if a < 1: data_names.append(i.description) categories.append(i.category) data_values = [] for i in categories: data_values.append(project_service.find_duration(i)) dpi = 80 fig = plt.figure(dpi=dpi, figsize=(512 / dpi, 384 / dpi)) mpl.rcParams.update({'font.size': 9}) plt.title('Распределение по времени за день (%)') xs = range(len(data_names)) plt.pie(data_values, autopct='%.1f', radius=1.1, explode=[0.15] + [0 for _ in range(len(data_names) - 1)]) plt.legend(bbox_to_anchor=(-0.16, 0.45, 0.25, 0.25), loc='lower left', labels=data_names) fig.savefig('day.png')
def find_tasks_by_category(cat): all_tasks = find_all(Task) res = [] for t in all_tasks: if cat in t.category: res.append(t) return res
def add_category(category, user_id): all_category = find_all(Project) all = list( filter(lambda t: t.title == category and t.user_id == user_id, all_category)) if len(all) == 0: project = Project(title=category, user_id=user_id) save(project)
def get_end(id, user): all_tasks = find_all(Task_end) res = list( filter(lambda t: t.task_id == id and t.user_id == user, all_tasks)) if len(res) == 0: return False else: return res[0].end_date
def find_tasks_by_category(task_id): all_cat = find_all(Task) res = [] for t in all_cat: if t.id == task_id: res.append(t) return res
def find_tasks_by_id(id): all_tasks = find_all(Task) res = [] for t in all_tasks: if id == t.id: res.append(t) return res
def find_tasks_by_title(title): all_tasks = find_all(Task) res = [] for t in all_tasks: if title in t.title: res.append(t) return res
def change_category(user_id, task_id, cat): all_cat = find_all(Category) category = [ t for t in all_cat if user_id == t.user_id and task_id == t.task_id ] category[0].category = cat entity_by_id = db_session.query(Category).filter_by( task_id=task_id, user_id=user_id).update({'category': cat}) db_session.commit()
def find_nearest_task(user_id, project_id): all_tasks = find_all(Task) tasks_by_user_id = filter( lambda t: t.get_user_id() == user_id and t.get_project_id() == project_id, all_tasks) sorted_by_remind_date = sorted(tasks_by_user_id, key=lambda t: t.get_next_remind_date()) return sorted_by_remind_date[0]
def create_remind(task_id, user_id, date): user = user_id all = find_all(Task_remind) all = list( filter(lambda t: t.task_id == task_id and t.user_id == user_id, all)) if len(all) == 0: date = Task_remind(user_id=user, task_id=task_id, date=date) saved_date = save(date) return saved_date else: entity_by_id = db_session.query(Task_remind).filter_by( user_id=user, task_id=task_id).update({'next_remind_date': date}) db_session.commit()
def create_remind(task_id, user_id, date): user = user_id all = find_all(Task_remind) if all.count() == 0: date = Task_remind(user_id=user, task_id=task_id, date=date) saved_date = save(date) # project_service.update_nearest_task_for_project(project.get_id()) return saved_date else: entity_by_id = db_session.query(Task_remind).filter_by( user_id=user, task_id=task_id).update({'next_remind_date': date}) db_session.commit()
def update_nearest_task_for_project(project_id_value): project_id = int(project_id_value) project = find_one_by_id(project_id, Project) if project: all_tasks = find_all(Task) tasks_by_project_id = [t for t in all_tasks if t.get_project_id() == project_id and t.get_next_remind_date() is not None] sorted_by_next_remind_date = sorted(tasks_by_project_id, key=lambda t: t.get_next_remind_date()) if 0 != len(sorted_by_next_remind_date): nearest_task = sorted_by_next_remind_date[0] project.set_next_task_id(nearest_task) saved_proj = save(project) return saved_proj else: return project
def find_one_by_id(id_value): users = find_all(User) for u in users: if id_value == u.get_id(): return u return None
def get_category(id): all_tasks = find_all(Category) cat = list(filter(lambda t: t.task_id == id, all_tasks)) return cat[0].category
def get_date(id): all_tasks = find_all(Task_create_date) time = list(filter(lambda t: t.task_id == id, all_tasks)) return time[0].create_date
def find_tasks_by_user_id(user_id_value): user_id = int(user_id_value) all_tasks = find_all(Task) tasks_by_user = [t for t in all_tasks if user_id == t.get_user_id()] return tasks_by_user
def get_stat(category, user_id): all_stat = find_all(Project) stat = list( filter(lambda t: t.title == category and t.user_id == user_id, all_stat)) return stat
def find_all_by_user_id(user_id): projects = find_all(Project) projects_by_user = [p for p in projects if user_id == p.get_user_id()] return projects_by_user
def find_duration(category, user): projects = find_all(Project) res = [p for p in projects if p.title == category and p.user_id == user] return res[0].duration
def find_one_by_username(username): users = find_all(User) for u in users: if username == u.get_username(): return u return None