to_inventory/back/tgbot/views.py

46 lines
1.4 KiB
Python

from django.conf import settings
import json
from telegram import Update
from rest_framework import mixins, viewsets
from rest_framework.response import Response
from rest_framework.decorators import action
from .tgbot import TgBot
from .apps import TgBotUpdater
from .models import TgItem, TmcElement, TmcField
from .serializers import TgItemSerializer, TmcFieldSerializer
import logging
logger = logging.getLogger("root")
class TgItemViewSet(viewsets.ModelViewSet):
queryset = TgItem.objects.all()
serializer_class = TgItemSerializer
http_method_names = ["post", "get"]
@action(detail=False, methods=["post"], url_path=settings.TGBOT["WEBHOOK_URL"])
def send_tg_data(self, request):
TgBotUpdater.my_queue.put(
Update.de_json(data=json.loads(request.body), bot=TgBot.app.bot)
)
return Response({"result": "ok"})
# return super().create(request, *args, **kwargs)
class TmcFieldViewset(viewsets.ModelViewSet):
queryset = TmcField.objects.all()
serializer_class = TmcFieldSerializer
http_method_names = ["get"]
@action(detail=False, methods=["get"], url_path=r"get_image/(?P<field_id>[^/.]+)")
def get_image(self, request, field_id):
if TmcField.objects.filter(id=field_id).exists():
field = TmcField.objects.get(id=field_id)
return Response({"fileId": field.text})
else:
raise (FileNotFoundError())