Skip to content

Commit 997c64e

Browse files
committed
ids -> objects in subscriptions
1 parent fd8f90c commit 997c64e

1 file changed

Lines changed: 48 additions & 44 deletions

File tree

users/serializers.py

Lines changed: 48 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,50 @@ class Meta:
7979
]
8080

8181

82+
class UserProjectsSerializer(serializers.ModelSerializer):
83+
short_description = serializers.SerializerMethodField()
84+
views_count = serializers.SerializerMethodField()
85+
collaborator = serializers.SerializerMethodField(method_name="get_collaborator")
86+
87+
def get_collaborator(self, project: Project):
88+
# TODO: fix me, import in a functon
89+
from projects.serializers import CollaboratorSerializer
90+
91+
user = (
92+
self.context.get("request").user
93+
if self.context.get("user") is None
94+
else self.context.get("user")
95+
)
96+
try:
97+
collaborator = project.collaborator_set.get(user=user)
98+
except Collaborator.DoesNotExist:
99+
return {}
100+
101+
return CollaboratorSerializer(collaborator).data
102+
103+
@classmethod
104+
def get_views_count(cls, project):
105+
return get_views_count(project)
106+
107+
@classmethod
108+
def get_short_description(cls, project):
109+
return project.get_short_description()
110+
111+
class Meta:
112+
model = Project
113+
fields = [
114+
"id",
115+
"name",
116+
"leader",
117+
"short_description",
118+
"image_address",
119+
"industry",
120+
"views_count",
121+
"collaborator",
122+
]
123+
read_only_fields = ["leader", "collaborator"]
124+
125+
82126
class UserDetailSerializer(serializers.ModelSerializer):
83127
member = MemberSerializer(required=False)
84128
investor = InvestorSerializer(required=False)
@@ -89,6 +133,10 @@ class UserDetailSerializer(serializers.ModelSerializer):
89133
links = serializers.SerializerMethodField()
90134
is_online = serializers.SerializerMethodField()
91135
projects = serializers.SerializerMethodField()
136+
# inline serializer with fields name, id, image_address, source is self.subscribed_projects
137+
subscribed_projects = UserProjectsSerializer(
138+
source="subscribed_projects", many=True, read_only=True
139+
)
92140

93141
def get_projects(self, user: CustomUser):
94142
return UserProjectsSerializer(
@@ -212,50 +260,6 @@ def update(self, instance, validated_data):
212260
return instance
213261

214262

215-
class UserProjectsSerializer(serializers.ModelSerializer):
216-
short_description = serializers.SerializerMethodField()
217-
views_count = serializers.SerializerMethodField()
218-
collaborator = serializers.SerializerMethodField(method_name="get_collaborator")
219-
220-
def get_collaborator(self, project: Project):
221-
# TODO: fix me, import in a functon
222-
from projects.serializers import CollaboratorSerializer
223-
224-
user = (
225-
self.context.get("request").user
226-
if self.context.get("user") is None
227-
else self.context.get("user")
228-
)
229-
try:
230-
collaborator = project.collaborator_set.get(user=user)
231-
except Collaborator.DoesNotExist:
232-
return {}
233-
234-
return CollaboratorSerializer(collaborator).data
235-
236-
@classmethod
237-
def get_views_count(cls, project):
238-
return get_views_count(project)
239-
240-
@classmethod
241-
def get_short_description(cls, project):
242-
return project.get_short_description()
243-
244-
class Meta:
245-
model = Project
246-
fields = [
247-
"id",
248-
"name",
249-
"leader",
250-
"short_description",
251-
"image_address",
252-
"industry",
253-
"views_count",
254-
"collaborator",
255-
]
256-
read_only_fields = ["leader", "collaborator"]
257-
258-
259263
class UserListSerializer(serializers.ModelSerializer):
260264
member = MemberSerializer(required=False)
261265
key_skills = KeySkillsField(required=False)

0 commit comments

Comments
 (0)