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