Merge branch 'hotfix/categories_api_12-02-19' into 'master'

не все категории отображаются при добавлении курса

See merge request lilschool/site!267
remotes/origin/feature/course_access_duration_7-02-19
Danil 7 years ago
commit ec6e70e868
  1. 17
      api/v1/__init__.py
  2. 34
      api/v1/views.py
  3. 15
      apps/course/management/commands/fix_access_expire.py
  4. 2
      web/src/components/CourseRedactor.vue

@ -43,3 +43,20 @@ class ExtendViewSet(object):
class ExtendedModelViewSet(ExtendViewSet, viewsets.ModelViewSet):
pass
class BothListFormatMixin:
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
if request.query_params.get('page'):
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
else:
return Response({'results': []})
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)

@ -10,7 +10,7 @@ from rest_framework.decorators import (detail_route, list_route, action,
from rest_framework.response import Response
from rest_framework.settings import api_settings
from . import ExtendedModelViewSet
from . import ExtendedModelViewSet, BothListFormatMixin
from .serializers.config import ConfigSerializer
from .serializers.course import (
@ -213,7 +213,7 @@ class LikeViewSet(ExtendedModelViewSet):
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
class CategoryViewSet(ExtendedModelViewSet):
class CategoryViewSet(BothListFormatMixin, ExtendedModelViewSet):
queryset = Category.objects.order_by('-id')
serializer_class = CategorySerializer
search_fields = ('title',)
@ -221,7 +221,7 @@ class CategoryViewSet(ExtendedModelViewSet):
# permission_classes = (IsAdmin,)
class CourseViewSet(ExtendedModelViewSet):
class CourseViewSet(BothListFormatMixin, ExtendedModelViewSet):
queryset = Course.objects.select_related(
'author', 'category', 'cover', 'gallery',
).prefetch_related(
@ -243,20 +243,6 @@ class CourseViewSet(ExtendedModelViewSet):
# 'delete': IsAdmin,
# }
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
if request.query_params.get('page'):
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
else:
return Response({'results': []})
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
@list_route(methods=['get'])
def draft(self, request):
drafts = Course.objects.filter(author=request.user, status=Course.DRAFT)
@ -735,7 +721,7 @@ class FAQViewSet(ExtendedModelViewSet):
serializer_class = FAQSerializer
class BonusesViewSet(ExtendedModelViewSet):
class BonusesViewSet(BothListFormatMixin, ExtendedModelViewSet):
queryset = UserBonus.objects.all()
serializer_class = UserBonusCreateSerializer
serializer_class_map = {
@ -752,15 +738,3 @@ class BonusesViewSet(ExtendedModelViewSet):
'referral__referral__first_name',
'referral__referral__last_name',
)
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
if request.query_params.get('page'):
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)

@ -23,3 +23,18 @@ class Command(BaseCommand):
payment.save()
'''
TEST
select c.id, c.title, cp.access_duration
from
course_course c,
(select cp.course_id, count(*), cp.access_expire - date_trunc('day', p.created_at) access_duration
from payment_coursepayment cp,
payment_payment p
where p.id = cp.payment_ptr_id and p.status = 0
group by cp.course_id, cp.access_expire - date_trunc('day', p.created_at)) cp
where cp.course_id = c.id
order by c.title
'''

@ -892,7 +892,7 @@
promises.push(cats);
cats.then((response) => {
if (response.data) {
this.categoryOptions = response.data.results;
this.categoryOptions = response.data;
}
});

Loading…
Cancel
Save