/
home
/
liman
/
liman-backend
/
limanAuth
/
File Upload :
llllll
Current File: /home/liman/liman-backend/limanAuth/serializers.py
import datetime import random from django.db.models import Q, Sum from rest_framework import serializers from accounting.models import UserBankAccount, Document, DocumentItem from .models import * from django.contrib.auth import password_validation from django.conf import settings from utility.province.serializer import ProvinceSerializer, CitySerializer from conversation.models import Conversation class UserBankAccountSerializer(serializers.ModelSerializer): class Meta: model = UserBankAccount fields = '__all__' class UserBankAccountPKField(UserBankAccountSerializer): def get_queryset(self): queryset = UserBankAccount.objects.filter(user=self.context['request'].user) return queryset class CustomerSerializer(serializers.ModelSerializer): id = serializers.SerializerMethodField('get_user_id') user_type = serializers.SerializerMethodField('get_user_type') email = serializers.SerializerMethodField('get_email') mobile = serializers.SerializerMethodField('get_mobile') last_name = serializers.SerializerMethodField('get_last_name') first_name = serializers.SerializerMethodField('get_first_name') address = serializers.SerializerMethodField("get_address") phone = serializers.SerializerMethodField("get_phone") post_code = serializers.SerializerMethodField("get_post_code") city = serializers.SerializerMethodField("get_city") avatar_url = serializers.SerializerMethodField("get_avatar_url") doc_img_url = serializers.SerializerMethodField("get_doc_img_url_url") national_card_img_url = serializers.SerializerMethodField("get_national_card_img_url_url") license_img_url = serializers.SerializerMethodField("get_license_img_url") conversation_count = serializers.SerializerMethodField("get_conversation_count") docs_count = serializers.SerializerMethodField("get_docs_count") debit = serializers.SerializerMethodField("get_debit") gold_balance = serializers.SerializerMethodField('get_gold_balance') cash_balance = serializers.SerializerMethodField('get_cash_balance') @staticmethod def get_debit(obj): return 0 @staticmethod def get_gold_balance(obj): return 0 @staticmethod def get_cash_balance(obj): return 0 @staticmethod def get_docs_count(obj): return Document.objects.filter(user=obj.user).count() @staticmethod def get_conversation_count(obj): return Conversation.objects.filter(user=obj.user).count() @staticmethod def get_user_type(obj): return obj.user.user_type @staticmethod def get_avatar_url(obj): try: if obj.user.profile_img: img = settings.__getattr__("APP_URL") + settings.__getattr__( "MEDIA_URL") + obj.user.profile_img.url + obj.user.profile_img.name else: img = '' return img except Exception as e: print(str(e)) return '' @staticmethod def get_doc_img_url_url(obj): try: if obj.doc_img: img = settings.__getattr__("APP_URL") + settings.__getattr__( "MEDIA_URL") + obj.doc_img.url + obj.doc_img.name else: img = '' return img except Exception as e: print(str(e)) return '' @staticmethod def get_national_card_img_url_url(obj): try: if obj.national_card_img: img = settings.__getattr__("APP_URL") + settings.__getattr__( "MEDIA_URL") + obj.national_card_img.url + obj.national_card_img.name else: img = '' return img except Exception as e: print(str(e)) return '' @staticmethod def get_license_img_url(obj): try: if obj.license_img: img = settings.__getattr__("APP_URL") + settings.__getattr__( "MEDIA_URL") + obj.license_img.url + obj.license_img.name else: img = '' return img except Exception as e: print(str(e)) return '' @staticmethod def get_email(obj): return obj.user.email @staticmethod def get_phone(obj): return obj.user.phone @staticmethod def get_address(obj): return obj.user.address @staticmethod def get_post_code(obj): return obj.user.postcode @staticmethod def get_city(obj): return CitySerializer(instance=obj.user.city).data @staticmethod def get_mobile(obj): return obj.user.mobile @staticmethod def get_first_name(obj): return obj.user.first_name @staticmethod def get_last_name(obj): return obj.user.last_name @staticmethod def get_user_id(obj): return obj.user.pk class Meta: model = Customer exclude = ['user'] class PorterSerializer(serializers.ModelSerializer): id = serializers.SerializerMethodField('get_user_id') first_name = serializers.SerializerMethodField('get_first_name') last_name = serializers.SerializerMethodField('get_last_name') user_type = serializers.SerializerMethodField('get_user_type') email = serializers.SerializerMethodField('get_email') mobile = serializers.SerializerMethodField('get_mobile') avatar_url = serializers.SerializerMethodField("get_avatar_url") address = serializers.SerializerMethodField("get_address") phone = serializers.SerializerMethodField("get_phone") post_code = serializers.SerializerMethodField("get_post_code") city = serializers.SerializerMethodField("get_city") completed_target = serializers.SerializerMethodField("get_completed_target") vertex = serializers.SerializerMethodField("get_rank") gold_balance = serializers.SerializerMethodField('get_gold_balance') cash_balance = serializers.SerializerMethodField('get_cash_balance') debit = serializers.SerializerMethodField("get_debit") credit = serializers.SerializerMethodField("get_credit") stock = serializers.SerializerMethodField("get_stock") @staticmethod def get_debit(obj): return 0 @staticmethod def get_cash_balance(obj): return 0 @staticmethod def get_stock(obj): return 0 @staticmethod def get_credit(obj): return 0 @staticmethod def get_gold_balance(obj): return 0 @staticmethod def get_rank(obj): self_vertex = Vertex.objects.filter(porter=obj).first() gold_rank = Vertex.objects.filter(gold_vertex__lt=(self_vertex.gold_vertex if self_vertex else 0)).count() + 1 rial_rank = Vertex.objects.filter(rial_vertex__lt=(self_vertex.gold_vertex if self_vertex else 0)).count() + 1 return { "gold_rank": gold_rank, "rial_rank": rial_rank, "vertex": VertexSerializer(instance=self_vertex).data if self_vertex else { } } @staticmethod def get_completed_target(obj): # _nego_gold = Negotiable.objects.filter(slug='gold').first() data_join = obj.user.date_joined now = datetime.datetime.now() doc_sum = DocumentItem.objects.filter(document__creator=obj.user, document__accepted=True).aggregate(Sum('weight'))['weight__sum'] total_prod = 0 # for doc in docs: # total_prod += doc.product.weight return total_prod + (float(doc_sum) if doc_sum else 0) @staticmethod def get_user_id(obj): return obj.user.pk @staticmethod def get_first_name(obj): return obj.user.first_name @staticmethod def get_last_name(obj): return obj.user.last_name @staticmethod def get_user_type(obj): return obj.user.user_type @staticmethod def get_email(obj): return obj.user.email @staticmethod def get_mobile(obj): return obj.user.mobile @staticmethod def get_phone(obj): return obj.user.phone @staticmethod def get_address(obj): return obj.user.address @staticmethod def get_post_code(obj): return obj.user.postcode @staticmethod def get_city(obj): return CitySerializer(instance=obj.user.city).data class Meta: model = Porter exclude = ['user'] @staticmethod def get_avatar_url(obj): try: if obj.user.profile_img: img = settings.__getattr__("APP_URL") + settings.__getattr__( "MEDIA_URL") + obj.user.profile_img.url + obj.user.profile_img.name print(img) else: img = '' return img except Exception as e: print(str(e)) return '' class UserSerializer(serializers.ModelSerializer): avatar_url = serializers.SerializerMethodField('get_avatar_url') password = serializers.CharField(style={'input_type': 'password'}, write_only=True, allow_null=True, required=False) bank_account = serializers.SerializerMethodField("get_bank_account") create_only_fields = ['user_type', 'mobile'] city_obj = serializers.SerializerMethodField('get_city') def validate_password(self, value): password_validation.validate_password(value, self.instance) return value @staticmethod def get_city(obj): return CitySerializer(instance=obj.city).data @staticmethod def get_avatar_url(obj): try: if obj.profile_img: img = settings.__getattr__("APP_URL") + settings.__getattr__( "MEDIA_URL") + obj.profile_img.url + obj.profile_img.name print(img) else: img = '' return img except Exception as e: print(str(e)) return '' @staticmethod def get_bank_account(obj): return UserBankAccountSerializer(UserBankAccount.objects.filter(user=obj), many=True).data def to_internal_value(self, data): data = super(UserSerializer, self).to_internal_value(data) if self.instance: # update for x in self.create_only_fields: if x in data: data.pop(x) return data class Meta: read_only_fields = ['is_active', 'is_staff', ] hidden_fields = {'password'} model = User exclude = ('sms_token',) class VertexSerializer(serializers.ModelSerializer): class Meta: model = Vertex fields = '__all__'
Copyright ©2k19 -
Hexid
|
Tex7ure