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.conf import settings
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
from .apps import TgBotUpdater
|
from .apps import TgBotUpdater
|
||||||
from .models import TgItem, TmcElement, TmcField
|
from .models import TgItem, TmcElement, TmcField
|
||||||
|
@ -151,8 +152,18 @@ class TgBot:
|
||||||
def format_inv(self, inv):
|
def format_inv(self, inv):
|
||||||
return f"Инвентаризация `{inv.name}` от `{inv.created_at.strftime('%x')}`"
|
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):
|
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):
|
def format_tmc_name(self, tmc):
|
||||||
return f"Название ТМЦ `{tmc.name}`"
|
return f"Название ТМЦ `{tmc.name}`"
|
||||||
|
@ -202,6 +213,7 @@ class TgBot:
|
||||||
await tmc_element.field.aadd(tmc_field)
|
await tmc_element.field.aadd(tmc_field)
|
||||||
|
|
||||||
await inv.tmc.aadd(tmc_element)
|
await inv.tmc.aadd(tmc_element)
|
||||||
|
await inv.asave()
|
||||||
|
|
||||||
context.chat_data["tmc"] = tmc_element.id
|
context.chat_data["tmc"] = tmc_element.id
|
||||||
context.chat_data["step"] = "add_tmc"
|
context.chat_data["step"] = "add_tmc"
|
||||||
|
@ -261,7 +273,7 @@ class TgBot:
|
||||||
text = "\n".join(
|
text = "\n".join(
|
||||||
[
|
[
|
||||||
self.format_inv(inv),
|
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(
|
text = "\n".join(
|
||||||
[
|
[
|
||||||
self.format_inv(inv),
|
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_tmc_name(tmc),
|
||||||
f"Что вы загружаете?",
|
f"Что вы загружаете?",
|
||||||
]
|
]
|
||||||
|
@ -329,7 +341,8 @@ 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_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)
|
||||||
|
|
||||||
|
@ -339,7 +352,7 @@ class TgBot:
|
||||||
"\n".join(
|
"\n".join(
|
||||||
[
|
[
|
||||||
self.format_inv(inv),
|
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_tmc_name(tmc),
|
||||||
self.format_element(field),
|
self.format_element(field),
|
||||||
f"Загрузите фото или пришлите текст",
|
f"Загрузите фото или пришлите текст",
|
||||||
|
@ -363,6 +376,8 @@ class TgBot:
|
||||||
element.text = update.message.text
|
element.text = update.message.text
|
||||||
|
|
||||||
await element.asave()
|
await element.asave()
|
||||||
|
await inv.asave()
|
||||||
|
|
||||||
await update.effective_message.reply_markdown_v2(
|
await update.effective_message.reply_markdown_v2(
|
||||||
"Изображение сохранено" if update.message.photo else "Текст сохранен"
|
"Изображение сохранено" if update.message.photo else "Текст сохранен"
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.db import models
|
||||||
import json
|
import json
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
@ -19,10 +20,18 @@ logger = logging.getLogger("root")
|
||||||
|
|
||||||
|
|
||||||
class TgItemViewSet(viewsets.ModelViewSet):
|
class TgItemViewSet(viewsets.ModelViewSet):
|
||||||
queryset = TgItem.objects.all().order_by('-updated_at')
|
queryset = TgItem.objects.all().order_by("-updated_at")
|
||||||
serializer_class = TgItemSerializer
|
serializer_class = TgItemSerializer
|
||||||
http_method_names = ["post", "get"]
|
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"])
|
@action(detail=False, methods=["post"], url_path=settings.TGBOT["WEBHOOK_URL"])
|
||||||
def send_tg_data(self, request):
|
def send_tg_data(self, request):
|
||||||
TgBotUpdater.my_queue.put(
|
TgBotUpdater.my_queue.put(
|
||||||
|
@ -51,6 +60,7 @@ class TmcFieldViewset(viewsets.ModelViewSet):
|
||||||
del TgBotUpdater.return_values[chat_id]
|
del TgBotUpdater.return_values[chat_id]
|
||||||
break
|
break
|
||||||
return Response(response)
|
return Response(response)
|
||||||
|
|
||||||
@action(detail=False, methods=["get"], url_path=r"get_image/(?P<field_id>[^/.]+)")
|
@action(detail=False, methods=["get"], url_path=r"get_image/(?P<field_id>[^/.]+)")
|
||||||
def get_image(self, request, field_id):
|
def get_image(self, request, field_id):
|
||||||
TgBotUpdater.my_queue.put({"name": "admin_get_image", "queryset": field_id})
|
TgBotUpdater.my_queue.put({"name": "admin_get_image", "queryset": field_id})
|
||||||
|
|
Loading…
Reference in New Issue