@@ -79,6 +79,76 @@ 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+
126+ class UserSubscribedProjectsSerializer (serializers .ModelSerializer ):
127+ short_description = serializers .SerializerMethodField ()
128+ views_count = serializers .SerializerMethodField ()
129+
130+ @classmethod
131+ def get_views_count (cls , project ):
132+ return get_views_count (project )
133+
134+ @classmethod
135+ def get_short_description (cls , project ):
136+ return project .get_short_description ()
137+
138+ class Meta :
139+ model = Project
140+ fields = [
141+ "id" ,
142+ "name" ,
143+ "leader" ,
144+ "short_description" ,
145+ "image_address" ,
146+ "industry" ,
147+ "views_count" ,
148+ ]
149+ read_only_fields = ["leader" , "collaborator" ]
150+
151+
82152class UserDetailSerializer (serializers .ModelSerializer ):
83153 member = MemberSerializer (required = False )
84154 investor = InvestorSerializer (required = False )
@@ -89,6 +159,8 @@ class UserDetailSerializer(serializers.ModelSerializer):
89159 links = serializers .SerializerMethodField ()
90160 is_online = serializers .SerializerMethodField ()
91161 projects = serializers .SerializerMethodField ()
162+ # inline serializer with fields name, id, image_address, source is self.subscribed_projects
163+ subscribed_projects = UserSubscribedProjectsSerializer (many = True , read_only = True )
92164
93165 def get_projects (self , user : CustomUser ):
94166 return UserProjectsSerializer (
@@ -138,6 +210,7 @@ class Meta:
138210 "verification_date" ,
139211 "onboarding_stage" ,
140212 "projects" ,
213+ "subscribed_projects" ,
141214 ]
142215
143216 def update (self , instance , validated_data ):
@@ -211,50 +284,6 @@ def update(self, instance, validated_data):
211284 return instance
212285
213286
214- class UserProjectsSerializer (serializers .ModelSerializer ):
215- short_description = serializers .SerializerMethodField ()
216- views_count = serializers .SerializerMethodField ()
217- collaborator = serializers .SerializerMethodField (method_name = "get_collaborator" )
218-
219- def get_collaborator (self , project : Project ):
220- # TODO: fix me, import in a functon
221- from projects .serializers import CollaboratorSerializer
222-
223- user = (
224- self .context .get ("request" ).user
225- if self .context .get ("user" ) is None
226- else self .context .get ("user" )
227- )
228- try :
229- collaborator = project .collaborator_set .get (user = user )
230- except Collaborator .DoesNotExist :
231- return {}
232-
233- return CollaboratorSerializer (collaborator ).data
234-
235- @classmethod
236- def get_views_count (cls , project ):
237- return get_views_count (project )
238-
239- @classmethod
240- def get_short_description (cls , project ):
241- return project .get_short_description ()
242-
243- class Meta :
244- model = Project
245- fields = [
246- "id" ,
247- "name" ,
248- "leader" ,
249- "short_description" ,
250- "image_address" ,
251- "industry" ,
252- "views_count" ,
253- "collaborator" ,
254- ]
255- read_only_fields = ["leader" , "collaborator" ]
256-
257-
258287class UserListSerializer (serializers .ModelSerializer ):
259288 member = MemberSerializer (required = False )
260289 key_skills = KeySkillsField (required = False )
0 commit comments