Skip to content

Commit 553918a

Browse files
committed
Add partner_programs_tags field to ProjectDetailSerializer
1 parent b3d4a25 commit 553918a

3 files changed

Lines changed: 24 additions & 1 deletion

File tree

projects/serializers.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,14 @@ class ProjectDetailSerializer(serializers.ModelSerializer):
7272
likes_count = serializers.SerializerMethodField(method_name="count_likes")
7373
views_count = serializers.SerializerMethodField(method_name="count_views")
7474
links = serializers.SerializerMethodField()
75+
partner_programs_tags = serializers.SerializerMethodField()
76+
77+
@classmethod
78+
def get_partner_programs_tags(cls, project):
79+
profiles_qs = project.partner_program_profiles.select_related(
80+
"partner_program"
81+
).only("partner_program__tag")
82+
return [profile.partner_program.tag for profile in profiles_qs]
7583

7684
@classmethod
7785
def get_links(cls, project):
@@ -119,6 +127,7 @@ class Meta:
119127
"datetime_updated",
120128
"views_count",
121129
"likes_count",
130+
"partner_programs_tags",
122131
]
123132
read_only_fields = [
124133
"leader",

projects/views.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,20 @@ def put(self, request, pk, **kwargs):
139139
return super(ProjectDetail, self).put(request, pk)
140140

141141
def patch(self, request, pk, **kwargs):
142+
# fixme: add partner_program_id to docs
143+
try:
144+
partner_program_id = request.data.get("partner_program_id")
145+
update_partner_program(partner_program_id, request.user, self.get_object())
146+
except PartnerProgram.DoesNotExist:
147+
return Response(
148+
{"detail": "Partner program with this id does not exist"},
149+
status=status.HTTP_400_BAD_REQUEST,
150+
)
151+
except PartnerProgramUserProfile.DoesNotExist:
152+
return Response(
153+
{"detail": "User is not a member of this partner program"},
154+
status=status.HTTP_400_BAD_REQUEST,
155+
)
142156
check_related_fields_update(request.data, pk)
143157
return super(ProjectDetail, self).put(request, pk)
144158

users/validators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def user_name_validator(name):
2020
for letter in name:
2121
if letter.upper() not in valid_name_chars:
2222
raise ValidationError(
23-
"Имя содержит недопустимые символы. Могут быть только символы киррилического алфавита."
23+
"Имя содержит недопустимые символы. Могут быть только символы кириллического алфавита."
2424
)
2525
if len(name) < 2:
2626
raise ValidationError("Имя слишком короткое")

0 commit comments

Comments
 (0)