@@ -76,3 +76,59 @@ def get(self, request, *args, **kwargs):
7676 projects_serializer .is_valid ()
7777
7878 return self .get_paginated_response (projects_serializer .data )
79+
80+
81+ class RateProjectsDetails (generics .ListAPIView ):
82+ serializer_class = ProjectScoreGetSerializer
83+ permission_classes = [IsExpert ]
84+
85+ def get (self , request , * args , ** kwargs ):
86+ user = self .request .user
87+ project_id = self .kwargs .get ("project_id" )
88+
89+ criterias = Criteria .objects .prefetch_related ("partner_program" ).filter (
90+ partner_program_id = int (self .request .data .get ("program_id" ))
91+ )
92+ project = Project .objects .filter (id = int (project_id )).first ()
93+ scores = ProjectScore .objects .prefetch_related ("criteria" ).filter (
94+ criteria__in = criterias .values_list ("id" , flat = True ),
95+ user = user ,
96+ project = project ,
97+ )
98+
99+ criterias_data = []
100+ for criteria in criterias :
101+ criteria_data = {
102+ "id" : criteria .id ,
103+ "name" : criteria .name ,
104+ "description" : criteria .description ,
105+ "type" : criteria .type ,
106+ "min_value" : criteria .min_value ,
107+ "max_value" : criteria .max_value ,
108+ }
109+ criterias_data .append (criteria_data )
110+
111+ project_scores_data = []
112+ for project_score in scores :
113+ project_score_data = {
114+ "criteria_id" : project_score .criteria .id ,
115+ "value" : project_score .value ,
116+ }
117+ project_scores_data .append (project_score_data )
118+
119+ for score in project_scores_data :
120+ for criteria in criterias_data :
121+ if criteria ["id" ] == score ["criteria_id" ]:
122+ criteria ["value" ] = score ["value" ]
123+
124+ response = {
125+ "id" : project .id ,
126+ "name" : project .name ,
127+ "leader" : project .leader .id ,
128+ "description" : project .description ,
129+ "image_address" : project .image_address ,
130+ "industry" : project .industry .id ,
131+ "criterias" : criterias_data ,
132+ }
133+
134+ return Response (response , status = 200 )
0 commit comments