Files
bbs/main/api/serializers.py
T
Nikolai R Kristiansen dcd8edaaa6 🚨 Add pre-commit
Format code
Add bin/run
2022-01-16 22:49:21 +01:00

50 lines
1.4 KiB
Python
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from django.db.models import Count, Sum
from rest_framework import serializers
from rest_framework.serializers import ModelSerializer
from main.models import Order, OrderLine, Product
class ProductSerializer(ModelSerializer):
class Meta:
model = Product
fields = "__all__"
class ProductStatSerializer(ModelSerializer):
EXTERNAL_USER = "Ekstern"
counts = serializers.SerializerMethodField()
def _format_counts(self, per_user):
per_user = list(per_user)
for row in per_user:
first = row.pop("order__customer__first_name")
last = row.pop("order__customer__last_name")
if first is None:
who = self.EXTERNAL_USER
else:
who = "{} {}".format(first, last)
row["full_name"] = who
return per_user
def get_counts(self, obj):
name_fields = ["order__customer__first_name", "order__customer__last_name"]
per_user = OrderLine.objects.filter(product=obj)
per_user = per_user.values(*name_fields).annotate(amount_total=Sum("amount")).order_by("-amount_total")
return self._format_counts(per_user)
class Meta:
model = Product
fields = [
"id",
"name",
"description",
"image",
"inventory_amount",
"active",
"created",
"counts",
]