You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.2 KiB
47 lines
1.2 KiB
from rest_framework import serializers
|
|
|
|
from finance.models import Bill, Invoice
|
|
|
|
|
|
class BillSerializer(serializers.ModelSerializer):
|
|
opener = serializers.SerializerMethodField()
|
|
user = serializers.SerializerMethodField()
|
|
invoices = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = Bill
|
|
fields = '__all__'
|
|
|
|
@staticmethod
|
|
def get_user(self):
|
|
return self.user.email
|
|
|
|
@staticmethod
|
|
def get_invoices(self):
|
|
return [InvoiceSerializer(i).data for i in self.invoice_set.all()]
|
|
|
|
@staticmethod
|
|
def get_opener(self):
|
|
return self.opener.email
|
|
|
|
|
|
class InvoiceSerializer(serializers.ModelSerializer):
|
|
status = serializers.SerializerMethodField()
|
|
method = serializers.SerializerMethodField()
|
|
yandex_pay = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = Invoice
|
|
fields = '__all__'
|
|
|
|
@staticmethod
|
|
def get_status(self):
|
|
return self.get_status_display()
|
|
|
|
@staticmethod
|
|
def get_yandex_pay(self):
|
|
return None if self.yandex_pay is None else self.yandex_pay.id
|
|
|
|
@staticmethod
|
|
def get_method(self):
|
|
return self.get_method_display() |