@@ -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+
82126class 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-
259263class UserListSerializer (serializers .ModelSerializer ):
260264 member = MemberSerializer (required = False )
261265 key_skills = KeySkillsField (required = False )
0 commit comments