diff --git a/back/tgbot/serializers.py b/back/tgbot/serializers.py index b65a981..618b940 100644 --- a/back/tgbot/serializers.py +++ b/back/tgbot/serializers.py @@ -1,6 +1,6 @@ from rest_framework import serializers -from .models import TgItem +from .models import TgItem, TmcField import logging logger = logging.getLogger("root") @@ -14,5 +14,5 @@ class TgItemSerializer(serializers.ModelSerializer): class TmcFieldSerializer(serializers.ModelSerializer): class Meta: - model = TgItem + model = TmcField fields = "__all__" \ No newline at end of file diff --git a/back/tgbot/views.py b/back/tgbot/views.py index 2a59097..2c1937f 100644 --- a/back/tgbot/views.py +++ b/back/tgbot/views.py @@ -1,6 +1,7 @@ from django.conf import settings from django.db import models import json +import requests import time from telegram import Update @@ -22,7 +23,7 @@ logger = logging.getLogger("root") class TgItemViewSet(viewsets.ModelViewSet): queryset = TgItem.objects.all().order_by("-updated_at") serializer_class = TgItemSerializer - http_method_names = ["post", "get"] + http_method_names = ["post", "get", "patch"] def retrieve(self, request, pk=None): item = TgItem.objects.get(id=pk) @@ -31,6 +32,10 @@ class TgItemViewSet(viewsets.ModelViewSet): ) return super().retrieve(request, pk) # return Response(serializer.data) + + def partial_update(self, request, *args, **kwargs): + # logger.info(request.data['location_id']) + return super().partial_update(request) @action(detail=False, methods=["post"], url_path=settings.TGBOT["WEBHOOK_URL"]) def send_tg_data(self, request): @@ -44,8 +49,11 @@ class TgItemViewSet(viewsets.ModelViewSet): class TmcFieldViewset(viewsets.ModelViewSet): queryset = TmcField.objects.all() serializer_class = TmcFieldSerializer - http_method_names = ["get"] - + http_method_names = ["get", "patch"] + + def partial_update(self, request, *args, **kwargs): + return super().partial_update(request) + @action(detail=False, methods=["get"], url_path=r"get_name/(?P[^/.]+)") def get_name(self, request, chat_id): TgBotUpdater.my_queue.put({"name": "admin_get_name", "queryset": chat_id}) diff --git a/front/pages/table/[id].vue b/front/pages/table/[id].vue index b0753fb..d651b3b 100644 --- a/front/pages/table/[id].vue +++ b/front/pages/table/[id].vue @@ -8,8 +8,24 @@ const state = reactive({} as { name?: string, location?: { id: number, name: str const loadData = async () => { const items_data = await apiCall(`tgbot/${route.params.id}/`) item.value = items_data + state.id = items_data.id state.name = items_data.name state.location = items_data.location.id + state.tmc = items_data.tmc.map(el => { + return { + name: el.tmc.name, + id: el.id, + fields: el.field.map(item => { + return { + name: item.field.name, + comment: item.field.comment, + id: item.id, + text: item.text, + file_id: item.file_id + } + }) + } + }) } const loadTer = async () => { const terdeep_data = await apiCall>(`tmc/terdeep/?size=1000`) @@ -17,7 +33,7 @@ const loadTer = async () => { } const search = (q: string) => { if (q) { - return terdeep.value.filter((el:any) => el.name.toLowerCase().indexOf(q.toLowerCase()) !== -1).slice(0, 10) + return terdeep.value.filter((el: any) => el.name.toLowerCase().indexOf(q.toLowerCase()) !== -1).slice(0, 10) } else { return terdeep.value.slice(0, 10) } @@ -26,27 +42,35 @@ onMounted(async () => { await loadData() loadTer() }) +const patchField = async (field) => { + await apiCall(`tgbot/items/${field.id}/`, 'PATCH', { text: field.text }) +} +const patchItem = async () => { + await apiCall(`tgbot/${state.id}/`, 'PATCH', { name: state.name, location: state.location }) +}