|
|
|
@ -3,11 +3,40 @@ from generic_relations.relations import GenericRelatedField |
|
|
|
from rest_framework.serializers import ModelSerializer, ImageField, FileField, SerializerMethodField, PrimaryKeyRelatedField, ReadOnlyField |
|
|
|
from rest_framework.serializers import ModelSerializer, ImageField, FileField, SerializerMethodField, PrimaryKeyRelatedField, ReadOnlyField |
|
|
|
|
|
|
|
|
|
|
|
from .models import Project, Realty, BuildingClassfication, ConstructionType, Order, Stage, Portfolio, PortfolioPhoto, Answer, AnswerFile |
|
|
|
from .models import Project, Realty, BuildingClassfication, ConstructionType, Order, Stage, Portfolio, PortfolioPhoto, Answer, AnswerFile |
|
|
|
from common.serializers import LocationSerializer |
|
|
|
from common.serializers import LocationSerializer, ContentTypeSerializer |
|
|
|
from specializations.serializers import SpecializationSerializer |
|
|
|
from specializations.serializers import SpecializationSerializer |
|
|
|
from users.models import User, Team |
|
|
|
from users.models import User, Team |
|
|
|
from users.serializers import UserSerializer, TeamSerializer |
|
|
|
from users.serializers import UserSerializer, TeamSerializer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AnswerFileSerializer(ModelSerializer): |
|
|
|
|
|
|
|
file = FileField() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Meta: |
|
|
|
|
|
|
|
model = AnswerFile |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fields = ( |
|
|
|
|
|
|
|
'file', |
|
|
|
|
|
|
|
'id', |
|
|
|
|
|
|
|
'name', |
|
|
|
|
|
|
|
# 'answer', |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PortfolioPhotoSerializer(ModelSerializer): |
|
|
|
|
|
|
|
img = ImageField() |
|
|
|
|
|
|
|
portfolio_id = PrimaryKeyRelatedField(read_only=True, source='portfolio') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Meta: |
|
|
|
|
|
|
|
model = PortfolioPhoto |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fields = ( |
|
|
|
|
|
|
|
'id', |
|
|
|
|
|
|
|
'img', |
|
|
|
|
|
|
|
'portfolio_id', |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BuildingClassficationSerializer(ModelSerializer): |
|
|
|
class BuildingClassficationSerializer(ModelSerializer): |
|
|
|
class Meta: |
|
|
|
class Meta: |
|
|
|
model = BuildingClassfication |
|
|
|
model = BuildingClassfication |
|
|
|
@ -93,16 +122,53 @@ class OrderSerializer_(ModelSerializer): |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AnswerSerializer_(ModelSerializer): |
|
|
|
|
|
|
|
project_id = PrimaryKeyRelatedField(read_only=True, source='project') |
|
|
|
|
|
|
|
portfolio_ids = PrimaryKeyRelatedField(read_only=True, source='portfolios', many=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
content_type = ContentTypeSerializer() |
|
|
|
|
|
|
|
files = AnswerFileSerializer(many=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
author = GenericRelatedField({ |
|
|
|
|
|
|
|
User: UserSerializer(), |
|
|
|
|
|
|
|
Team: TeamSerializer() |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Meta: |
|
|
|
|
|
|
|
model = Answer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fields = ( |
|
|
|
|
|
|
|
'budget', |
|
|
|
|
|
|
|
'created', |
|
|
|
|
|
|
|
'currency', |
|
|
|
|
|
|
|
'id', |
|
|
|
|
|
|
|
'is_archive', |
|
|
|
|
|
|
|
'object_id', |
|
|
|
|
|
|
|
'portfolio_ids', |
|
|
|
|
|
|
|
'project_id', |
|
|
|
|
|
|
|
'rejected', |
|
|
|
|
|
|
|
'secure_deal_only', |
|
|
|
|
|
|
|
'term', |
|
|
|
|
|
|
|
'term_type', |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'author', # Generic related field |
|
|
|
|
|
|
|
'content_type', |
|
|
|
|
|
|
|
'files', |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ProjectSerializer(ModelSerializer): |
|
|
|
class ProjectSerializer(ModelSerializer): |
|
|
|
|
|
|
|
answers = AnswerSerializer_(many=True) |
|
|
|
customer = UserSerializer() |
|
|
|
customer = UserSerializer() |
|
|
|
specialization = SpecializationSerializer() |
|
|
|
|
|
|
|
realty = RealtySerializer() |
|
|
|
|
|
|
|
order = OrderSerializer_() # TODO: Can't serialize a reverse/reciprocal relation |
|
|
|
order = OrderSerializer_() # TODO: Can't serialize a reverse/reciprocal relation |
|
|
|
|
|
|
|
realty = RealtySerializer() |
|
|
|
|
|
|
|
specialization = SpecializationSerializer() |
|
|
|
|
|
|
|
|
|
|
|
class Meta: |
|
|
|
class Meta: |
|
|
|
model = Project |
|
|
|
model = Project |
|
|
|
|
|
|
|
|
|
|
|
fields = ( |
|
|
|
fields = ( |
|
|
|
|
|
|
|
'answers', |
|
|
|
'budget', |
|
|
|
'budget', |
|
|
|
'budget_by_agreement', |
|
|
|
'budget_by_agreement', |
|
|
|
'created', |
|
|
|
'created', |
|
|
|
@ -158,25 +224,10 @@ class OrderSerializer(ModelSerializer): |
|
|
|
return False |
|
|
|
return False |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PortfolioPhotoSerializer(ModelSerializer): |
|
|
|
|
|
|
|
img = ImageField() |
|
|
|
|
|
|
|
portfolio_id = PrimaryKeyRelatedField(read_only=True, source='portfolio') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Meta: |
|
|
|
|
|
|
|
model = PortfolioPhoto |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fields = ( |
|
|
|
|
|
|
|
'id', |
|
|
|
|
|
|
|
'img', |
|
|
|
|
|
|
|
'portfolio_id', |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PortfolioSerializer(ModelSerializer): |
|
|
|
class PortfolioSerializer(ModelSerializer): |
|
|
|
# answers = AnswerSerializer(many=True) |
|
|
|
# answers = AnswerSerializer(many=True) |
|
|
|
building_classification = BuildingClassficationSerializer() |
|
|
|
building_classification = BuildingClassficationSerializer() |
|
|
|
construction_type = ConstructionTypeSerializer() |
|
|
|
construction_type = ConstructionTypeSerializer() |
|
|
|
id = ReadOnlyField() |
|
|
|
|
|
|
|
location = LocationSerializer() |
|
|
|
location = LocationSerializer() |
|
|
|
photos = PortfolioPhotoSerializer(many=True) |
|
|
|
photos = PortfolioPhotoSerializer(many=True) |
|
|
|
specialization = SpecializationSerializer() |
|
|
|
specialization = SpecializationSerializer() |
|
|
|
@ -204,24 +255,11 @@ class PortfolioSerializer(ModelSerializer): |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AnswerFileSerializer(ModelSerializer): |
|
|
|
|
|
|
|
file = FileField() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Meta: |
|
|
|
|
|
|
|
model = AnswerFile |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fields = ( |
|
|
|
|
|
|
|
'file', |
|
|
|
|
|
|
|
'id', |
|
|
|
|
|
|
|
'name', |
|
|
|
|
|
|
|
# 'answer', |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AnswerSerializer(ModelSerializer): |
|
|
|
class AnswerSerializer(ModelSerializer): |
|
|
|
|
|
|
|
content_type = ContentTypeSerializer() |
|
|
|
files = AnswerFileSerializer(many=True) |
|
|
|
files = AnswerFileSerializer(many=True) |
|
|
|
portfolios = PortfolioSerializer(many=True) |
|
|
|
portfolios = PortfolioSerializer(many=True) |
|
|
|
project = ProjectSerializer |
|
|
|
project = ProjectSerializer() |
|
|
|
|
|
|
|
|
|
|
|
author = GenericRelatedField({ |
|
|
|
author = GenericRelatedField({ |
|
|
|
User: UserSerializer(), |
|
|
|
User: UserSerializer(), |
|
|
|
@ -236,15 +274,18 @@ class AnswerSerializer(ModelSerializer): |
|
|
|
'created', |
|
|
|
'created', |
|
|
|
'currency', |
|
|
|
'currency', |
|
|
|
'id', |
|
|
|
'id', |
|
|
|
|
|
|
|
'is_archive', |
|
|
|
|
|
|
|
'object_id', |
|
|
|
|
|
|
|
'rejected', |
|
|
|
'secure_deal_only', |
|
|
|
'secure_deal_only', |
|
|
|
'term', |
|
|
|
'term', |
|
|
|
'term_type', |
|
|
|
'term_type', |
|
|
|
'text', |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'author', # Generic related field |
|
|
|
|
|
|
|
'content_type', |
|
|
|
'files', |
|
|
|
'files', |
|
|
|
'portfolios', |
|
|
|
'portfolios', |
|
|
|
'project', |
|
|
|
'project', |
|
|
|
'author', # Generic related field |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 'candidates', |
|
|
|
# 'candidates', |
|
|
|
) |
|
|
|
) |
|
|
|
|