updated at

This commit is contained in:
Kseninia Mikhaylova 2024-07-19 13:51:42 +03:00
parent e01a416c76
commit 679996692a
2 changed files with 31 additions and 6 deletions

View File

@ -27,6 +27,7 @@ from telegram.constants import ParseMode
from django.conf import settings
from django.urls import reverse
from django.db import models
from .apps import TgBotUpdater
from .models import TgItem, TmcElement, TmcField
@ -151,8 +152,18 @@ class TgBot:
def format_inv(self, inv):
return f"Инвентаризация `{inv.name}` от `{inv.created_at.strftime('%x')}`"
async def get_tmc_count(self, inv):
tmc_count = []
async for e in inv.tmc.values("tmc__name").annotate(
count=models.Count("tmc__name")
):
tmc_count.append(e)
return tmc_count
def format_tmc_count(self, tmc_count):
return f"Количество ТМЦ {tmc_count}"
res = ["Всего ТМЦ:"]
res.append(", ".join([f"{e['tmc__name']} \({e['count']}\)" for e in tmc_count]))
return " ".join(res)
def format_tmc_name(self, tmc):
return f"Название ТМЦ `{tmc.name}`"
@ -202,6 +213,7 @@ class TgBot:
await tmc_element.field.aadd(tmc_field)
await inv.tmc.aadd(tmc_element)
await inv.asave()
context.chat_data["tmc"] = tmc_element.id
context.chat_data["step"] = "add_tmc"
@ -261,7 +273,7 @@ class TgBot:
text = "\n".join(
[
self.format_inv(inv),
self.format_tmc_count(await inv.tmc.acount()),
self.format_tmc_count(await self.get_tmc_count(inv)),
"Выберите, какую ТМЦ вы осматриваете:",
]
)
@ -302,7 +314,7 @@ class TgBot:
text = "\n".join(
[
self.format_inv(inv),
self.format_tmc_count(await inv.tmc.acount()),
self.format_tmc_count(await self.get_tmc_count(inv)),
self.format_tmc_name(tmc),
f"Что вы загружаете?",
]
@ -329,7 +341,8 @@ 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"])
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)
@ -339,7 +352,7 @@ class TgBot:
"\n".join(
[
self.format_inv(inv),
self.format_tmc_count(await inv.tmc.acount()),
self.format_tmc_count(await self.get_tmc_count(inv)),
self.format_tmc_name(tmc),
self.format_element(field),
f"Загрузите фото или пришлите текст",
@ -363,6 +376,8 @@ class TgBot:
element.text = update.message.text
await element.asave()
await inv.asave()
await update.effective_message.reply_markdown_v2(
"Изображение сохранено" if update.message.photo else "Текст сохранен"
)

View File

@ -1,4 +1,5 @@
from django.conf import settings
from django.db import models
import json
import time
@ -19,10 +20,18 @@ logger = logging.getLogger("root")
class TgItemViewSet(viewsets.ModelViewSet):
queryset = TgItem.objects.all().order_by('-updated_at')
queryset = TgItem.objects.all().order_by("-updated_at")
serializer_class = TgItemSerializer
http_method_names = ["post", "get"]
def retrieve(self, request, pk=None):
item = TgItem.objects.get(id=pk)
logger.info(
item.tmc.values("tmc__name").annotate(count=models.Count("tmc__name"))
)
return super().retrieve(request, pk)
# return Response(serializer.data)
@action(detail=False, methods=["post"], url_path=settings.TGBOT["WEBHOOK_URL"])
def send_tg_data(self, request):
TgBotUpdater.my_queue.put(
@ -51,6 +60,7 @@ class TmcFieldViewset(viewsets.ModelViewSet):
del TgBotUpdater.return_values[chat_id]
break
return Response(response)
@action(detail=False, methods=["get"], url_path=r"get_image/(?P<field_id>[^/.]+)")
def get_image(self, request, field_id):
TgBotUpdater.my_queue.put({"name": "admin_get_image", "queryset": field_id})