Example #1
0
async def admin(msg: types.Message, state: FSMContext):
    text = msg.text
    user_id = msg.from_user.id
    dolj = ''
    if text == 'Создать':  #создание нового документа: DOLJ, FIO, ADRESS, PHONE, EMAIL
        if dolj == '':
            await state.set_state(States.DOLJ)
            await bot.send_message(msg.chat.id, "Введи должность:")
            return
    elif text == 'Изменить':  #изменение существующего документа: CHANGE, CHANGE_ROOM
        board_4 = create_reply_keyboard()
        await state.set_state(States.CHANGE)
        full_text = num_list()
        await bot.send_message(msg.chat.id, full_text)
        await bot.send_message(msg.chat.id,
                               "Это весь список, кого будем редактировать?",
                               reply_markup=board_4)
    elif text == 'Удалить':  #удаление документа из коллекции: DELETE
        board_4 = create_reply_keyboard()
        await state.set_state(States.DELETE)
        full_text = num_list()
        await bot.send_message(msg.chat.id, full_text)
        await bot.send_message(msg.chat.id,
                               "Это весь список, кого будем удалять?",
                               reply_markup=board_4)
    elif text == 'Сохранить':  #обновление коллекции, сброс состояния
        save_adm(user_id)
        await state.finish()
        await bot.send_message(msg.chat.id, "Воистину админь")
    elif text == 'Запуск парсера':
        parser()
    else:
        await bot.send_message(
            msg.chat.id, "Сохраните изменения, внесенные в режиме админа")
Example #2
0
async def process_worker_command(msg: types.Message, state: FSMContext):
    board_4 = create_reply_keyboard()
    full_text = num_list()
    await bot.send_message(msg.chat.id, full_text)
    await bot.send_message(msg.chat.id,
                           "Вот все руководство, выбирай",
                           reply_markup=board_4)
Example #3
0
async def delete(msg: types.Message, state: FSMContext):
    text = msg.text
    board_4 = create_reply_keyboard()
    if text.isdigit():
        code = int(text) - 1
        #проверка по id
        delete = adm_collection.find({}, {'_id': 0}).skip(code).limit(1)
        full = db_list(delete)
        user_id = msg.from_user.id
        if len(full[0]) > 7:
            if full[0][7] != str(user_id):
                await bot.send_message(
                    msg.from_user.id,
                    'Редактирование сейчас недоступно, выберите другого человека',
                    reply_markup=board_4)
                return
        else:
            new_doc = {'admin_id': f'{user_id}'}
            adm_collection.update_one({'doljname': full[0][0]},
                                      {"$set": new_doc})
        adm_collection.remove({'doljname': full[0][0]})
        await state.set_state(States.ADMIN)
        await bot.send_message(
            msg.from_user.id,
            "Если это все, что ты хотел - жми 'Сохранить', ну или выбирай, что будем делать",
            reply_markup=board_3)
Example #4
0
async def admin(msg: types.Message, state: FSMContext):
    text = msg.text
    user_id = msg.from_user.id
    dolj = ''
    if text == 'Создать':
        if dolj == '':
            await state.set_state(States.DOLJ)
            await bot.send_message(msg.from_user.id, "Введи должность:" )
            return
    elif text == 'Изменить':
        board_4 = create_reply_keyboard()
        await state.set_state(States.CHANGE)
        js = adm_collection.find({}, {'doljname' : 1, '_id' : 0})
        full = db_list(js)
        g = 1
        full_text = ''
        for elem in full:
            for i in elem:
                full_text += f'{g}' + '. ' + i + '\n'
                g += 1
        await bot.send_message(msg.from_user.id, full_text)
        await bot.send_message(msg.from_user.id, "Это весь список, кого будем редактировать?", reply_markup=board_4)
    elif text == 'Удалить':
        board_4 = create_reply_keyboard()
        await state.set_state(States.DELETE)
        js = adm_collection.find({}, {'doljname' : 1, '_id' : 0})
        full = db_list(js)
        g = 1
        full_text = ''
        for elem in full:
            for i in elem:
                full_text += f'{g}' + '. ' + i + '\n'
                g += 1
        await bot.send_message(msg.from_user.id, full_text)
        await bot.send_message(msg.from_user.id, "Это весь список, кого будем удалять?", reply_markup=board_4)
    elif text == 'Сохранить':
        new_collection.remove({})
        docs = adm_collection.find({},{'_id' : 0})
        full = []
        for doc in docs:
            if 'admin_id' in doc:
                if doc['admin_id'] == str(user_id):
                    adm_collection.update_one({'doljname' : doc['doljname']}, {"$unset": {'admin_id' : 1}})
                doc.pop('admin_id')
            full.append(doc)
        new_collection.insert_many(full)
        await bot.send_message(msg.from_user.id, "Все изменения сохранены", reply_markup=ReplyKeyboardRemove())
Example #5
0
async def change(msg: types.Message, state: FSMContext):
    text = msg.text
    board_4 = create_reply_keyboard()
    key_list = ['doljname', 'Fname', 'Name', 'Oname', 'Room', 'Phone', 'Mail'] 
    if  text.isdigit():             #получает номер выбранного руководителя
        code = int(text)-1
        change = adm_collection.find({}, {'_id' : 0, 'edited': 0}).skip(code).limit(1)
        full = db_list(change)
        user_id = msg.from_user.id
        if len(full) < 1:           #проверка на существования такого номера в коллекции
            full_text = num_list()
            await bot.send_message(msg.chat.id, full_text)
            await bot.send_message(msg.chat.id, "Выбери кого редактироать клавиатуре!", reply_markup=board_4)
            return
        elif str(user_id) in full[0]:      #проверка admin_id, не допускает параллельного редактирования
            await bot.send_message(msg.chat.id, 'Редактирование сейчас недоступно, выберите другого человека', reply_markup=board_4)
            return
        else:
            new_doc = {'admin_id' : f'{user_id}'}
            adm_collection.update_one({'doljname' : full[0][0]}, {"$set": new_doc})
        await state.update_data(code=text)
        full_text = ''
        for elem in full:
            if 'admin_id' in elem:
                elem.pop('admin_id')
            for value in elem:
                full_text += str(value) + '\n'
        await bot.send_message(msg.chat.id, full_text)
        await bot.send_message(msg.chat.id, "Что будем менять?", reply_markup=board_2)
    elif text == 'Назад':           #возврат в режим админа
        await state.set_state(States.ADMIN)
        await bot.send_message(msg.chat.id, "Если это все, что ты хотел - жми 'Сохранить', "
                            "ну или выбирай, что будем делать", reply_markup=board_3)
    else:                           #принимает параметр изменения и новые значения
        butt_list = ['Должность', 'Фамилия', 'Имя', 'Отчество', 'Кабинет', 'Телефон', 'Email']
        for i in range(len(butt_list)):
            if text == butt_list[i]:#запоминаем параметр изменения
                data = await state.get_data()
                if 'code' in data:
                    await state.update_data(text=i)
                    if i == 4:
                        await state.set_state(States.CHANGE_ROOM)
                    await bot.send_message(msg.chat.id, "Введи новое значение")
                    return
                else:
                    await bot.send_message(msg.chat.id, "Сначала выбери кого будем изменять", reply_markup=board_4)
        data = await state.get_data()
        if 'text' in data:          #проверка на параметр изменения&внесение изменений
            code = int(data['code'])    #номер руководителя в коллекции
            num = int(data['text'])     #параметр изменения
            change = adm_collection.find({}, {'_id' : 0, 'edited': 0}).skip(code-1).limit(1)
            full = db_list(change)
            new_doc = {f'{key_list[num]}' : text, 'edited': '1'}
            adm_collection.update_one({'doljname' : full[0][0]}, {"$set": new_doc})
            await state.set_state(States.ADMIN)
            await bot.send_message(msg.chat.id, "Если это все, что ты хотел - жми 'Сохранить', ну или выбирай, что будем делать", reply_markup=board_3)
        else:
            await bot.send_message(msg.chat.id, "Выбери, что будем менять на клавиатуре, либо напиши 'Назад', вернуться", reply_markup=board_2)
Example #6
0
async def change(msg: types.Message, state: FSMContext):
    text = msg.text
    board_4 = create_reply_keyboard()
    key_list = ['doljname', 'Fname', 'Name', 'Oname', 'Room', 'Phone', 'Mail']
    if  text.isdigit():
        code = int(text)-1
        change = adm_collection.find({}, {'_id' : 0}).skip(code).limit(1)
        full = db_list(change)
        user_id = msg.from_user.id
        if len(full[0]) > 7:
            if full[0][7] != str(user_id):
                await bot.send_message(msg.from_user.id, 'Редактирование сейчас недоступно, выберите другого человека', reply_markup=board_4)
                return
        else:
            new_doc = {'admin_id' : f'{user_id}'}
            adm_collection.update_one({'doljname' : full[0][0]}, {"$set": new_doc})
        await state.update_data(code=text)
        full_text = ''
        for elem in full:
            if 'admin_id' in elem:
                elem.pop('admin_id')
            for value in elem:
                full_text += str(value) + '\n'
        await bot.send_message(msg.from_user.id, full_text)
        await bot.send_message(msg.from_user.id, "Что будем менять?", reply_markup=board_5)
    elif text == 'Назад':
        await state.set_state(States.ADMIN)
        await bot.send_message(msg.from_user.id, "Если это все, что ты хотел - жми 'Сохранить', "
                            "ну или выбирай, что будем делать", reply_markup=board_3)
    else:
        butt_list = ['Должность', 'Фамилия', 'Имя', 'Отчество', 'Кабинет', 'Телефон', 'Email']
        key_list = ['doljname', 'Fname', 'Name', 'Oname', 'Room', 'Phone' 'Mail']
        for i in range(len(butt_list)):
            if text == butt_list[i]:
                data = await state.get_data()
                if 'code' in data:
                    await state.update_data(text=i)
                    await bot.send_message(msg.from_user.id, "Введи новое значение")
                    return
                else:
                    await bot.send_message(msg.from_user.id, "Сначала выбери кого будем изменять", reply_markup=board_4)
        data = await state.get_data()
        if 'text' in data:
            code = int(data['code'])
            num = int(data['text'])
            change = adm_collection.find({}, {'_id' : 0}).skip(code-1).limit(1)
            full = db_list(change)
            new_doc = {f'{key_list[num]}' : text}
            adm_collection.update_one({'doljname' : full[0][0]}, {"$set": new_doc})
            await state.set_state(States.ADMIN)
            await bot.send_message(msg.from_user.id, "Если это все, что ты хотел - жми 'Сохранить', ну или выбирай, что будем делать", reply_markup=board_3)
        else:
            await bot.send_message(msg.from_user.id, "Выбери, что будем менять на клавиатуре, либо напиши 'Назад', вернуться", reply_markup=board_5)
Example #7
0
async def delete(msg: types.Message, state: FSMContext):
    text = msg.text
    board_4 = create_reply_keyboard()
    if text.isdigit():
        code = int(text) - 1
        delete = adm_collection.find({}, {
            '_id': 0,
            'edited': 0
        }).skip(code).limit(1)
        full = db_list(delete)
        user_id = msg.from_user.id
        if len(full) < 1:  #проверка на существования такого номера в коллекции
            full_text = num_list()
            await bot.send_message(msg.chat.id, full_text)
            await bot.send_message(msg.chat.id,
                                   "Выбери кого удалить клавиатуре!",
                                   reply_markup=board_4)
            return
        elif len(full[0]) > 7:  #проверка admin_id
            if full[0][7] != str(user_id):
                await bot.send_message(
                    msg.chat.id,
                    'Редактирование сейчас недоступно, выберите другого человека',
                    reply_markup=board_4)
                return
        else:
            new_doc = {'admin_id': f'{user_id}'}
            old_doc = {
                'doljname': full[0][0],
                'Fname': full[0][1],
                'Name': full[0][2],
                'Oname': full[0][3],
                'Room': full[0][4],
                'Phone': full[0][5],
                'Mail': full[0][6]
            }
            adm_collection.update_one(old_doc, {"$set": new_doc})
            adm_collection.remove(old_doc)  #удаление документа
        await state.set_state(States.ADMIN)
        await bot.send_message(
            msg.chat.id,
            "Если это все, что ты хотел - жми 'Сохранить', ну или выбирай, что будем делать",
            reply_markup=board_3)