first push
This commit is contained in:
0
authentication/serializer/__init__.py
Normal file
0
authentication/serializer/__init__.py
Normal file
308
authentication/serializer/serializer.py
Normal file
308
authentication/serializer/serializer.py
Normal file
@@ -0,0 +1,308 @@
|
||||
from django.contrib.auth.models import User, Group
|
||||
from django.db.models import Q
|
||||
|
||||
from authentication.models import (
|
||||
UserProfile,
|
||||
Address,
|
||||
BankCard,
|
||||
SystemUserProfile,
|
||||
PermissionLevel, ExternalTransaction
|
||||
)
|
||||
from rest_framework import serializers
|
||||
from authentication.permission_views import GroupSerializer
|
||||
from authentication.serializers import SystemAddressSerializer, UserSerializer, ProvinceSerializer, CitySerializer
|
||||
from panel.models import KillHouse, WagePayment, ProvinceKillRequest
|
||||
|
||||
|
||||
# سریالایزر مربوط به مدل آدرس
|
||||
class AddressSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Address
|
||||
fields = [
|
||||
'key',
|
||||
'title',
|
||||
'country',
|
||||
'province',
|
||||
'city',
|
||||
'address',
|
||||
'postal_code',
|
||||
'breeding_unique_id',
|
||||
'phone',
|
||||
'phone_type',
|
||||
'no',
|
||||
'floor',
|
||||
'unit',
|
||||
]
|
||||
|
||||
def create(self, validated_data):
|
||||
return Address.objects.create(**validated_data)
|
||||
|
||||
|
||||
# سریالایزر مربوط به مدل اطلاعات بانکی
|
||||
class BankCardSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = BankCard
|
||||
exclude = (
|
||||
'id',
|
||||
'create_date',
|
||||
'modify_date',
|
||||
'trash',
|
||||
'created_by',
|
||||
'modified_by',
|
||||
)
|
||||
extra_kwargs = {
|
||||
'name_of_bank_user': {'required': False, 'allow_null': True},
|
||||
'bank_name': {'required': False, 'allow_null': True},
|
||||
'card': {'required': False, 'allow_null': True},
|
||||
'shaba': {'required': False, 'allow_null': True},
|
||||
'account': {'required': False, 'allow_null': True},
|
||||
}
|
||||
|
||||
|
||||
# سریالایزر مربوط به مدل کاربر
|
||||
class UserProfileSerializer(serializers.ModelSerializer):
|
||||
user_bank_info = BankCardSerializer(read_only=True)
|
||||
address = AddressSerializer(read_only=True)
|
||||
role = GroupSerializer(read_only=True)
|
||||
job = serializers.SerializerMethodField('get_job')
|
||||
|
||||
def get_job(self, instance):
|
||||
# if instance.role.name == 'Poultry':
|
||||
# pass
|
||||
# if instance.role.name == 'CityOperator':
|
||||
# pass
|
||||
# if instance.role.name == 'ProvinceOperator':
|
||||
# pass
|
||||
if instance.role.name == 'KillHouse':
|
||||
kill_house = KillHouse.objects.get(user=instance).name
|
||||
return kill_house
|
||||
else:
|
||||
return None
|
||||
|
||||
class Meta:
|
||||
model = UserProfile
|
||||
fields = [
|
||||
'key',
|
||||
'create_date',
|
||||
# 'token',
|
||||
'fullname',
|
||||
'first_name',
|
||||
'last_name',
|
||||
'natinal_id',
|
||||
'mobile',
|
||||
'birthday',
|
||||
'image',
|
||||
'state',
|
||||
'role',
|
||||
'address',
|
||||
'unit_name',
|
||||
'gis_code',
|
||||
'operating_licence_capacity',
|
||||
'number_of_halls',
|
||||
'tenant',
|
||||
'person_type',
|
||||
'economic_code',
|
||||
'system_code',
|
||||
'epidemiological_code',
|
||||
'breeding_unique_id',
|
||||
'total_capacity',
|
||||
'licence_number',
|
||||
'health_certificate_number',
|
||||
'number_of_requests',
|
||||
'hatching_date',
|
||||
'last_party_date',
|
||||
'number_of_incubators',
|
||||
'herd_age_by_day',
|
||||
'herd_age_by_week',
|
||||
'number_of_party',
|
||||
'communication_type',
|
||||
'cooperative',
|
||||
'date_of_register',
|
||||
'unit_status',
|
||||
'samasat_user_code',
|
||||
'user_bank_info',
|
||||
'job',
|
||||
'incubation_date',
|
||||
]
|
||||
|
||||
|
||||
class SystemUserProfileForAutoAllocationSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = SystemUserProfile
|
||||
fields = ['fullname', 'first_name', 'last_name', 'base_order', 'mobile', 'national_id', 'national_code', 'key',
|
||||
'city', 'unit_name', 'unit_national_id', 'unit_registration_number', 'unit_economical_number',
|
||||
'unit_province', 'unit_city', 'unit_postal_code', 'unit_address']
|
||||
depth = 1
|
||||
|
||||
|
||||
class SystemUserProfileForGuildSerializer(serializers.ModelSerializer):
|
||||
city = serializers.CharField(source='city.name', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = SystemUserProfile
|
||||
fields = ['fullname', 'first_name', 'last_name', 'mobile', 'national_id', 'city','father_name','gender','is_alive','birthday','national_code']
|
||||
depth = 1
|
||||
|
||||
|
||||
class SystemUserProfileForInspectionSerializer(serializers.ModelSerializer):
|
||||
province_name = serializers.CharField(source='province.name', read_only=True)
|
||||
city_name = serializers.CharField(source='city.name', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = SystemUserProfile
|
||||
fields = ['fullname', 'first_name', 'last_name', 'mobile', 'national_id', 'province_name', 'city_name','is_alive','national_code','gender','father_name','birthday',
|
||||
'password']
|
||||
|
||||
|
||||
class SystemUserProfileForAllUsersSerializer(serializers.ModelSerializer):
|
||||
role = serializers.SerializerMethodField('get_role')
|
||||
|
||||
class Meta:
|
||||
model = SystemUserProfile
|
||||
fields = ['fullname', 'national_id', 'mobile', 'birthday', 'password', 'role']
|
||||
|
||||
def get_role(self, instance):
|
||||
role_list = []
|
||||
for item in instance.role.all():
|
||||
role_list.append(item.name)
|
||||
return role_list
|
||||
|
||||
|
||||
class SystemUserProfileSerializer(serializers.ModelSerializer):
|
||||
# user=UserSerializer(read_only=True)
|
||||
address = SystemAddressSerializer(read_only=True, required=False)
|
||||
role = serializers.SerializerMethodField('get_role')
|
||||
city = serializers.SerializerMethodField('get_city')
|
||||
province = serializers.SerializerMethodField('get_province')
|
||||
|
||||
class Meta:
|
||||
model = SystemUserProfile
|
||||
exclude = (
|
||||
'id',
|
||||
'create_date',
|
||||
'modify_date',
|
||||
'trash',
|
||||
'token',
|
||||
'created_by',
|
||||
'modified_by',
|
||||
'user',
|
||||
# 'password',
|
||||
'access_level',
|
||||
)
|
||||
# extra_kwargs = {"access_level": {"required": False, "allow_null": True}}
|
||||
|
||||
def get_city(self, instance):
|
||||
if instance.city == None:
|
||||
pass
|
||||
else:
|
||||
return instance.city.name
|
||||
|
||||
def get_province(self, instance):
|
||||
if instance.province == None:
|
||||
pass
|
||||
else:
|
||||
return instance.province.name
|
||||
|
||||
def get_role(self, instance):
|
||||
role_list = []
|
||||
for item in instance.role.all():
|
||||
role_list.append(item.name)
|
||||
return role_list
|
||||
|
||||
|
||||
class SystemUserProfileForFactorSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = SystemUserProfile
|
||||
fields = ['key', 'fullname', 'first_name', 'last_name', 'mobile', 'unit_name', 'unit_national_id',
|
||||
'unit_registration_number', 'unit_economical_number', 'unit_province', 'unit_city',
|
||||
'unit_postal_code', 'unit_address']
|
||||
|
||||
|
||||
class SystemUserProfileBaseInfoSerializer(serializers.ModelSerializer):
|
||||
role = GroupSerializer(many=True)
|
||||
city = CitySerializer(read_only=True, required=False)
|
||||
province = ProvinceSerializer(read_only=True, required=False)
|
||||
|
||||
class Meta:
|
||||
model = SystemUserProfile
|
||||
exclude = (
|
||||
'id',
|
||||
'create_date',
|
||||
'modify_date',
|
||||
'trash',
|
||||
'token',
|
||||
'created_by',
|
||||
'modified_by',
|
||||
'user',
|
||||
'state',
|
||||
# 'password',
|
||||
'access_level',
|
||||
)
|
||||
|
||||
|
||||
class ExternalTransactionSerializer(serializers.ModelSerializer):
|
||||
receiver = SystemUserProfileForAutoAllocationSerializer(read_only=True)
|
||||
creator = SystemUserProfileForAutoAllocationSerializer(read_only=True)
|
||||
information = serializers.SerializerMethodField('get_information')
|
||||
|
||||
class Meta:
|
||||
model = ExternalTransaction
|
||||
fields = '__all__'
|
||||
|
||||
def get_information(self, obj):
|
||||
total_weight = 0
|
||||
total_quantity = 0
|
||||
total_request = 0
|
||||
wage_payment = WagePayment.objects.filter(Q(orderId=obj.orderId) | Q(tracking_code=obj.saleReferenceId),
|
||||
trash=False).first()
|
||||
if wage_payment.province_kill_request != None:
|
||||
total_request = len(wage_payment.province_kill_request)
|
||||
for province_kill_req in wage_payment.province_kill_request:
|
||||
province_kill = ProvinceKillRequest.objects.get(key=province_kill_req, trash=False)
|
||||
total_weight += province_kill.total_killed_weight
|
||||
total_quantity += province_kill.total_killed_quantity
|
||||
return {
|
||||
"total_weight": total_weight,
|
||||
"total_quantity": total_quantity,
|
||||
"total_request_number": total_request,
|
||||
}
|
||||
|
||||
|
||||
class SystemUserProfileForPoultryLocSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = SystemUserProfile
|
||||
fields = ['fullname', 'mobile']
|
||||
|
||||
|
||||
class SystemUserProfileBaseInfoForTicketSerializer(serializers.ModelSerializer):
|
||||
role = GroupSerializer(many=True)
|
||||
city = CitySerializer(read_only=True, required=False)
|
||||
province = ProvinceSerializer(read_only=True, required=False)
|
||||
|
||||
class Meta:
|
||||
model = SystemUserProfile
|
||||
fields = ['birthday', 'first_name', 'fullname', 'key', 'last_name', 'mobile', 'national_code', 'role', 'city',
|
||||
'province']
|
||||
|
||||
|
||||
class SystemUserProfileForPoultryScienceSerializer(serializers.ModelSerializer):
|
||||
role = serializers.SerializerMethodField('get_role')
|
||||
|
||||
class Meta:
|
||||
model = SystemUserProfile
|
||||
fields = ['fullname', 'mobile','role']
|
||||
|
||||
def get_role(self, instance):
|
||||
role_list = []
|
||||
for item in instance.role.all():
|
||||
role_list.append(item.name)
|
||||
return role_list
|
||||
|
||||
|
||||
class SystemUserProfileForPoultryScienceWithoutRoleSerializer(serializers.ModelSerializer):
|
||||
city = CitySerializer(read_only=True, required=False)
|
||||
|
||||
class Meta:
|
||||
model = SystemUserProfile
|
||||
fields = ['fullname', 'mobile','city']
|
||||
|
||||
Reference in New Issue
Block a user