Skip to content

Commit f384285

Browse files
authored
Merge pull request #567 from PROCOLLAB-github/feature/filter_for_program
Добавлена фильтрация программ по пользователю
2 parents 41a87c0 + 5de22ae commit f384285

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

partner_programs/serializers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ def count_views(self, program):
2929
return get_views_count(program)
3030

3131
def get_short_description(self, program):
32+
if not program.description:
33+
return ""
3234
return program.description[:125]
3335

3436
def get_is_user_liked(self, obj):

partner_programs/views.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,24 @@ class PartnerProgramList(generics.ListCreateAPIView):
6565
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
6666
pagination_class = PartnerProgramPagination
6767

68+
def get_queryset(self):
69+
base_qs = super().get_queryset()
70+
participating_flag = self.request.query_params.get("participating")
71+
if not participating_flag:
72+
return base_qs
73+
74+
if not self.request.user.is_authenticated:
75+
return PartnerProgram.objects.none()
76+
77+
now = timezone.now()
78+
return (
79+
base_qs.filter(
80+
partner_program_profiles__user=self.request.user,
81+
datetime_finished__gte=now,
82+
)
83+
.distinct()
84+
)
85+
6886

6987
class PartnerProgramDetail(generics.RetrieveAPIView):
7088
queryset = PartnerProgram.objects.prefetch_related("materials", "managers").all()

0 commit comments

Comments
 (0)