serializer test
This commit is contained in:
parent
6137d78f3f
commit
93b60444ea
|
@ -32,7 +32,8 @@ router.register(r'api/tmc/ter', tmc_views.TerritoryViewSet)
|
|||
router.register(r'api/tmc/terdeep', tmc_views.TerritoryItemViewSet)
|
||||
router.register(r'api/tmc/items', tmc_views.CustomTableViewSet)
|
||||
router.register(r'api/tgbot', tgbot_views.TgItemViewSet)
|
||||
router.register(r'api/tgbot/items', tgbot_views.TmcFieldViewset)
|
||||
router.register(r'api/tgbot_items', tgbot_views.TmcFieldViewset)
|
||||
router.register(r'api/stat', tgbot_views.TmcStatViewset, basename='stat')
|
||||
|
||||
urlpatterns = [
|
||||
path('', include(router.urls)),
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
from rest_framework import serializers
|
||||
|
||||
from tmc.models import Territory
|
||||
from tmc.serializers import TerritorySerializer
|
||||
from .models import TgItem, TmcField
|
||||
import logging
|
||||
|
||||
|
@ -12,7 +14,23 @@ class TgItemSerializer(serializers.ModelSerializer):
|
|||
fields = "__all__"
|
||||
depth = 3
|
||||
|
||||
|
||||
class TgStatItemSerializer(serializers.Serializer):
|
||||
# location = serializers.CharField()
|
||||
location = serializers.SerializerMethodField()
|
||||
inv_count = serializers.IntegerField()
|
||||
|
||||
def get_location(self, obj):
|
||||
queryset = Territory.objects.get(id=obj.get('location__parent'))
|
||||
serializer = TerritorySerializer(queryset)
|
||||
|
||||
return serializer.data
|
||||
|
||||
class Meta:
|
||||
depth = 2
|
||||
|
||||
|
||||
class TmcFieldSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = TmcField
|
||||
fields = "__all__"
|
||||
fields = "__all__"
|
||||
|
|
|
@ -12,11 +12,13 @@ from rest_framework.response import Response
|
|||
from rest_framework.decorators import action
|
||||
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from django.db.models import Count
|
||||
|
||||
from tmc.models import TerritoryItem, Territory
|
||||
from .tgbot import TgBot
|
||||
from .updater import tg_bot_updater_instance
|
||||
from .models import TgItem, TmcField
|
||||
from .serializers import TgItemSerializer, TmcFieldSerializer
|
||||
from .models import TgItem, TmcElement, TmcField
|
||||
from .serializers import TgItemSerializer, TmcFieldSerializer, TgStatItemSerializer
|
||||
|
||||
import logging
|
||||
|
||||
|
@ -119,3 +121,19 @@ class TmcFieldViewset(viewsets.ModelViewSet):
|
|||
response = HttpResponse(image, content_type="image/jpeg")
|
||||
response["Content-Disposition"] = 'inline; filename="image.jpeg"'
|
||||
return response
|
||||
|
||||
|
||||
class TmcStatViewset(viewsets.ViewSet):
|
||||
queryset = TgItem.objects.all().order_by("-created_at")
|
||||
http_method_names = ["get"]
|
||||
|
||||
def list(self, request):
|
||||
queryset = (
|
||||
TgItem.objects.all()
|
||||
.values("location__parent")
|
||||
.annotate(
|
||||
inv_count=Count("location__parent"),
|
||||
)
|
||||
)
|
||||
serializer = TgStatItemSerializer(queryset, many=True)
|
||||
return Response(serializer.data)
|
||||
|
|
|
@ -12,6 +12,12 @@ const links = [
|
|||
icon: 'i-heroicons-pencil',
|
||||
to: '/table'
|
||||
}
|
||||
,
|
||||
{
|
||||
label: 'Статистика',
|
||||
icon: 'i-heroicons-funnel',
|
||||
to: '/stat'
|
||||
}
|
||||
]
|
||||
</script>
|
||||
<template>
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
<template>
|
||||
123
|
||||
</template>
|
|
@ -71,7 +71,7 @@ onMounted(async () => {
|
|||
terdeep.value = [toRaw(state.location)]
|
||||
})
|
||||
const patchField = async (field: { id: number, text: string }) => {
|
||||
await apiCall(`tgbot/items/${field.id}/`, 'patch', { text: field.text })
|
||||
await apiCall(`tgbot_items/${field.id}/`, 'patch', { text: field.text })
|
||||
}
|
||||
const patchItem = async () => {
|
||||
await apiCall(`tgbot/${state.id}/`, 'patch', { name: state.name, location_id: state.location })
|
||||
|
|
|
@ -21,7 +21,7 @@ export const useAuthorsStore = defineStore('authors', {
|
|||
return this.list[name]
|
||||
},
|
||||
async loadOneItem(name: string) {
|
||||
const result_data = await apiCall<string[]>(`tgbot/items/get_name/${name}/`)
|
||||
const result_data = await apiCall<string[]>(`tgbot_items/get_name/${name}/`)
|
||||
if (result_data.length > 0 && result_data[0] !== null) {
|
||||
this.list[name].status = 'success'
|
||||
this.list[name].result = result_data[0]
|
||||
|
|
|
@ -24,7 +24,7 @@ export const useImagesStore = defineStore('images', {
|
|||
let file_url_data
|
||||
|
||||
if (this.list[name].type == 'tg') {
|
||||
file_url_data = await apiCall<string[]>(`tgbot/items/get_image/${name}/`)
|
||||
file_url_data = await apiCall<string[]>(`tgbot_items/get_image/${name}/`)
|
||||
if (file_url_data.length > 0 && file_url_data[0] !== null) {
|
||||
this.list[name].status = 'success'
|
||||
this.list[name].result = file_url_data[0]
|
||||
|
@ -32,7 +32,7 @@ export const useImagesStore = defineStore('images', {
|
|||
this.list[name].status = 'error'
|
||||
}
|
||||
} else if (this.list[name].type == 'aws') {
|
||||
file_url_data = await apiCall<string[]>(`tgbot/items/get_image_s3/${name}/`)
|
||||
file_url_data = await apiCall<string[]>(`tgbot_items/get_image_s3/${name}/`)
|
||||
this.list[name].result = URL.createObjectURL(file_url_data);
|
||||
this.list[name].status = 'success'
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue