add org type to device login response - temporary livestock rancher statistic

This commit is contained in:
2025-09-29 13:37:48 +03:30
parent f714d86ea5
commit 2f350c0dcf
3 changed files with 32 additions and 13 deletions

View File

@@ -10,6 +10,7 @@ from rest_framework import serializers
from apps.herd.models import Herd, Rancher
from django.db.transaction import atomic
class HerdSerializer(serializers.ModelSerializer):
""" Herd Serializer """
@@ -46,7 +47,6 @@ class RancherSerializer(serializers.ModelSerializer):
rancher = Rancher.objects.create(**validated_data) # create rancher
if 'livestock' in data.keys():
live_stocks = data['livestock']
print(live_stocks)
livestock_types = {stock.id: stock for stock in livestock_models.LiveStockType.objects.all()}
for stock in live_stocks:

View File

@@ -1,6 +1,6 @@
from apps.livestock.models import LiveStock, TemporaryLiveStock
from decimal import Decimal
from apps.herd.models import Rancher
from apps.livestock.models import LiveStock
from apps.warehouse.models import (
InventoryEntry,
InventoryQuotaSaleItem
@@ -16,7 +16,9 @@ def get_rancher_statistics(rancher: Rancher = None) -> typing.Any:
""" get statistics of a rancher """ # noqa
livestocks = LiveStock.objects.filter(herd__rancher=rancher) # noqa
temporary_livestock = TemporaryLiveStock.objects.filter(rancher=rancher)
if livestocks:
stats = livestocks.aggregate(
herd_count=Count("herd", distinct=True),
light_count=Count('id', filter=Q(weight_type='L')),
@@ -27,10 +29,26 @@ def get_rancher_statistics(rancher: Rancher = None) -> typing.Any:
camel=Count('id', filter=Q(type__name='شتر')),
horse=Count('id', filter=Q(type__name='بز')),
)
else:
stats = temporary_livestock.aggregate(
herd_count=0,
light_count=Count('id', filter=Q(livestock_type__weight_type='L')),
heavy_count=Count('id', filter=Q(livestock_type__weight_type='H')),
sheep=Count('id', filter=Q(livestock_type__name='گوسفند')), # noqa
goat=Count('id', filter=Q(livestock_type__name='بز')),
cow=Count('id', filter=Q(livestock_type__name='گاو')),
camel=Count('id', filter=Q(livestock_type__name='شتر')),
horse=Count('id', filter=Q(livestock_type__name='بز')),
)
return [{'name': key, 'value': value} for key, value in stats.items()], stats
def rancher_quota_weight(rancher, inventory_entry: InventoryEntry = None, distribution: QuotaDistribution = None):
def rancher_quota_weight(
rancher: Rancher,
inventory_entry: InventoryEntry = None,
distribution: QuotaDistribution = None
):
"""
:param rancher: Rancher instance
:param inventory_entry: InventoryEntry instance

View File

@@ -98,6 +98,7 @@ class POSDeviceViewSet(viewsets.ModelViewSet, POSDeviceMixin):
'name': device_owner_org.name,
'en_name': device_owner_org.en_name,
'phone': device_owner_org.phone,
'type': device_owner_org.type.name,
}
return Response({