updated at
This commit is contained in:
parent
e01a416c76
commit
679996692a
|
@ -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 "Текст сохранен"
|
||||
)
|
||||
|
|
|
@ -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})
|
||||
|
|
Loading…
Reference in New Issue