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,6 +135,7 @@ class TgBot:
async def add_tmc(self, update: Update, context: CallbackContext): async def add_tmc(self, update: Update, context: CallbackContext):
query = update.callback_query query = update.callback_query
if update.callback_query:
await update.effective_message.edit_reply_markup(InlineKeyboardMarkup([])) await update.effective_message.edit_reply_markup(InlineKeyboardMarkup([]))
await query.answer() await query.answer()
@ -143,6 +144,10 @@ class TgBot:
tmc_element = await TmcElement.objects.acreate(tmc=tmc) tmc_element = await TmcElement.objects.acreate(tmc=tmc)
inv = await TgItem.objects.aget(id=context.chat_data["inv"]) 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) await inv.tmc.aadd(tmc_element)
context.chat_data["tmc"] = tmc_element.id context.chat_data["tmc"] = tmc_element.id
@ -152,6 +157,7 @@ class TgBot:
async def add_element(self, update: Update, context: CallbackContext): async def add_element(self, update: Update, context: CallbackContext):
query = update.callback_query query = update.callback_query
if update.callback_query:
await update.effective_message.edit_reply_markup(InlineKeyboardMarkup([])) await update.effective_message.edit_reply_markup(InlineKeyboardMarkup([]))
await query.answer() await query.answer()
@ -159,10 +165,7 @@ class TgBot:
tmc = await inv.tmc.aget(id=context.chat_data["tmc"]) tmc = await inv.tmc.aget(id=context.chat_data["tmc"])
field_id = query.data.split("@")[-1] field_id = query.data.split("@")[-1]
field = await BaseCustomField.objects.aget(id=field_id) tmc_field = await tmc.field.aget(id=field_id)
tmc_field = await TmcField.objects.acreate(field=field)
tmc.field.aadd(field)
context.chat_data["element"] = tmc_field.id context.chat_data["element"] = tmc_field.id
context.chat_data["step"] = "add_element" context.chat_data["step"] = "add_element"
@ -234,8 +237,9 @@ class TgBot:
tmc = await CustomTable.objects.aget(id=tmc_element.tmc_id) tmc = await CustomTable.objects.aget(id=tmc_element.tmc_id)
fields = [] fields = []
async for e in tmc.fields.all(): async for e in tmc_element.field.filter(text=None):
fields.append({"name": e.name, "id": e.id}) f = await BaseCustomField.objects.aget(id=e.field_id)
fields.append({"name": f.name, "id": e.id})
keys = chunk(1, fields) keys = chunk(1, fields)
context.chat_data["tmc"] = tmc_element.id context.chat_data["tmc"] = tmc_element.id
@ -268,7 +272,6 @@ class TgBot:
elif current_step == "add_element": elif current_step == "add_element":
inv = await TgItem.objects.aget(id=context.chat_data["inv"]) inv = await TgItem.objects.aget(id=context.chat_data["inv"])
tmc = await inv.tmc.aget(id=context.chat_data["tmc"]) 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"]) element = await TmcField.objects.aget(id=context.chat_data["element"])
field = await BaseCustomField.objects.aget(id=element.field_id) field = await BaseCustomField.objects.aget(id=element.field_id)
@ -288,7 +291,8 @@ class TgBot:
) )
elif current_step == "add_element_data": elif current_step == "add_element_data":
inv = await TgItem.objects.aget(id=context.chat_data["inv"]) 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"]) element = await TmcField.objects.aget(id=context.chat_data["element"])
field = await BaseCustomField.objects.aget(id=element.field_id) field = await BaseCustomField.objects.aget(id=element.field_id)
@ -299,19 +303,15 @@ class TgBot:
await element.asave() await element.asave()
await update.message.reply_markdown_v2( empty_fields = await tmc_element.field.filter(text=None).acount()
( logger.info(empty_fields)
f"Инвентаризация `{inv.name}` от `{inv.created_at.strftime('%x')}`\n" if empty_fields > 0:
f"Количество ТМЦ {await inv.tmc.acount()}\n\n" context.chat_data["step"] = "add_tmc"
f"Название ТМЦ `{tmc.name}`\n" await self.inv(update, context)
f"Элемент `{field.name}`\n" else:
f"Данные загружены" context.chat_data["step"] = "name"
), await self.inv(update, context)
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: else:
logger.info(update.message.entities) logger.info(update.message.entities)
logger.info(f"no step for update {update}") 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 .tgbot import TgBot
from .apps import TgBotUpdater from .apps import TgBotUpdater
from .models import TgItem from .models import TgItem, TmcElement, TmcField
from .serializers import TgItemSerializer from .serializers import TgItemSerializer
import logging import logging
@ -18,7 +18,18 @@ logger = logging.getLogger("root")
class TgItemViewSet(viewsets.ModelViewSet): class TgItemViewSet(viewsets.ModelViewSet):
queryset = TgItem.objects.all() queryset = TgItem.objects.all()
serializer_class = TgItemSerializer 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): def create(self, request, *args, **kwargs):
TgBotUpdater.my_queue.put( TgBotUpdater.my_queue.put(
@ -26,4 +37,3 @@ class TgItemViewSet(viewsets.ModelViewSet):
) )
return Response({"result": "ok"}) return Response({"result": "ok"})
# return super().create(request, *args, **kwargs) # return super().create(request, *args, **kwargs)