|
9 | 9 | from core.permissions import IsStaffOrReadOnly |
10 | 10 | from core.serializers import SetLikedSerializer |
11 | 11 | from core.services import add_view, set_like |
| 12 | +from partner_programs.models import PartnerProgram, PartnerProgramUserProfile |
12 | 13 | from projects.filters import ProjectFilter |
13 | 14 | from projects.constants import VERBOSE_STEPS |
14 | | -from projects.helpers import get_recommended_users, check_related_fields_update |
| 15 | +from projects.helpers import ( |
| 16 | + get_recommended_users, |
| 17 | + check_related_fields_update, |
| 18 | + update_partner_program, |
| 19 | +) |
15 | 20 | from projects.models import Project, Achievement, ProjectNews |
16 | 21 | from projects.pagination import ProjectNewsPagination |
17 | 22 | from projects.permissions import ( |
@@ -51,6 +56,21 @@ def create(self, request, *args, **kwargs): |
51 | 56 | serializer.validated_data["leader"] = request.user |
52 | 57 |
|
53 | 58 | self.perform_create(serializer) |
| 59 | + |
| 60 | + try: |
| 61 | + partner_program_id = request.data.get("partner_program_id") |
| 62 | + update_partner_program(partner_program_id, request.user, serializer.instance) |
| 63 | + except PartnerProgram.DoesNotExist: |
| 64 | + return Response( |
| 65 | + {"detail": "Partner program with this id does not exist"}, |
| 66 | + status=status.HTTP_400_BAD_REQUEST, |
| 67 | + ) |
| 68 | + except PartnerProgramUserProfile.DoesNotExist: |
| 69 | + return Response( |
| 70 | + {"detail": "User is not a member of this partner program"}, |
| 71 | + status=status.HTTP_400_BAD_REQUEST, |
| 72 | + ) |
| 73 | + |
54 | 74 | headers = self.get_success_headers(serializer.data) |
55 | 75 | return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) |
56 | 76 |
|
@@ -101,6 +121,20 @@ def retrieve(self, request, *args, **kwargs): |
101 | 121 | return Response(serializer.data) |
102 | 122 |
|
103 | 123 | def put(self, request, pk, **kwargs): |
| 124 | + # fixme: add partner_program_id to docs |
| 125 | + try: |
| 126 | + partner_program_id = request.data.get("partner_program_id") |
| 127 | + update_partner_program(partner_program_id, request.user, self.get_object()) |
| 128 | + except PartnerProgram.DoesNotExist: |
| 129 | + return Response( |
| 130 | + {"detail": "Partner program with this id does not exist"}, |
| 131 | + status=status.HTTP_400_BAD_REQUEST, |
| 132 | + ) |
| 133 | + except PartnerProgramUserProfile.DoesNotExist: |
| 134 | + return Response( |
| 135 | + {"detail": "User is not a member of this partner program"}, |
| 136 | + status=status.HTTP_400_BAD_REQUEST, |
| 137 | + ) |
104 | 138 | check_related_fields_update(request.data, pk) |
105 | 139 | return super(ProjectDetail, self).put(request, pk) |
106 | 140 |
|
|
0 commit comments