add org type to device login response - temporary livestock rancher statistic
This commit is contained in:
@@ -10,6 +10,7 @@ from rest_framework import serializers
|
|||||||
from apps.herd.models import Herd, Rancher
|
from apps.herd.models import Herd, Rancher
|
||||||
from django.db.transaction import atomic
|
from django.db.transaction import atomic
|
||||||
|
|
||||||
|
|
||||||
class HerdSerializer(serializers.ModelSerializer):
|
class HerdSerializer(serializers.ModelSerializer):
|
||||||
""" Herd Serializer """
|
""" Herd Serializer """
|
||||||
|
|
||||||
@@ -46,7 +47,6 @@ class RancherSerializer(serializers.ModelSerializer):
|
|||||||
rancher = Rancher.objects.create(**validated_data) # create rancher
|
rancher = Rancher.objects.create(**validated_data) # create rancher
|
||||||
if 'livestock' in data.keys():
|
if 'livestock' in data.keys():
|
||||||
live_stocks = data['livestock']
|
live_stocks = data['livestock']
|
||||||
print(live_stocks)
|
|
||||||
livestock_types = {stock.id: stock for stock in livestock_models.LiveStockType.objects.all()}
|
livestock_types = {stock.id: stock for stock in livestock_models.LiveStockType.objects.all()}
|
||||||
|
|
||||||
for stock in live_stocks:
|
for stock in live_stocks:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
from apps.livestock.models import LiveStock, TemporaryLiveStock
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from apps.herd.models import Rancher
|
from apps.herd.models import Rancher
|
||||||
from apps.livestock.models import LiveStock
|
|
||||||
from apps.warehouse.models import (
|
from apps.warehouse.models import (
|
||||||
InventoryEntry,
|
InventoryEntry,
|
||||||
InventoryQuotaSaleItem
|
InventoryQuotaSaleItem
|
||||||
@@ -16,21 +16,39 @@ def get_rancher_statistics(rancher: Rancher = None) -> typing.Any:
|
|||||||
""" get statistics of a rancher """ # noqa
|
""" get statistics of a rancher """ # noqa
|
||||||
|
|
||||||
livestocks = LiveStock.objects.filter(herd__rancher=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')),
|
||||||
|
heavy_count=Count('id', filter=Q(weight_type='H')),
|
||||||
|
sheep=Count('id', filter=Q(type__name='گوسفند')), # noqa
|
||||||
|
goat=Count('id', filter=Q(type__name='بز')),
|
||||||
|
cow=Count('id', filter=Q(type__name='گاو')),
|
||||||
|
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='بز')),
|
||||||
|
)
|
||||||
|
|
||||||
stats = livestocks.aggregate(
|
|
||||||
herd_count=Count("herd", distinct=True),
|
|
||||||
light_count=Count('id', filter=Q(weight_type='L')),
|
|
||||||
heavy_count=Count('id', filter=Q(weight_type='H')),
|
|
||||||
sheep=Count('id', filter=Q(type__name='گوسفند')), # noqa
|
|
||||||
goat=Count('id', filter=Q(type__name='بز')),
|
|
||||||
cow=Count('id', filter=Q(type__name='گاو')),
|
|
||||||
camel=Count('id', filter=Q(type__name='شتر')),
|
|
||||||
horse=Count('id', filter=Q(type__name='بز')),
|
|
||||||
)
|
|
||||||
return [{'name': key, 'value': value} for key, value in stats.items()], stats
|
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 rancher: Rancher instance
|
||||||
:param inventory_entry: InventoryEntry instance
|
:param inventory_entry: InventoryEntry instance
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ class POSDeviceViewSet(viewsets.ModelViewSet, POSDeviceMixin):
|
|||||||
'name': device_owner_org.name,
|
'name': device_owner_org.name,
|
||||||
'en_name': device_owner_org.en_name,
|
'en_name': device_owner_org.en_name,
|
||||||
'phone': device_owner_org.phone,
|
'phone': device_owner_org.phone,
|
||||||
|
'type': device_owner_org.type.name,
|
||||||
}
|
}
|
||||||
|
|
||||||
return Response({
|
return Response({
|
||||||
|
|||||||
Reference in New Issue
Block a user