From c2edb2fe2ab2dabce5dc57785d9422460183d8a0 Mon Sep 17 00:00:00 2001 From: aarizona Date: Thu, 30 May 2024 10:22:31 +0300 Subject: [PATCH] counters --- .gitignore | 3 +- back/inventory/serializers.py | 34 ++++++++++++++++--- back/inventory/views.py | 19 ++++------- dev.sh | 4 +-- front/app.config.ts | 6 ++++ front/app.vue | 8 +++-- front/assets/logo.svg | 1 + front/assets/main.scss | 5 ++- front/components/edit.vue | 11 ++++-- front/helpers.ts | 10 ++++-- front/nuxt.config.ts | 2 +- front/package-lock.json | 28 +++++++++++++++ front/package.json | 1 + front/pages/organization/index.vue | 4 +-- .../p_[org_id]/i_[inv_id]/edit.vue | 6 ++-- .../p_[org_id]/i_[inv_id]/index.vue | 4 +-- front/pages/organization/p_[org_id]/index.vue | 4 +-- 17 files changed, 112 insertions(+), 38 deletions(-) create mode 100644 front/app.config.ts create mode 100644 front/assets/logo.svg diff --git a/.gitignore b/.gitignore index 0a95508..9db7fba 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .idea/ -.vscode/ \ No newline at end of file +.vscode/ +.venv/ \ No newline at end of file diff --git a/back/inventory/serializers.py b/back/inventory/serializers.py index 50383b7..e8958ee 100644 --- a/back/inventory/serializers.py +++ b/back/inventory/serializers.py @@ -1,18 +1,44 @@ from rest_framework import serializers from .models import Element, InventoryItem, Partner +import logging + +logger = logging.getLogger("root") class PartnerSerializer(serializers.ModelSerializer): + total_inventory = serializers.SerializerMethodField() + class Meta: model = Partner - fields = ["id", "external_id"] - + fields = ["id", "external_id", "name", "total_inventory"] + + def get_total_inventory(self, instance): + return InventoryItem.objects.filter(partner=instance).count() + + class InventorySerializer(serializers.ModelSerializer): + partner_name = serializers.CharField(source="partner.name", read_only=True) + total_elements = serializers.SerializerMethodField() + class Meta: model = InventoryItem - fields = ["id", "partner"] + fields = ["id", "partner", "partner_name", "name", "total_elements"] + + def get_total_elements(self, instance): + return Element.objects.filter(inventory=instance).count() + class ElementSerializer(serializers.ModelSerializer): + inventory_name = serializers.CharField(source="inventory.name", read_only=True) + class Meta: model = Element - fields = ["id", "external_id", "element_id", "photo", "additional_text", "inventory"] + fields = [ + "id", + "external_id", + "element_id", + "photo", + "additional_text", + "inventory", + "inventory_name", + ] diff --git a/back/inventory/views.py b/back/inventory/views.py index 175692e..666f034 100644 --- a/back/inventory/views.py +++ b/back/inventory/views.py @@ -1,4 +1,3 @@ -import urllib import requests from django.conf import settings @@ -24,13 +23,6 @@ class PartnerViewSet(viewsets.ModelViewSet): queryset = Partner.objects.all() serializer_class = PartnerSerializer - def create(self, validated_data): - logger.info("create") - super().create(**validated_data) - - def get(self, request, **kwargs): - logger.info("get") - @action(detail=False, methods=["get"], url_path=r"external") def get_remote_partners(self, request): params = { @@ -69,10 +61,10 @@ def get_depth_cat(id): class InventoryItemViewSet(viewsets.ModelViewSet): queryset = InventoryItem.objects.all() serializer_class = InventorySerializer - + def get_queryset(self): queryset = InventoryItem.objects.all() - partner = self.request.query_params.get('partner_id') + partner = self.request.query_params.get("partner_id") if partner is not None: queryset = queryset.filter(partner=partner) return queryset @@ -85,10 +77,10 @@ class ElementViewSet(viewsets.ModelViewSet): queryset = Element.objects.all() serializer_class = ElementSerializer - + def get_queryset(self): queryset = Element.objects.all() - inventory = self.request.query_params.get('inventory_id') + inventory = self.request.query_params.get("inventory_id") if inventory is not None: queryset = queryset.filter(inventory=inventory) return queryset @@ -105,7 +97,8 @@ class ElementViewSet(viewsets.ModelViewSet): # check if inventory exist if ( - "inventory" in data + "inventory" + in data # and InventoryItem.objects.filter(id=data["inventory"]).exists() ): inventory_object = InventoryItem.objects.get(id=data["inventory"]) diff --git a/dev.sh b/dev.sh index 7d9121c..15d80e0 100755 --- a/dev.sh +++ b/dev.sh @@ -1,3 +1,3 @@ #!/bin/bash -xterm -title "To Invetory FRONT" -e "cd front && npm run dev"& -xterm -title "To Invetory BACK" -e "poetry run task server" \ No newline at end of file +x-terminal-emulator -title "To Invetory FRONT" -e "cd front && npm run dev"& +x-terminal-emulator -title "To Invetory BACK" -e "poetry run task server" \ No newline at end of file diff --git a/front/app.config.ts b/front/app.config.ts new file mode 100644 index 0000000..e335bba --- /dev/null +++ b/front/app.config.ts @@ -0,0 +1,6 @@ +export default defineAppConfig({ + ui: { + primary: 'pink', + gray: 'cool' + } +}) \ No newline at end of file diff --git a/front/app.vue b/front/app.vue index f7ddcf5..462f1d5 100644 --- a/front/app.vue +++ b/front/app.vue @@ -1,13 +1,17 @@