Skip to content

Commit ebaa042

Browse files
authored
Merge pull request #291 from PROCOLLAB-github/rates_get_detail
get details added 1
2 parents 24c3254 + 61c0b18 commit ebaa042

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

project_rates/views.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)