예제 #1
0
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
예제 #2
0
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')
예제 #3
0
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')
예제 #4
0
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')
예제 #5
0
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
예제 #6
0
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)
예제 #7
0
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
예제 #8
0
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
예제 #9
0
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
예제 #10
0
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
예제 #11
0
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()
예제 #12
0
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]
예제 #13
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()
예제 #14
0
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()
예제 #15
0
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
예제 #16
0
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
예제 #17
0
def get_category(id):
    all_tasks = find_all(Category)
    cat = list(filter(lambda t: t.task_id == id, all_tasks))
    return cat[0].category
예제 #18
0
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
예제 #19
0
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
예제 #20
0
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
예제 #21
0
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
예제 #22
0
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
예제 #23
0
def find_one_by_username(username):
    users = find_all(User)
    for u in users:
        if username == u.get_username():
            return u
    return None