55from core .services import get_views_count
66from core .utils import get_user_online_cache_key
77from projects .models import Project
8+ from projects .serializers import CollaboratorSerializer
89from .models import CustomUser , Expert , Investor , Member , Mentor , UserAchievement
910
1011
@@ -94,9 +95,12 @@ def get_projects(cls, user: CustomUser):
9495 return UserProjectsSerializer (
9596 [
9697 collab .project
97- for collab in user .collaborations .select_related ("project" ).all ()
98- if not collab .project .draft
98+ for collab in user .collaborations .select_related ("project" ).filter (
99+ project__is_draft = False
100+ )
101+ # TODO: put this in user collaborations manager or something
99102 ],
103+ context = {"request" : cls .context .get ("request" )},
100104 many = True ,
101105 ).data
102106
@@ -213,7 +217,16 @@ def update(self, instance, validated_data):
213217
214218class UserProjectsSerializer (serializers .ModelSerializer ):
215219 short_description = serializers .SerializerMethodField ()
216- views_count = serializers .SerializerMethodField (method_name = "get_views_count" )
220+ views_count = serializers .SerializerMethodField ()
221+ collaborator = serializers .SerializerMethodField ()
222+
223+ @classmethod
224+ def get_collaborator (cls , project ):
225+ user = cls .context .get ("request" ).user
226+
227+ return CollaboratorSerializer (
228+ project .collaborator_set .filter (user = user ), many = False
229+ ).data
217230
218231 @classmethod
219232 def get_views_count (cls , project ):
@@ -233,8 +246,9 @@ class Meta:
233246 "image_address" ,
234247 "industry" ,
235248 "views_count" ,
249+ "collaborator" ,
236250 ]
237- read_only_fields = ["leader" ]
251+ read_only_fields = ["leader" , "collaborator" ]
238252
239253
240254class UserListSerializer (serializers .ModelSerializer ):
0 commit comments