first commit
This commit is contained in:
332
app/filtersets.py
Normal file
332
app/filtersets.py
Normal file
@@ -0,0 +1,332 @@
|
||||
import datetime
|
||||
|
||||
from django_filters import rest_framework as filters
|
||||
|
||||
from app.models import Poultry, PoultryHatching, TransportingChickenDetail, Hatching, TransportingDetail, KillHouse, \
|
||||
TransportCarcassDetail, Driver, Guilds, AllProductsTransport
|
||||
|
||||
|
||||
class PoultryFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = Poultry
|
||||
fields = [
|
||||
'UserName',
|
||||
'FirstName',
|
||||
'LastName',
|
||||
'UnitName',
|
||||
'PartIdCode',
|
||||
'UnitId',
|
||||
'LocationIdProvince',
|
||||
'LocationIdCity'
|
||||
]
|
||||
|
||||
|
||||
class PoultryHatchingFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = PoultryHatching
|
||||
fields = [
|
||||
'DesCertId',
|
||||
'RequestCode',
|
||||
'Mobile',
|
||||
'PartIdCode',
|
||||
'EpidemiologicCode',
|
||||
'LocationNameProvince',
|
||||
'LocationNameCity',
|
||||
'poultry__UserName',
|
||||
'poultry__FirstName',
|
||||
'poultry__LastName',
|
||||
'poultry__UnitName',
|
||||
'poultry__PartIdCode',
|
||||
'poultry__UnitId',
|
||||
'LocationIdProvince',
|
||||
'LocationIdCity',
|
||||
'LocationNameCity',
|
||||
]
|
||||
|
||||
|
||||
class HatchingsFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = Hatching
|
||||
fields = [
|
||||
'UnitName',
|
||||
'ProvinceName',
|
||||
'CityName',
|
||||
'PartIdCode',
|
||||
'RequestCode',
|
||||
'poultry__UserName',
|
||||
'poultry__FirstName',
|
||||
'poultry__LastName',
|
||||
'poultry__UnitName',
|
||||
'poultry__PartIdCode',
|
||||
'poultry__UnitId',
|
||||
]
|
||||
|
||||
|
||||
class TransportingChickenDetailFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = TransportingChickenDetail
|
||||
fields = [
|
||||
'DesUnitName',
|
||||
'DesPartIdCode',
|
||||
'SourceUnitPartIdCode',
|
||||
'SourceUnitName',
|
||||
'SourceCertId',
|
||||
'hatching__DesCertId',
|
||||
'hatching__LocationNameProvince',
|
||||
'hatching__LocationNameCity',
|
||||
'hatching__poultry__UserName',
|
||||
'hatching__poultry__FirstName',
|
||||
'hatching__poultry__LastName',
|
||||
'hatching__poultry__UnitName',
|
||||
'hatching__poultry__PartIdCode',
|
||||
'hatching__poultry__UnitId',
|
||||
'hatching__poultry__LocationIdProvince',
|
||||
'hatching__poultry__LocationIdCity'
|
||||
]
|
||||
|
||||
|
||||
class HatchingFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = PoultryHatching
|
||||
fields = [
|
||||
'LocationNameCity',
|
||||
'LocationNameProvince',
|
||||
'HatchingAge',
|
||||
]
|
||||
|
||||
|
||||
class PoultryInfoFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = Poultry
|
||||
fields = [
|
||||
'LocationNameProvince',
|
||||
'Province',
|
||||
'LocationNameCity',
|
||||
'City',
|
||||
'FirstName',
|
||||
'LastName',
|
||||
'Mobile',
|
||||
'SystemCode',
|
||||
'EpidemiologicCode',
|
||||
'PartIdCode',
|
||||
'UnitName',
|
||||
]
|
||||
|
||||
|
||||
class HatchingCalculationsFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = PoultryHatching
|
||||
fields = [
|
||||
|
||||
'LocationNameProvince',
|
||||
'LocationNameCity',
|
||||
]
|
||||
|
||||
|
||||
class TransportingDetailFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = TransportingDetail
|
||||
fields = [
|
||||
|
||||
'TrackingCode',
|
||||
'Province',
|
||||
'City',
|
||||
'DesPartIdCode',
|
||||
'Age',
|
||||
'hatching__poultry__FirstName',
|
||||
'hatching__poultry__PartIdCode',
|
||||
'hatching__RequestCode',
|
||||
'hatching__CityName',
|
||||
'hatching__ProvinceName',
|
||||
]
|
||||
|
||||
|
||||
class KillHouseFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = KillHouse
|
||||
fields = [
|
||||
'PartIdCode',
|
||||
'UnitName',
|
||||
'Province',
|
||||
'City',
|
||||
'ProvinceId'
|
||||
]
|
||||
|
||||
|
||||
class CustomHatchingsFilterSet(filters.FilterSet):
|
||||
city = filters.CharFilter(field_name='CityName', lookup_expr='icontains')
|
||||
province = filters.CharFilter(field_name='ProvinceName', lookup_expr='icontains')
|
||||
system_code = filters.CharFilter(field_name='SystemCode', lookup_expr='exact')
|
||||
|
||||
age = filters.NumberFilter(field_name='Age', lookup_expr='exact')
|
||||
age__gt = filters.NumberFilter(field_name='Age', lookup_expr='gt')
|
||||
age__gte = filters.NumberFilter(field_name='Age', lookup_expr='gte')
|
||||
age__lt = filters.NumberFilter(field_name='Age', lookup_expr='lt')
|
||||
age__lte = filters.NumberFilter(field_name='Age', lookup_expr='lte')
|
||||
|
||||
killing_age = filters.NumberFilter(field_name='KillingAve', lookup_expr='exact')
|
||||
killing_age__gt = filters.NumberFilter(field_name='KillingAve', lookup_expr='gt')
|
||||
killing_age__gte = filters.NumberFilter(field_name='KillingAve', lookup_expr='gte')
|
||||
killing_age__lt = filters.NumberFilter(field_name='KillingAve', lookup_expr='lt')
|
||||
killing_age__lte = filters.NumberFilter(field_name='KillingAve', lookup_expr='lte')
|
||||
|
||||
leftover__gt = filters.NumberFilter(field_name='LeftOver', lookup_expr='gt')
|
||||
leftover__gte = filters.NumberFilter(field_name='LeftOver', lookup_expr='gte')
|
||||
leftover__lt = filters.NumberFilter(field_name='LeftOver', lookup_expr='lt')
|
||||
leftover__lte = filters.NumberFilter(field_name='LeftOver', lookup_expr='lte')
|
||||
leftover__exact = filters.NumberFilter(field_name='LeftOver', lookup_expr='exact')
|
||||
|
||||
date1__date__gte = filters.DateFilter(method='filter_date_range')
|
||||
date2__date__lte = filters.DateFilter(method='filter_date_range')
|
||||
state = filters.CharFilter(method='filter_state')
|
||||
|
||||
class Meta:
|
||||
model = Hatching
|
||||
fields = [
|
||||
'city', 'province', 'system_code',
|
||||
'age', 'age__gt', 'age__gte', 'age__lt', 'age__lte',
|
||||
'killing_age', 'killing_age__gt', 'killing_age__gte', 'killing_age__lt', 'killing_age__lte',
|
||||
'leftover__gt', 'leftover__gte', 'leftover__lt', 'leftover__lte', 'leftover__exact',
|
||||
'date1__date__gte', 'date2__date__lte', 'state'
|
||||
]
|
||||
|
||||
def filter_date_range(self, queryset, name, value):
|
||||
date1 = self.data.get('date1__date__gte')
|
||||
date2 = self.data.get('date2__date__lte')
|
||||
if date1 and date2:
|
||||
try:
|
||||
date1 = datetime.datetime.strptime(str(date1), '%Y-%m-%d').date()
|
||||
date2 = datetime.datetime.strptime(str(date2), '%Y-%m-%d').date()
|
||||
return queryset.filter(Date__date__gte=date1, Date__date__lte=date2)
|
||||
except ValueError:
|
||||
return queryset
|
||||
return queryset
|
||||
|
||||
def filter_state(self, queryset, name, value):
|
||||
state = self.data.get('state')
|
||||
if state:
|
||||
if state == 'pending':
|
||||
queryset = queryset.filter(Age__lte=70)
|
||||
else:
|
||||
queryset = queryset.filter(Age__gt=70)
|
||||
return queryset
|
||||
|
||||
|
||||
class TransportingDetailCustomFilterSet(filters.FilterSet):
|
||||
unitname = filters.CharFilter(field_name='DesUnitName', lookup_expr='icontains')
|
||||
province = filters.CharFilter(field_name='Province', lookup_expr='icontains')
|
||||
city = filters.CharFilter(field_name='City', lookup_expr='icontains')
|
||||
|
||||
code = filters.CharFilter(field_name='DesPartIdCode', lookup_expr='exact')
|
||||
trackingstatus = filters.CharFilter(field_name='TrackingStatusDescription', lookup_expr='exact')
|
||||
|
||||
quantity__gt = filters.NumberFilter(field_name='GoodAmount', lookup_expr='gt')
|
||||
quantity__gte = filters.NumberFilter(field_name='GoodAmount', lookup_expr='gte')
|
||||
quantity__lt = filters.NumberFilter(field_name='GoodAmount', lookup_expr='lt')
|
||||
quantity__lte = filters.NumberFilter(field_name='GoodAmount', lookup_expr='lte')
|
||||
|
||||
age = filters.NumberFilter(field_name='Age', lookup_expr='exact')
|
||||
age__gt = filters.NumberFilter(field_name='Age', lookup_expr='gt')
|
||||
age__gte = filters.NumberFilter(field_name='Age', lookup_expr='gte')
|
||||
age__lt = filters.NumberFilter(field_name='Age', lookup_expr='lt')
|
||||
age__lte = filters.NumberFilter(field_name='Age', lookup_expr='lte')
|
||||
|
||||
date1__date__gte = filters.DateFilter(method='filter_date_range')
|
||||
date2__date__lte = filters.DateFilter(method='filter_date_range')
|
||||
poultry_unitname = filters.DateFilter(method='filter_poultry_unit_name')
|
||||
|
||||
class Meta:
|
||||
model = TransportingDetail
|
||||
fields = [
|
||||
'unitname',
|
||||
'province',
|
||||
'city',
|
||||
'code',
|
||||
'trackingstatus',
|
||||
'quantity__gt',
|
||||
'quantity__gte',
|
||||
'quantity__lt',
|
||||
'quantity__lte',
|
||||
'age',
|
||||
'age__gt',
|
||||
'age__gte',
|
||||
'age__lt',
|
||||
'age__lte',
|
||||
'date1__date__gte',
|
||||
'date2__date__lte',
|
||||
'poultry_unitname',
|
||||
]
|
||||
|
||||
def filter_date_range(self, queryset, name, value):
|
||||
date1 = self.data.get('date1__date__gte')
|
||||
date2 = self.data.get('date2__date__lte')
|
||||
if date1 and date2:
|
||||
try:
|
||||
date1 = datetime.datetime.strptime(str(date1), '%Y-%m-%d').date()
|
||||
date2 = datetime.datetime.strptime(str(date2), '%Y-%m-%d').date()
|
||||
return queryset.filter(Date__date__gte=date1, Date__date__lte=date2)
|
||||
except ValueError:
|
||||
return queryset
|
||||
return queryset
|
||||
|
||||
def filter_poultry_unit_name(self, queryset, name, value):
|
||||
return queryset.filter(poultry__UnitName__icontains=value)
|
||||
|
||||
|
||||
class TransportCarcassDetailFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = TransportCarcassDetail
|
||||
fields = [
|
||||
'tracking',
|
||||
'origin_province',
|
||||
'origin_city',
|
||||
'destination_province',
|
||||
'destination_city',
|
||||
'product',
|
||||
'owner']
|
||||
|
||||
|
||||
class DriverFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = Driver
|
||||
fields = [
|
||||
'owner_name',
|
||||
'driver_name',
|
||||
'city',
|
||||
'province',
|
||||
]
|
||||
|
||||
|
||||
class GuildsFilterSet(filters.FilterSet):
|
||||
class Meta:
|
||||
model = Guilds
|
||||
fields = [
|
||||
'name',
|
||||
'province',
|
||||
'city',
|
||||
'jihadi_code'
|
||||
]
|
||||
|
||||
|
||||
class AllProductsTransportFilterSet(filters.FilterSet):
|
||||
|
||||
class Meta:
|
||||
model = AllProductsTransport
|
||||
fields = [
|
||||
'record_id',
|
||||
'tracking',
|
||||
'product',
|
||||
'items',
|
||||
'origin_province',
|
||||
'origin_city',
|
||||
'destination_province',
|
||||
'destination_city',
|
||||
'owner',
|
||||
'driver_name',
|
||||
'car_tracking_code',
|
||||
'out',
|
||||
'quantity',
|
||||
'jihadi_destination',
|
||||
'jihadi_origin',
|
||||
|
||||
]
|
||||
Reference in New Issue
Block a user