many to many
This commit is contained in:
parent
463e7451fb
commit
b118fb7124
|
@ -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)
|
||||
admin.site.register(TmcField)
|
|
@ -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(
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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"<pre>{html.escape(tb_string)}</pre>"
|
||||
)
|
||||
# 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")
|
||||
|
|
Loading…
Reference in New Issue