/
home
/
liman
/
liman-backend
/
accounting
/
File Upload :
llllll
Current File: /home/liman/liman-backend/accounting/serializers.py
from rest_framework import serializers from limanAuth.serializers import UserSerializer, UserBankAccountSerializer from .models import * class BrandSerializer(serializers.ModelSerializer): class Meta: model = Brand fields = '__all__' class CategorySerializer(serializers.ModelSerializer): class Meta: model = Category fields = '__all__' class DocumentSerializer(serializers.ModelSerializer): user_obj = serializers.SerializerMethodField('get_user_obj') creator_obj = serializers.SerializerMethodField('get_creator_obj') items = serializers.SerializerMethodField('get_items_obj') create_only_fields = ['user', 'creator'] def to_internal_value(self, data): data = super(DocumentSerializer, 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 @staticmethod def get_user_obj(obj): return UserSerializer(instance=obj.user).data @staticmethod def get_items_obj(obj): return DocumentItemSerializer(instance=DocumentItem.objects.filter(document=obj.pk), many=True).data @staticmethod def get_creator_obj(obj): return UserSerializer(instance=obj.creator).data class Meta: model = Document fields = '__all__' class DocumentItemSerializer(serializers.ModelSerializer): negotiable_obj = serializers.SerializerMethodField('get_negotiable_obj') currency_type_obj = serializers.SerializerMethodField('get_currency_type_obj') product_obj = serializers.SerializerMethodField('get_product_obj') account_obj = serializers.SerializerMethodField('get_account_obj') @staticmethod def get_negotiable_obj(obj): return NegotiableSerializer(instance=obj.negotiable).data @staticmethod def get_currency_type_obj(obj): return NegotiableSerializer(instance=obj.currency_type).data @staticmethod def get_product_obj(obj): return ProductSerializer(instance=obj.product).data @staticmethod def get_account_obj(obj): return UserBankAccountSerializer(instance=obj.account).data class Meta: model = DocumentItem fields = '__all__' class BuiltDocument(DocumentSerializer): def get_queryset(self): queryset = Document.objects.filter(creator=self.context['request'].user) return queryset class MyDocument(DocumentSerializer): def get_queryset(self): queryset = Document.objects.filter(user=self.context['request'].user) return queryset class BuiltDocumentItem(DocumentItemSerializer): def get_queryset(self): queryset = DocumentItem.objects.filter(document__creator=self.context['request'].user) return queryset class ProductSerializer(serializers.ModelSerializer): brand_obj = serializers.SerializerMethodField('get_brand_obj') category_obj = serializers.SerializerMethodField('get_category_obj') @staticmethod def get_brand_obj(obj): return BrandSerializer(instance=obj.brand).data @staticmethod def get_category_obj(obj): return CategorySerializer(instance=obj.category).data class Meta: model = Product fields = '__all__' class NegotiableSerializer(serializers.ModelSerializer): types = serializers.SerializerMethodField() @staticmethod def get_types(obj): try: return NegotiableTypeSerializer(instance=obj.negotiable_types, many=True).data except Exception as e: return '' class Meta: model = Negotiable fields = '__all__' class NegotiableTypeSerializer(serializers.ModelSerializer): class Meta: model = NegotiableType fields = '__all__'
Copyright ©2k19 -
Hexid
|
Tex7ure