add one tmc
This commit is contained in:
parent
3922bd3454
commit
431655eaac
|
@ -1,12 +1,16 @@
|
|||
import uuid
|
||||
from django.db import models
|
||||
|
||||
from tmc.models import CustomTable
|
||||
|
||||
|
||||
class Item(models.Model):
|
||||
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||||
user_id = models.BigIntegerField()
|
||||
name = models.CharField(max_length=255)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
tmc = models.ManyToManyField(CustomTable)
|
||||
|
||||
def __str__(self):
|
||||
return f"Tg item {self.id}"
|
||||
|
|
|
@ -16,6 +16,7 @@ from telegram.constants import ParseMode, ChatType, MessageEntityType
|
|||
|
||||
from .apps import TgBotClass
|
||||
from .models import Item
|
||||
from tmc.models import CustomTable, BaseCustomField
|
||||
|
||||
import logging
|
||||
|
||||
|
@ -29,7 +30,7 @@ class TgBotApp:
|
|||
await update.message.reply_markdown_v2(
|
||||
(
|
||||
"Это бот для проведения инвентаризации\n"
|
||||
"/inv - начать новую инвентаризацию"
|
||||
"/inv \-\- начать новую инвентаризацию"
|
||||
),
|
||||
# reply_markup=ForceReply(selective=True),
|
||||
reply_parameters=ReplyParameters(message_id=update.message.message_id),
|
||||
|
@ -39,8 +40,9 @@ class TgBotApp:
|
|||
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 current_step and update.message.text == "/inv":
|
||||
inv = await sync_to_async(Item.objects.create)(user_id=user.id)
|
||||
inv = await Item.objects.acreate(user_id=user.id)
|
||||
await update.message.reply_markdown_v2(
|
||||
(
|
||||
f"Специалист {user.name or user.full_name}, ID {user.id}\n"
|
||||
|
@ -49,21 +51,51 @@ class TgBotApp:
|
|||
),
|
||||
reply_parameters=ReplyParameters(message_id=update.message.message_id),
|
||||
)
|
||||
context.chat_data["step"] = "name"
|
||||
context.chat_data["inv"] = inv.id
|
||||
context.chat_data["step"] = "name"
|
||||
|
||||
elif current_step is "name":
|
||||
inv = await sync_to_async(Item.objects.get)(id=context.chat_data["inv"])
|
||||
inv = await Item.objects.aget(id=context.chat_data["inv"])
|
||||
inv.name = update.message.text
|
||||
await sync_to_async(inv.save)()
|
||||
await inv.asave()
|
||||
|
||||
tmc = []
|
||||
async for e in CustomTable.objects.all():
|
||||
tmc.append(f"`{e.name}`")
|
||||
|
||||
await update.message.reply_markdown_v2(
|
||||
(
|
||||
f"Инвентаризация `#{inv.id}`\n"
|
||||
f"Название объекта `{inv.name}`"
|
||||
f"Название объекта `{inv.name}`\n"
|
||||
f"Объекты ТМЦ {', '.join(tmc)}\n"
|
||||
"Вставьте название объекта, который будете добавлять"
|
||||
),
|
||||
reply_parameters=ReplyParameters(message_id=update.message.message_id),
|
||||
)
|
||||
# context.chat_data["step"] = "add"
|
||||
logger.info(tmc)
|
||||
context.chat_data["step"] = "add_tmc"
|
||||
|
||||
elif current_step is "add_tmc":
|
||||
tmc_name = update.message.text
|
||||
tmc = await CustomTable.objects.aget(name=tmc_name)
|
||||
|
||||
inv = await Item.objects.aget(id=context.chat_data["inv"])
|
||||
await inv.tmc.aadd(tmc)
|
||||
|
||||
fields = []
|
||||
async for e in tmc.fields.all():
|
||||
fields.append(f"`{e.name}`")
|
||||
await update.message.reply_markdown_v2(
|
||||
(
|
||||
f"Необходимые данные {', '.join(fields)}"
|
||||
),
|
||||
reply_parameters=ReplyParameters(message_id=update.message.message_id),
|
||||
)
|
||||
# context.chat_data["step"] = "name"
|
||||
|
||||
if "step" in context.chat_data and context.chat_data["step"] == current_step:
|
||||
context.chat_data["step"] = None
|
||||
context.chat_data["inv"] = None
|
||||
|
||||
async def error(self, update: Update, context: CallbackContext):
|
||||
logger.info(f"error in tgbot {context.error}\nReply update")
|
||||
|
|
Loading…
Reference in New Issue