add data correct

This commit is contained in:
Kseninia Mikhaylova 2024-07-18 12:55:49 +03:00
parent b118fb7124
commit 2f725bbfc7
2 changed files with 38 additions and 28 deletions

View File

@ -135,14 +135,19 @@ class TgBot:
async def add_tmc(self, update: Update, context: CallbackContext):
query = update.callback_query
await update.effective_message.edit_reply_markup(InlineKeyboardMarkup([]))
await query.answer()
if update.callback_query:
await update.effective_message.edit_reply_markup(InlineKeyboardMarkup([]))
await query.answer()
tmc_id = query.data.split("@")[-1]
tmc = await CustomTable.objects.aget(id=tmc_id)
tmc_element = await TmcElement.objects.acreate(tmc=tmc)
inv = await TgItem.objects.aget(id=context.chat_data["inv"])
async for f in tmc.fields.all():
tmc_field = await TmcField.objects.acreate(field=f)
await tmc_element.field.aadd(tmc_field)
await inv.tmc.aadd(tmc_element)
context.chat_data["tmc"] = tmc_element.id
@ -152,17 +157,15 @@ class TgBot:
async def add_element(self, update: Update, context: CallbackContext):
query = update.callback_query
await update.effective_message.edit_reply_markup(InlineKeyboardMarkup([]))
await query.answer()
if update.callback_query:
await update.effective_message.edit_reply_markup(InlineKeyboardMarkup([]))
await query.answer()
inv = await TgItem.objects.aget(id=context.chat_data["inv"])
tmc = await inv.tmc.aget(id=context.chat_data["tmc"])
field_id = query.data.split("@")[-1]
field = await BaseCustomField.objects.aget(id=field_id)
tmc_field = await TmcField.objects.acreate(field=field)
tmc.field.aadd(field)
tmc_field = await tmc.field.aget(id=field_id)
context.chat_data["element"] = tmc_field.id
context.chat_data["step"] = "add_element"
@ -234,8 +237,9 @@ class TgBot:
tmc = await CustomTable.objects.aget(id=tmc_element.tmc_id)
fields = []
async for e in tmc.fields.all():
fields.append({"name": e.name, "id": e.id})
async for e in tmc_element.field.filter(text=None):
f = await BaseCustomField.objects.aget(id=e.field_id)
fields.append({"name": f.name, "id": e.id})
keys = chunk(1, fields)
context.chat_data["tmc"] = tmc_element.id
@ -268,7 +272,6 @@ class TgBot:
elif current_step == "add_element":
inv = await TgItem.objects.aget(id=context.chat_data["inv"])
tmc = await inv.tmc.aget(id=context.chat_data["tmc"])
logger.info(context.chat_data["element"])
element = await TmcField.objects.aget(id=context.chat_data["element"])
field = await BaseCustomField.objects.aget(id=element.field_id)
@ -288,7 +291,8 @@ class TgBot:
)
elif current_step == "add_element_data":
inv = await TgItem.objects.aget(id=context.chat_data["inv"])
tmc = await inv.tmc.aget(id=context.chat_data["tmc"])
tmc_element = await inv.tmc.aget(id=context.chat_data["tmc"])
tmc = await CustomTable.objects.aget(id=tmc_element.tmc_id)
element = await TmcField.objects.aget(id=context.chat_data["element"])
field = await BaseCustomField.objects.aget(id=element.field_id)
@ -298,20 +302,16 @@ class TgBot:
element.text = update.message.text
await element.asave()
empty_fields = await tmc_element.field.filter(text=None).acount()
logger.info(empty_fields)
if empty_fields > 0:
context.chat_data["step"] = "add_tmc"
await self.inv(update, context)
else:
context.chat_data["step"] = "name"
await self.inv(update, context)
await update.message.reply_markdown_v2(
(
f"Инвентаризация `{inv.name}` от `{inv.created_at.strftime('%x')}`\n"
f"Количество ТМЦ {await inv.tmc.acount()}\n\n"
f"Название ТМЦ `{tmc.name}`\n"
f"Элемент `{field.name}`\n"
f"Данные загружены"
),
reply_parameters=ReplyParameters(message_id=update.message.message_id),
reply_markup=ReplyKeyboardRemove(),
)
context.chat_data["element"] = element.id
context.chat_data["step"] = "add_element_data"
else:
logger.info(update.message.entities)
logger.info(f"no step for update {update}")

View File

@ -7,7 +7,7 @@ from rest_framework.response import Response
from .tgbot import TgBot
from .apps import TgBotUpdater
from .models import TgItem
from .models import TgItem, TmcElement, TmcField
from .serializers import TgItemSerializer
import logging
@ -18,12 +18,22 @@ logger = logging.getLogger("root")
class TgItemViewSet(viewsets.ModelViewSet):
queryset = TgItem.objects.all()
serializer_class = TgItemSerializer
http_method_names = ["post"]
http_method_names = ["post", "get"]
def list(self, request, *args, **kwargs):
queryset = TgItem.objects.all()
serializer = TgItemSerializer(queryset, many=True)
inv = TgItem.objects.get(id='73e9fc87-a006-4c53-b3ee-39da6c79dbb5')
el = inv.tmc.get(id=58)
f= el.field.filter(text__isnull=True)
logger.info(f[0].field)
# fields = TmcField.objects.filter
return Response(serializer.data)
def create(self, request, *args, **kwargs):
TgBotUpdater.my_queue.put(
Update.de_json(data=json.loads(request.body), bot=TgBot.app.bot)
)
return Response({"result": "ok"})
# return super().create(request, *args, **kwargs)