示例#1
0
def delete_def(message, keyboard):
    """Удаление сотрудника"""
    sql_request = 'SELECT fio FROM staff'
    records = sql_ps.connect_bd(message, sql_request, 'select')
    my_unit = unit_salfe_def(message)
    if message.text in parse(records, 'string'):
        sql_request = "SELECT unit FROM staff WHERE fio = '{}'".format(
            message.text)
        staff_unit = sql_ps.connect_bd(message, sql_request, 'select')
        if my_unit == staff_unit[0][0]:
            sql_request = "DELETE FROM staff WHERE fio = '{}'".format(
                message.text)
            sql_ps.connect_bd(message, sql_request, 'delete')
            bot.send_message(message.from_user.id,
                             'Сотрудник успешно удален',
                             reply_markup=keyboard)
        else:
            bot.send_message(
                message.from_user.id,
                'Вы не можете удалить сотрудника с другого подразделения',
                reply_markup=keyboard)
            return
    elif message.text == 'Выход':
        bot.reply_to(message,
                     'Выберите что необходимо сделать',
                     reply_markup=keyboard)
        return
    else:
        bot.send_message(
            message.from_user.id,
            'Такого сотрудника нету в списке, попробуйте еще раз или нажмите "Выход"'
        )
        bot.register_next_step_handler(message, delete_def, keyboard)
        return
示例#2
0
def new_staff_def(message, id_telegramm, fio, unit, keyboard):
    """Добавление нового сотрудника"""
    try:
        if message.text == 'Выход':
            bot.reply_to(message,
                         'Выберите что необходимо сделать',
                         reply_markup=keyboard)
            return
        else:
            int(message.text)
            bot.reply_to(message,
                         'Необходимо ввести Да или Нет, попробуйте еще раз.')
            bot.register_next_step_handler(message, new_staff_def,
                                           id_telegramm, fio, unit, keyboard)
            return
    except ValueError:
        adm = message.text
        if adm.lower() == 'да':
            adm = 'Yes'
        elif adm.lower() == 'нет':
            adm = 'No'
        else:
            bot.reply_to(message,
                         'Необходимо ввести Да или Нет, попробуйте еще раз.')
            bot.register_next_step_handler(message, new_staff_def,
                                           id_telegramm, fio, unit, keyboard)
            return
        sql_request = 'SELECT id_telegramm FROM staff'
        records = sql_ps.connect_bd(message, sql_request, 'select')
        if str(id_telegramm) not in parse(records, 'string'):
            sql_request = "INSERT INTO staff(id_telegramm, fio, unit, install_date, adm) " \
                          "VALUES ('{}', '{}', '{}', '{}', '{}')".format(id_telegramm, fio, unit, time_def()[2], adm)
            sql_ps.connect_bd(message, sql_request, 'insert')
            bot.send_message(message.from_user.id,
                             'Сотрудник успешно добавлен',
                             reply_markup=keyboard)
            return
        else:
            bot.send_message(message.from_user.id,
                             'Сотрудник с таким id уже добавлен',
                             reply_markup=keyboard)
            return
示例#3
0
def access_def(message):
    """Проверка на администратора"""
    user_id = str(message.from_user.id)
    sql_request = "SELECT adm FROM staff WHERE id_telegramm='{}'".format(
        user_id)
    records = sql_ps.connect_bd(message, sql_request, 'select')
    records = Counter(records)
    for i in records:
        if i[0] == 'Yes':
            return True
        else:
            return False
示例#4
0
def registration(message):
    """Взять талон в столовую"""
    sql_request = 'SELECT id_telegramm FROM staff'
    records = sql_ps.connect_bd(message, sql_request, 'select')
    if str(message.from_user.id) in parse(records, 'string'):
        sql_request = "SELECT unit FROM staff WHERE id_telegramm = '{}'".format(
            str(message.from_user.id))
        records = sql_ps.connect_bd(message, sql_request, 'select')
        unit = translit_def(records[0][0])
        if unit == '':
            bot.send_message(message.from_user.id,
                             'Подразделение указано неверно!')
            return
        data_name = time_def()[0] + time_def()[1] + unit
        records = sql_ps.all_table_list()
        if data_name.lower() not in records:
            sql_ps.create_new_table(data_name)
        sql_request = "SELECT install_date FROM {} WHERE id_telegramm = '{}'".format(
            data_name, str(message.from_user.id))
        records = sql_ps.connect_bd(message, sql_request, 'select')
        if str(time_def()[3]) not in parse(records, 'string_slice'):
            sql_request = "SELECT * FROM staff WHERE id_telegramm = '{}'".format(
                str(message.from_user.id))
            records = sql_ps.connect_bd(message, sql_request, 'select')
            try:
                fio = records[0][2]
                sql_request = "INSERT INTO {}(id_telegramm, fio, unit, install_date, adm) " \
                              "VALUES ('{}', '{}', '{}', '{}', '{}')".format(data_name, records[0][1], records[0][2],
                                                                             records[0][3], time_def()[2], records[0][5]
                                                                             )
                sql_ps.connect_bd(message, sql_request, 'insert')
                color = 'green'
                txt = fio + "\n" + str(time_def()[2])
                image_path = image_pillow.image(txt, color)
                photo = open(image_path, 'rb')
                bot.send_photo(message.from_user.id, photo)
            except:
                bot.send_message(
                    message.from_user.id,
                    'Если вы не получили талон попробуйте еще раз')
                return
            try:
                os.remove(image_path)
            except FileNotFoundError:
                return
        else:
            bot.send_message(message.from_user.id, 'Вы уже ели сегодня')
            return
    else:
        txt = 'Вы не зарегистрированы' + '\n' + 'Ваш id - ' + str(
            message.from_user.id)
        color = 'red'
        image_path = image_pillow.image(txt, color)
        photo = open(image_path, 'rb')
        bot.send_photo(message.from_user.id, photo)
        try:
            os.remove(image_path)
        except FileNotFoundError:
            return
    return
示例#5
0
def kredit_def(message, month, keyboard):
    """Баланс"""
    sql_request = 'SELECT id_telegramm FROM staff'
    records = sql_ps.connect_bd(message, sql_request, 'select')
    if str(message.from_user.id) in parse(records, 'string'):
        sql_request = "SELECT unit FROM staff WHERE id_telegramm = '{}'".format(
            str(message.from_user.id))
        unit = translit_def(
            sql_ps.connect_bd(message, sql_request, 'select')[0][0])
        if unit == '':
            bot.send_message(message.from_user.id,
                             'Подразделение указано неверно!')
            return
        data_name = month + time_def()[1] + unit
        records = sql_ps.all_table_list()
        if data_name.lower() not in records:
            sql_ps.create_new_table(data_name)
        sql_request = "SELECT id_telegramm FROM {} WHERE id_telegramm = '{}'".format(
            data_name, str(message.from_user.id))
        records = Counter(sql_ps.connect_bd(message, sql_request, 'select'))
        n = [records[i] * 100 for i in records]
        try:
            answer = 'Вы должны - ' + str(n[0]) + ' рублей'
        except IndexError:
            answer = 'Вы должны 0 рублей'
        bot.send_message(message.from_user.id, answer, reply_markup=keyboard)
    else:
        txt = 'Вы не зарегистрированы' + '\n' + 'Ваш id - ' + str(
            message.from_user.id)
        color = 'red'
        image_path = image_pillow.image(txt, color)
        photo = open(image_path, 'rb')
        bot.send_photo(message.from_user.id, photo, reply_markup=keyboard)
        try:
            os.remove(image_path)
        except FileNotFoundError:
            return
示例#6
0
def report_def(message, month, year, keyboard):
    """Отчет"""
    unit = message.text
    my_unit = unit_salfe_def(message)
    try:
        unit = unit.lower()
    except AttributeError:
        bot.reply_to(message, 'Здесь необходимо ввести подразделение')
        bot.register_next_step_handler(message, report_def, month, year,
                                       keyboard)
    if unit == '':
        bot.send_message(message.from_user.id,
                         'Подразделение указано неверно!',
                         reply_markup=keyboard)
        return
    elif unit != my_unit:
        bot.send_message(message.from_user.id,
                         'Вы не можете смотреть отчет других подразделений',
                         reply_markup=keyboard)
        return
    unit = translit_def(unit)
    data_name = month + str(year) + unit
    records = sql_ps.all_table_list()
    answer = 'Отчета за этот период нету.'
    if data_name.lower() in records:
        sql_request = 'SELECT fio, id_telegramm FROM {}'.format(data_name)
        records = sql_ps.connect_bd(message, sql_request, 'select')
        records = Counter(records)
        list_keys = sorted(list(records.keys()))
        send_xlsx = {i[0]: records[i] * 100 for i in list_keys}
        file = excel.send_xlsx(send_xlsx)
        if file is None:
            bot.send_message(message.from_user.id,
                             'Файл xlsx не сформирован, попробуйте еще раз.',
                             reply_markup=keyboard)
        else:
            file_open = open(file, 'rb')
            bot.send_document(message.from_user.id,
                              file_open,
                              reply_markup=keyboard)
            file_open.close()
            try:
                os.remove(file)
            except FileNotFoundError and PermissionError:
                print('Не прошло удаление файла!')
                pass
    else:
        bot.send_message(message.from_user.id, answer, reply_markup=keyboard)
        return
示例#7
0
def list_staff_def(message, keyboard):
    """Список сотрудников"""
    unit = message.text
    my_unit = unit_salfe_def(message)
    if unit == 'Выход':
        bot.reply_to(message,
                     'Выберите что необходимо сделать',
                     reply_markup=keyboard)
        return
    else:
        try:
            unit = int(unit)
            bot.reply_to(message,
                         'Здесь необходимо ввести название подразделения')
            bot.register_next_step_handler(message, list_staff_def, keyboard)
            return
        except ValueError:
            if unit == my_unit:
                unit = unit.lower()
                sql_request = "SELECT fio, adm FROM staff WHERE unit='{}'".format(
                    unit)
                records = Counter(
                    sql_ps.connect_bd(message, sql_request, 'select'))
                list_staff = sorted([i for i in records])
                send_xlsx = {}
                for i in list_staff:
                    send_xlsx[i[0]] = i[1]
                file = excel.send_xlsx(send_xlsx)
                if file is None:
                    bot.send_message(
                        message.from_user.id,
                        'Файл xlsx не сформирован, попробуйте еще раз.',
                        reply_markup=keyboard)
                else:
                    file_open = open(file, 'rb')
                    bot.send_document(message.from_user.id,
                                      file_open,
                                      reply_markup=keyboard)
                    file_open.close()
                    try:
                        os.remove(file)
                    except FileNotFoundError and PermissionError:
                        pass
            else:
                bot.send_message(message.from_user.id,
                                 'Вы не можете смотреть дургое подразделение',
                                 reply_markup=keyboard)
示例#8
0
def unit_def(message, id_telegramm, fio, keyboard):
    unit = message.text
    if unit == 'Выход':
        bot.reply_to(message,
                     'Выберите что необходимо сделать',
                     reply_markup=keyboard)
        return
    else:
        try:
            unit = int(unit)
            bot.reply_to(
                message,
                'Здесь необходимо ввести название подразделения на русском языке'
            )
            bot.register_next_step_handler(message, unit_def, id_telegramm,
                                           fio, keyboard)
            return
        except ValueError:
            unit = unit.lower()
            my_unit = unit_salfe_def(message)
            sql_request = 'SELECT unit FROM staff'
            records = sql_ps.connect_bd(message, sql_request, 'select')
            if str(unit) in parse(records, 'string'):
                if unit == my_unit:
                    bot.send_message(message.from_user.id,
                                     'Является ли сотрудник администратором?')
                    bot.register_next_step_handler(message, new_staff_def,
                                                   id_telegramm, fio, unit,
                                                   keyboard)
                else:
                    bot.send_message(
                        message.from_user.id,
                        'Вы не можете добавить сотрудника в другое подразделение',
                        reply_markup=keyboard)
                    return
            else:
                bot.reply_to(message, 'Такого подразделения еще не создано')
                return
示例#9
0
def unit_salfe_def(message):
    """Определение своего подразделения"""
    sql_request = "SELECT unit FROM staff WHERE id_telegramm='{}'".format(
        str(message.from_user.id))
    records = sql_ps.connect_bd(message, sql_request, 'select')
    return records[0][0]