Skip to content

Commit c82cfd2

Browse files
committed
projects that linked to programs aren't shown in projects/all
1 parent 153a44a commit c82cfd2

1 file changed

Lines changed: 40 additions & 32 deletions

File tree

projects/views.py

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,22 @@
5555

5656

5757
class ProjectList(generics.ListCreateAPIView):
58-
queryset = Project.objects.get_projects_for_list_view()
5958
serializer_class = ProjectListSerializer
6059
permission_classes = [IsAuthenticated, permissions.IsAuthenticatedOrReadOnly]
6160
filter_backends = (filters.DjangoFilterBackend,)
6261
filterset_class = ProjectFilter
6362
pagination_class = ProjectsPagination
6463

64+
def get_queryset(self) -> QuerySet[Project]:
65+
queryset = Project.objects.get_projects_for_list_view()
66+
is_program_needed = self.request.query_params.get("partner_program", None)
67+
if not is_program_needed:
68+
queryset_without_projects_linked_to_programs = queryset.filter(
69+
partner_program_profiles__isnull=True
70+
)
71+
return queryset_without_projects_linked_to_programs
72+
return queryset
73+
6574
def create(self, request, *args, **kwargs):
6675
serializer = self.get_serializer(data=request.data)
6776
serializer.is_valid(raise_exception=True)
@@ -500,39 +509,38 @@ def post(self, request, project_pk):
500509
)
501510

502511

512+
# class SwitchLeaderRole(generics.GenericAPIView):
513+
# permission_classes = [IsProjectLeader]
514+
# queryset = Project.objects.all().select_related("leader")
515+
#
516+
# def _get_new_leader(self, user_id: int, project: Project) -> Collaborator:
517+
# try:
518+
# return Collaborator.objects.select_related("user").get(
519+
# user_id=user_id, project=project
520+
# )
521+
# except ObjectDoesNotExist:
522+
# raise CollaboratorDoesNotExist(
523+
# f"""Collaborator with user_id: {user_id} does not exist. Either user_id is not correct, or project_id
524+
# is not correct, or try adding this user to a project (as collaborator) before making them a leader. """
525+
# )
526+
#
527+
# def patch(self, request, pk: int):
528+
# project = self.get_object()
529+
#
530+
# new_leader_id = int(request.data["new_leader_id"])
531+
# new_leader = self._get_new_leader(new_leader_id, project)
532+
#
533+
# if project.leader.id == new_leader_id:
534+
# return Response(
535+
# {"error": "User is already a leader of a project"},
536+
# status=status.HTTP_422_UNPROCESSABLE_ENTITY,
537+
# )
538+
#
539+
# project.leader = new_leader.user
540+
# project.save()
541+
# return Response(status=204)
503542

504-
class SwitchLeaderRole(generics.GenericAPIView):
505-
permission_classes = [IsProjectLeader]
506-
queryset = Project.objects.all().select_related("leader")
507-
508-
def _get_new_leader(self, user_id: int, project: Project) -> Collaborator:
509-
try:
510-
return Collaborator.objects.select_related("user").get(
511-
user_id=user_id, project=project
512-
)
513-
except ObjectDoesNotExist:
514-
raise CollaboratorDoesNotExist(
515-
f"""Collaborator with user_id: {user_id} does not exist. Either user_id is not correct, or project_id
516-
is not correct, or try adding this user to a project (as collaborator) before making them a leader. """
517-
)
518-
519-
def patch(self, request, pk: int):
520-
project = self.get_object()
521-
522-
new_leader_id = int(request.data["new_leader_id"])
523-
new_leader = self._get_new_leader(new_leader_id, project)
524-
525-
if project.leader.id == new_leader_id:
526-
return Response(
527-
{"error": "User is already a leader of a project"},
528-
status=status.HTTP_422_UNPROCESSABLE_ENTITY,
529-
)
530-
531-
project.leader = new_leader.user
532-
project.save()
533-
return Response(status=204)
534543

535-
536544
class LeaveProject(generics.GenericAPIView):
537545
permission_classes = [IsAuthenticated]
538546

0 commit comments

Comments
 (0)