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
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
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
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
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
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
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)
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
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]