コード例 #1
0
def proj_report(update, l_date, r_date, proj):
    em = EmployeeModel(db.get_connection())
    pm = ProjectModel(db.get_connection())
    pid = pm.get_id(proj)

    tm = TaskModel(db.get_connection())
    all_tasks = tm.get_by_project(pid)

    done_task_counter = 0

    for task in all_tasks:
        if not task[5]:
            continue
        if l_date <= task[6] <= r_date:
            done_task_counter += 1
            date = datetime.fromordinal(task[6])
            update.message.reply_text(f'''
<b>Проект: {pm.get_name(task[4])}</b>
<b>Задача: {task[1]}</b>
<b>Описание: {task[2]}</b>
<b>Сотрудник: {em.get(task[3])[1]}</b>
<b>Время выполнения: {task[8]}</b>
<b>Статус: Выполнена</b>
<b>Дата выполнения: {'.'.join(map(str, [date.day, date.month, date.year]))}</b>''', parse_mode='HTML')

    update.message.reply_text(f'<b>Выполнено {done_task_counter} задач из {len(all_tasks)}</b>',
                              reply_markup=create_back_to_reports_keyboard(), parse_mode='HTML')
コード例 #2
0
def delete_project(name):
    pm = ProjectModel(db.get_connection())
    pid = pm.get_id(name)
    pm.delete(pid)

    tm = TaskModel(db.get_connection())
    tm.delete_by_project(pid)
コード例 #3
0
def set_done(bot, name, project, time):
    tm = TaskModel(db.get_connection())
    pm = ProjectModel(db.get_connection())
    um = UserModel(db.get_connection())
    em = EmployeeModel(db.get_connection())

    project_id = pm.get_id(project)
    tid = tm.search(name, project_id)
    boss_id = um.get_boss_id()

    if tid:
        tm.set_done(tid)
        tm.set_done_date(tid)
        tm.set_timer(tid, time)
        task = tm.get(tid)
        bot.sendMessage(boss_id, f'''
<b>Задача выполнена
<u>Исполнитель</u>: {em.get(task[3])[1]}
<u>Проект:</u> {pm.get_name(task[4])}
<u>Задача:</u> {task[1]}
<u>Описание задачи:</u> {task[2]}
<u>Время выполнения:</u> {task[8].split(':')[0]} часа(-ов) {task[8].split(':')[1]} минут
</b>''', parse_mode='HTML')
    else:
        raise TaskNotFound
コード例 #4
0
def project_preview(update, project):
    tm = TaskModel(db.get_connection())
    pm = ProjectModel(db.get_connection())
    em = EmployeeModel(db.get_connection())
    tasks = sorted(tm.get_by_project(pm.get_id(project)), key=lambda t: t[5])

    for task in tasks:
        update.message.reply_text(
            f'''
<b>Задача: <u>{task[1]}</u></b>
<b>Описание:</b> {task[2]}
<b>Исполнитель:</b> {em.get(task[3])[1]}
<b>Время выполнения: {'-' if not task[5] else task[8]}</b> 
<b>Статус: {'Выполнена' if task[5] else 'В процессе'}</b>
''',
            reply_markup=create_tasks_in_project_boss_keyboard(),
            parse_mode='HTML')
コード例 #5
0
def create_projects_boss_keyboard(db):
    pm = ProjectModel(db.get_connection())
    projects = [el[1] for el in pm.get_all()]
    boss_reply_keyboard3 = []

    temp = []
    for p in projects:
        temp.append(p)
        if len(temp) == 4:
            boss_reply_keyboard3.append(temp)
            temp = []
    if temp:
        boss_reply_keyboard3.append(temp)

    boss_reply_keyboard3.append(['Главное меню'])
    boss_markup3 = ReplyKeyboardMarkup(boss_reply_keyboard3,
                                       one_time_keyboard=False)
    return boss_markup3
コード例 #6
0
def add_task(bot, name, description, emp_name, project_name, boss_link):
    em = EmployeeModel(db.get_connection())
    pm = ProjectModel(db.get_connection())
    tm = TaskModel(db.get_connection())
    emp_id = em.get_id(emp_name)
    if not emp_id:
        raise UserNotFound
    proj_id = pm.get_id(project_name)
    if not proj_id:
        raise ProjectNotFound
    tm.insert(name, description, emp_id, proj_id, boss_link, 0)
    em.add_project(emp_id, pm.get_id(project_name))
    bot.sendMessage(emp_id, f'''
У Вас новая задача
<b><u>Проект:</u> {project_name}
<u>Задача:</u> {name}
<u>Описание задачи:</u> {description}
<u>Контакты Лидера Команды:</u> {boss_link}</b>''', parse_mode='HTML')
コード例 #7
0
def init_tm_db():
    db = DB('tm.db')
    um = UserModel(db.get_connection())
    um.init_table()
    um.insert(394406731, 'Danya', boss=True)
    um.insert(1027909953, 'Maxim', boss=False)
    # um.insert(1027909953, 'Maxim')
    # um.insert(1579583, 'Евгений Викторович', boss=True)
    # um.insert(60880374, 'Виталий Викторович', boss=True)

    pm = ProjectModel(db.get_connection())
    pm.init_table()

    tm = TaskModel(db.get_connection())
    tm.init_table()

    em = EmployeeModel(db.get_connection())
    em.init_table()
    em.auto_update()
コード例 #8
0
def view_tm_db():
    db = DB('tm.db')
    um = UserModel(db.get_connection())
    print('Пользователи: ', um.get_all())

    print('-----------------------------------------------')

    pm = ProjectModel(db.get_connection())
    print('Проекты: ', pm.get_all())

    print('-----------------------------------------------')

    em = EmployeeModel(db.get_connection())
    print('Сотрудники: ', em.get_all())

    print('-----------------------------------------------')

    tm = TaskModel(db.get_connection())
    print('Задачи: ', tm.get_all())
コード例 #9
0
def employee_task_preview(bot, update):
    tm = TaskModel(db.get_connection())
    pm = ProjectModel(db.get_connection())
    tasks = (task for task in tm.get_by_emp(update.message.from_user.id)
             if not task[5])

    for task in tasks:
        update.message.reply_text(f'''
<b>Задача: <u>{task[1]}</u></b>
<b>Описание:</b> {task[2]}
<b>Проект: {pm.get_name(task[4])}</b>
<b>Контакты Лидера Команды: {task[7]}</b>
<b>Статус:</b> {'Выполнена' if task[5] else 'В процессе'}''',
                                  reply_markup=create_main_employee_keyboard(),
                                  parse_mode='HTML')
コード例 #10
0
def task_preview(bot, update):
    tm = TaskModel(db.get_connection())
    em = EmployeeModel(db.get_connection())
    pm = ProjectModel(db.get_connection())
    tasks = sorted(tm.get_all(), key=lambda t: t[5])

    for task in tasks:
        update.message.reply_text(f'''
<b>Задача: <u>{task[1]}</u></b>
<b>Проект: {pm.get_name(task[4])}</b>
<b>Описание: {task[2]}</b>
<b>Сотрудник: {em.get(task[3])[1]}</b>
<b>Время выполнения: {'-' if not task[5] else task[8]}</b>
<b>Статус:</b> {'Выполнена' if task[5] else 'В процессе'}''',
                                  reply_markup=create_menu_keyboard(),
                                  parse_mode='HTML')
コード例 #11
0
def create_tasks_employee_keyboard(db, emp_id):
    tm = TaskModel(db.get_connection())
    pm = ProjectModel(db.get_connection())
    emp_tasks = (f'{pm.get_name(t[4])}: {t[1]}' for t in tm.get_by_emp(emp_id)
                 if not t[5])
    employee_tasks_keyboard = []
    temp = []
    for t in emp_tasks:
        temp.append(t)
        if len(temp) == 2:
            employee_tasks_keyboard.append(temp)
            temp = []
    if temp:
        employee_tasks_keyboard.append(temp)
    employee_tasks_markup = ReplyKeyboardMarkup(employee_tasks_keyboard,
                                                one_time_keyboard=False)
    return employee_tasks_markup
コード例 #12
0
dp.add_handler(MessageHandler(Filters.regex('Просмотр ИНН'), kpz_inn_preview))

# Клавиатура сотрудника
dp.add_handler(
    MessageHandler(Filters.regex('Просмотр моих задач'),
                   employee_task_preview))
dp.add_handler(MessageHandler(Filters.regex('Выполнено'), select_done_task))

# Создаём и удаляем тестовый обработчик текстовых сообщений (команд)
projects_list = []
employee_list = []

em = EmployeeModel(db.get_connection())
for e in em.get_all():
    employee_list.append(e[1])

pm = ProjectModel(db.get_connection())
for p in pm.get_all():
    projects_list.append(p[1])

# Создаём обработчик текстовых сообщений типа Filters.text
text_handler = MessageHandler(Filters.text, global_function)
# Регистрируем обработчик в диспетчере.
dp.add_handler(text_handler)

# Запускаем цикл приема и обработки сообщений
updater.start_polling()

# Ждём завершения приложения при нажатии клавиш Ctrl+C
updater.idle()
コード例 #13
0
def delete_task(project_name, task_name):
    pm = ProjectModel(db.get_connection())
    pid = pm.get_id(project_name)

    tm = TaskModel(db.get_connection())
    tm.delete(pid, task_name)
コード例 #14
0
def add_project(name):
    pm = ProjectModel(db.get_connection())
    if pm.get_id(name):
        raise ProjectAlreadyExist
    else:
        pm.insert(name)