diff --git a/back/tgbot/views.py b/back/tgbot/views.py index 0457176..deb8e6d 100644 --- a/back/tgbot/views.py +++ b/back/tgbot/views.py @@ -1,14 +1,13 @@ from django.conf import settings from django.db import models -from django.http import StreamingHttpResponse, HttpResponse +from django.http import HttpResponse import json import time import boto3 -import io from telegram import Update -from rest_framework import mixins, viewsets +from rest_framework import viewsets, status from rest_framework.response import Response from rest_framework.decorators import action @@ -27,7 +26,7 @@ logger = logging.getLogger("root") class TgItemViewSet(viewsets.ModelViewSet): queryset = TgItem.objects.all().order_by("-created_at") serializer_class = TgItemSerializer - http_method_names = ["post", "get", "patch"] + http_method_names = ["post", "get", "patch", "delete"] permission_classes = () authentication_classes = () @@ -47,6 +46,13 @@ class TgItemViewSet(viewsets.ModelViewSet): request.data["location"] = 35 return super().partial_update(request) + def destroy(self, request, *args, **kwargs): + instance = self.get_object() + if instance.tmc.count() == 0: + return super().destroy(request) + else: + return Response(status=status.HTTP_204_NO_CONTENT) + @action(detail=False, methods=["post"], url_path=settings.TGBOT["WEBHOOK_URL"]) def send_tg_data(self, request): tg_bot_updater_instance.my_queue.put( @@ -109,7 +115,7 @@ class TmcFieldViewset(viewsets.ModelViewSet): aws_secret_access_key=settings.SELECTEL["secret"], ) get_object_response = s3.get_object(Bucket="inventorization", Key=file_id) - image = get_object_response["Body"].read() - response = HttpResponse(image, content_type='image/jpeg') - response['Content-Disposition'] = 'inline; filename="image.jpeg"' - return response \ No newline at end of file + image = get_object_response["Body"].read() + response = HttpResponse(image, content_type="image/jpeg") + response["Content-Disposition"] = 'inline; filename="image.jpeg"' + return response diff --git a/front/pages/table/index.vue b/front/pages/table/index.vue index c2b3ff1..90aecd6 100644 --- a/front/pages/table/index.vue +++ b/front/pages/table/index.vue @@ -6,12 +6,14 @@ const items = ref() const page = ref(1) const pagination = ref({ total: 10, pageCount: 10 }) const user_id = ref() +const loading = ref(false) if (process.env.NODE_ENV == 'development') { user_id.value = '' } const loadData = async () => { + loading.value = true const items_data = await apiCall>(`tgbot/?page=${page.value}&user_id=${user_id.value || ''}`) const res = items_data.results res.map(item => { @@ -22,6 +24,7 @@ const loadData = async () => { items.value = res pagination.value.total = items_data.count pagination.value.pageCount = items_data.per_page + loading.value = false } onMounted(loadData) watch(page, loadData) @@ -45,6 +48,11 @@ const testCallback = (user: any) => { user_id.value = user.id loadData() } + +const deleteInv = async (id: string) => { + const res = await apiCall>(`tgbot/${id}/`, 'delete') + loadData() +}