diff --git a/back/tgbot/admin.py b/back/tgbot/admin.py index 150d3a1..ae66599 100644 --- a/back/tgbot/admin.py +++ b/back/tgbot/admin.py @@ -1,6 +1,7 @@ from django.contrib import admin -from .models import TgItem, TmcElement +from .models import TgItem, TmcElement, TmcField # Register your models here. admin.site.register(TgItem) -admin.site.register(TmcElement) \ No newline at end of file +admin.site.register(TmcElement) +admin.site.register(TmcField) \ No newline at end of file diff --git a/back/tgbot/apps.py b/back/tgbot/apps.py index ddc8ab8..48db087 100644 --- a/back/tgbot/apps.py +++ b/back/tgbot/apps.py @@ -57,7 +57,7 @@ class TgBotUpdater: await TgBot.app.process_update(item) TgBotUpdater.my_queue.task_done() - await asyncio.sleep(3) + await asyncio.sleep(1) async def main(self): await asyncio.gather( diff --git a/back/tgbot/models.py b/back/tgbot/models.py index 7a3466b..68eddd4 100644 --- a/back/tgbot/models.py +++ b/back/tgbot/models.py @@ -15,10 +15,15 @@ def group_based_upload_to(instance, filename): ) +class TmcField(models.Model): + field = models.ForeignKey(BaseCustomField, models.RESTRICT) + text = models.CharField(null=True, blank=True) + + class TmcElement(models.Model): tmc = models.ForeignKey(CustomTable, models.RESTRICT) name = models.CharField(null=True, blank=True) - element = models.ManyToManyField(BaseCustomField) + field = models.ManyToManyField(TmcField) class TgItem(models.Model): diff --git a/back/tgbot/tgbot.py b/back/tgbot/tgbot.py index 9a3ba83..60fdfb1 100644 --- a/back/tgbot/tgbot.py +++ b/back/tgbot/tgbot.py @@ -28,7 +28,7 @@ from telegram.constants import ParseMode from django.conf import settings from .apps import TgBotUpdater -from .models import TmcElement, TgItem +from .models import TgItem, TmcElement, TmcField from tmc.models import CustomTable, BaseCustomField @@ -161,9 +161,10 @@ class TgBot: field_id = query.data.split("@")[-1] field = await BaseCustomField.objects.aget(id=field_id) - await tmc.element.aadd(field) + tmc_field = await TmcField.objects.acreate(field=field) + tmc.field.aadd(field) - context.chat_data["element"] = field.id + context.chat_data["element"] = tmc_field.id context.chat_data["step"] = "add_element" await self.inv(update, context) @@ -267,16 +268,17 @@ 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"]) - element = await tmc.element.aget(id=context.chat_data["element"]) + 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) context.chat_data["step"] = "add_element_data" - await update.effective_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"Элемент `{element.name}`\n" + f"Элемент `{field.name}`\n" f"Загрузите фото или пришлите текст" ), reply_parameters=ReplyParameters( @@ -287,10 +289,11 @@ 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"]) - element = await tmc.element.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) if update.message.photo: - element.photoid = update.message.photo[-1].file_id + element.text = update.message.photo[-1].file_id elif update.message.text: element.text = update.message.text @@ -301,7 +304,7 @@ class TgBot: f"Инвентаризация `{inv.name}` от `{inv.created_at.strftime('%x')}`\n" f"Количество ТМЦ {await inv.tmc.acount()}\n\n" f"Название ТМЦ `{tmc.name}`\n" - f"Элемент `{element.name}`\n" + f"Элемент `{field.name}`\n" f"Данные загружены" ), reply_parameters=ReplyParameters(message_id=update.message.message_id), @@ -322,7 +325,7 @@ class TgBot: ) -> None: """Log the error and send a telegram message to notify the developer.""" # Log the error before we do anything else, so we can see it even if something breaks. - logger.error("Exception while handling an update:", exc_info=context.error) + # logger.error("Exception while handling an update:", exc_info=context.error) # traceback.format_exception returns the usual python message about an exception, but as a # list of strings rather than a single string, so we have to join them together. @@ -343,4 +346,4 @@ class TgBot: f"
{html.escape(tb_string)}
" ) # logger.error(context.error) - logger.info(f"error in tgbot {context.error}\nReply update") + logger.info(f"error in tgbot {context.error}\n{tb_string}\nReply update")