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

56 lines
2.2 KiB
Python
Raw Normal View History

2022-10-16 19:57:44 +00:00
from loguru import logger
import re
2022-10-21 18:06:20 +00:00
from aiogram import types
2022-10-16 19:57:44 +00:00
from aiogram.dispatcher import FSMContext
from asyncpg import BitString
from states.project import ProjectStates
from services.repositories import Repos, ProjectRepo
2022-10-21 16:02:19 +00:00
async def ask_for_project_fields(message: types.Message, state: FSMContext):
2022-10-16 19:57:44 +00:00
await state.set_state(ProjectStates.set_fields)
await message.reply(
"Название проекта: Превращение песиков в котиков\n\n"
2022-10-21 16:02:19 +00:00
"Описание: Наши цели прямы и понятны! Мы хотим написать "
2022-10-16 19:57:44 +00:00
"алгоритм конвертации песиков в котиков.\n\n"
2022-10-21 16:02:19 +00:00
"Контакты: @создатель\n\n"
2022-10-16 19:57:44 +00:00
"Кол-во участников: 2 "
"(пожалуйста напишите число участников не раскрывая личные данные)\n\n"
"Статус: 1 (1 - проект ищет людей, 2 - в работе, "
"3 - проект завершен, 0 - отменен)\n\n"
"Теги: #python\n\n"
"Категория: написание алгоритма"
)
await message.reply(
"Пожалуйста отправьте анкету вашего проекта по шаблону "
"из сообщения выше (скопируйте сообщение и замените данные)"
)
2022-10-21 16:02:19 +00:00
async def create_project(
2022-10-17 11:17:49 +00:00
message: types.Message, repo: Repos, state: FSMContext
):
2022-10-21 18:06:20 +00:00
await state.reset_state()
2022-10-16 19:57:44 +00:00
field_patterns = {
2022-10-17 11:17:49 +00:00
"Название проекта": str, "Описание": str, "Контакты": str,
"Кол-во участников": int, "Статус": BitString, "Теги": str,
"Категория": str
2022-10-16 19:57:44 +00:00
}
field_values = []
for pattern, field_type in field_patterns.items():
try:
field_values.append(
field_type(re.findall(rf"(?<={pattern}: ).*", message.text)[0])
)
except IndexError:
pass
logger.debug(field_values)
2022-10-17 11:17:49 +00:00
await repo.get_repo(ProjectRepo).add(
*field_values, user_id=message.from_user.id
)