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