Skip to content

Commit 82f1a49

Browse files
authored
Merge pull request #289 from PROCOLLAB-github/rates_get_detail
get details added
2 parents 45b771a + 88381c1 commit 82f1a49

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

project_rates/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from django.urls import path
22

3-
from project_rates.views import RateProject, RateProjects
3+
from project_rates.views import RateProject, RateProjects, RateProjectsDetails
44

55
urlpatterns = [
66
path("rate/", RateProject.as_view()),
77
path("<int:program_id>", RateProjects.as_view()),
8+
path("details/<int:project_id>", RateProjectsDetails.as_view()),
89
]

project_rates/views.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,58 @@ 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+
return Response(response, status=200)

0 commit comments

Comments
 (0)