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): async def add_tmc(self, update: Update, context: CallbackContext):
query = update.callback_query query = update.callback_query
await update.effective_message.edit_reply_markup(InlineKeyboardMarkup([])) if update.callback_query:
await query.answer() await update.effective_message.edit_reply_markup(InlineKeyboardMarkup([]))
await query.answer()
tmc_id = query.data.split("@")[-1] tmc_id = query.data.split("@")[-1]
tmc = await CustomTable.objects.aget(id=tmc_id) tmc = await CustomTable.objects.aget(id=tmc_id)
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,17 +157,15 @@ 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
await update.effective_message.edit_reply_markup(InlineKeyboardMarkup([])) if update.callback_query:
await query.answer() await update.effective_message.edit_reply_markup(InlineKeyboardMarkup([]))
await query.answer()
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"])
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)
@ -298,20 +302,16 @@ class TgBot:
element.text = update.message.text element.text = update.message.text
await element.asave() 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: 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,12 +18,22 @@ 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(
Update.de_json(data=json.loads(request.body), bot=TgBot.app.bot) Update.de_json(data=json.loads(request.body), bot=TgBot.app.bot)
) )
return Response({"result": "ok"}) return Response({"result": "ok"})
# return super().create(request, *args, **kwargs) # return super().create(request, *args, **kwargs)