This repository has been archived on 2022-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
it-volunteers-for-peace/handlers/projects/create.py

55 lines
2.2 KiB
Python

from loguru import logger
import re
from aiogram import types
from aiogram.dispatcher import FSMContext
from states.project import ProjectStates
from services.repositories import Repos, ProjectRepo
async def ask_for_project_fields(message: types.Message, state: FSMContext):
await state.set_state(ProjectStates.create)
await message.reply(
"Название проекта: Превращение песиков в котиков\n\n"
"Описание: Наши цели прямы и понятны! Мы хотим написать "
"алгоритм конвертации песиков в котиков.\n\n"
"Контакты: @создатель\n\n"
"Кол-во участников: 2 "
"(пожалуйста напишите число участников не раскрывая личные данные)\n\n"
"Статус: 1 (1 - проект ищет людей, 2 - в работе, "
"3 - проект завершен, 0 - отменен)\n\n"
"Теги: #python\n\n"
"Категория: написание алгоритма"
)
await message.reply(
"Пожалуйста отправьте анкету вашего проекта по шаблону "
"из сообщения выше (скопируйте сообщение и замените данные)"
)
async def create_project(
message: types.Message, repo: Repos, state: FSMContext
):
await state.reset_state()
field_types = {
"Название проекта": str, "Описание": str, "Контакты": str,
"Кол-во участников": int, "Статус": int, "Теги": str,
"Категория": str
}
field_values = {name: None for name in field_types}
for name, data_type in field_types.items():
try:
field_values[name] = data_type(
re.findall(rf"(?<={name}: ).*", message.text)[0]
)
except IndexError:
pass
logger.debug(field_values)
await repo.get_repo(ProjectRepo).add(
*field_values.values(), user_id=message.from_user.id
)