territory set

This commit is contained in:
Kseninia Mikhaylova 2024-07-22 10:44:14 +03:00
parent 92a1b96e37
commit 8691855301
1 changed files with 43 additions and 4 deletions

View File

@ -111,6 +111,13 @@ class TgBot:
TgBot.app.add_handler(CallbackQueryHandler(self.terdeep_back, "terdeep_back"))
TgBot.app.add_handler(CallbackQueryHandler(self.terdeep_next, "terdeep_next"))
TgBot.app.add_handler(
MessageHandler(
filters.ChatType.PRIVATE & filters.Regex(r"/terdeep_(\d.*)"),
self.terdeep_set,
)
)
TgBot.app.add_handler(CallbackQueryHandler(self.stop_inv, "stop_inv"))
TgBot.app.add_handler(CallbackQueryHandler(self.get_inv, r"get_inv@(.*?)"))
TgBot.app.add_handler(CallbackQueryHandler(self.add_tmc, r"add_tmc@(.*?)"))
@ -123,9 +130,9 @@ class TgBot:
await update.message.reply_markdown_v2(
(
"Это бот для проведения инвентаризации\n"
"/my \-\- продолжить инвентаризацию\n"
"/inv \-\- начать новую инвентаризацию"
"/ter \-\- список территорий"
"/my \-\- продолжить инвентаризацию\n"
"/inv \-\- начать новую инвентаризацию\n"
),
# reply_markup=ForceReply(selective=True),
reply_parameters=ReplyParameters(message_id=update.message.message_id),
@ -208,6 +215,8 @@ class TgBot:
inv_id = query.data.split("@")[-1]
inv = await TgItem.objects.aget(id=inv_id)
context.chat_data["terdeep_value"] = inv.location_id
context.chat_data["inv"] = inv.id
context.chat_data["step"] = "name"
@ -366,27 +375,57 @@ class TgBot:
update, context, "terdeep", TerritoryItem.objects.filter(parent_id=parent)
)
async def terdeep_set(self, update: Update, context: CallbackContext):
context.chat_data["terdeep_value"] = re.findall(
r"/terdeep_(\d.*)", update.effective_message.text
)[0]
text = (
"Вы выбрали территорию инвентаризации\n"
"Теперь вы можете начать инвентаризацию /inv"
)
await update.effective_message.reply_markdown_v2(
text=text,
reply_parameters=ReplyParameters(
message_id=update.effective_message.message_id
),
)
async def inv(self, update: Update, context: CallbackContext):
user = update.effective_user
current_step = context.chat_data.get("step", None)
logger.info(f"Step {current_step} from user {user.full_name}")
if not context.chat_data.get("terdeep_value", None):
await update.effective_message.reply_markdown_v2(
text=("Вы не выбрали территорию /ter"),
reply_parameters=ReplyParameters(
message_id=update.effective_message.message_id
),
)
return
if update.effective_message.text == "/inv":
context.chat_data["step"] = "name"
current_ter_id = context.chat_data.get("terdeep_value", None)
current_ter = await TerritoryItem.objects.aget(id=current_ter_id)
await update.effective_message.reply_markdown_v2(
"\n".join([self.format_username(user), f"Введите название объекта"]),
reply_parameters=ReplyParameters(
message_id=update.effective_message.message_id
),
reply_markup=ReplyKeyboardMarkup([[KeyboardButton(current_ter.name)]]),
)
if current_step == "name":
if not context.chat_data.get("inv", None):
loc = await TerritoryItem.objects.aget(id=35)
inv = await TgItem.objects.acreate(user_id=user.id, location=loc)
current_ter_id = context.chat_data.get("terdeep_value", None)
current_ter = await TerritoryItem.objects.aget(id=current_ter_id)
inv = await TgItem.objects.acreate(user_id=user.id, location=current_ter)
inv.name = update.message.text
await inv.asave()
res = await update.effective_message.reply_text('Ок, сохранено', reply_markup=ReplyKeyboardRemove())
await res.delete()
else:
inv = await TgItem.objects.aget(id=context.chat_data["inv"])