From 2f725bbfc7bf4543b11cb9f280f2c80639d2736c Mon Sep 17 00:00:00 2001 From: Kseninia Mikhaylova Date: Thu, 18 Jul 2024 12:55:49 +0300 Subject: [PATCH] add data correct --- back/tgbot/tgbot.py | 50 ++++++++++++++++++++++----------------------- back/tgbot/views.py | 16 ++++++++++++--- 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/back/tgbot/tgbot.py b/back/tgbot/tgbot.py index 60fdfb1..4a2ec5c 100644 --- a/back/tgbot/tgbot.py +++ b/back/tgbot/tgbot.py @@ -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}") diff --git a/back/tgbot/views.py b/back/tgbot/views.py index 46a53a4..400a515 100644 --- a/back/tgbot/views.py +++ b/back/tgbot/views.py @@ -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) -