Commit 0430072c by Bessie Steinberg

communicate with ecom

parent 4703b408
......@@ -21,7 +21,7 @@ from course_discovery.apps.core.api_client.lms import LMSAPIClient
from course_discovery.apps.course_metadata.choices import CourseRunStatus, ProgramStatus
from course_discovery.apps.course_metadata.models import (
FAQ, CorporateEndorsement, Course, CourseEntitlement, CourseRun, Endorsement, Image, Organization, Person,
PersonSocialNetwork, PersonWork, Position, Prerequisite, Program, ProgramType, Seat, SeatType, Subject, Topic,
PersonSocialNetwork, PersonWork, Position, Prerequisite, Program, ProgramType, DigitalBookBundle, Seat, SeatType, Subject, Topic,
Video
)
from course_discovery.apps.course_metadata.search_indexes import CourseIndex, CourseRunIndex, ProgramIndex
......@@ -954,6 +954,26 @@ class ProgramTypeSerializer(serializers.ModelSerializer):
fields = ('name', 'logo_image', 'applicable_seat_types', 'slug',)
class MinimalDigitalBookBundleSerializer(serializers.ModelSerializer):
@classmethod
def prefetch_queryset(cls):
return DigitalBookBundle.objects.all()
class Meta:
model = DigitalBookBundle
fields = (
'uuid',
'title',
'book_key',
'course' #TODO: return actual course not course id
)
def get_course(self, digital_book_bundle):
import pdb; pdb.set_trace()
pass
class AffiliateWindowSerializer(serializers.ModelSerializer):
""" Serializer for Affiliate Window product feeds. """
......
......@@ -12,6 +12,7 @@ from course_discovery.apps.api.v1.views.currency import CurrencyView
from course_discovery.apps.api.v1.views.organizations import OrganizationViewSet
from course_discovery.apps.api.v1.views.people import PersonViewSet
from course_discovery.apps.api.v1.views.program_types import ProgramTypeViewSet
from course_discovery.apps.api.v1.views.digital_book_bundles import DigitalBookBundleViewSet
from course_discovery.apps.api.v1.views.programs import ProgramViewSet
from course_discovery.apps.api.v1.views.subjects import SubjectViewSet
from course_discovery.apps.api.v1.views.topics import TopicViewSet
......@@ -36,6 +37,7 @@ router.register(r'subjects', SubjectViewSet, base_name='subject')
router.register(r'topics', TopicViewSet, base_name='topic')
router.register(r'programs', ProgramViewSet, base_name='program')
router.register(r'program_types', ProgramTypeViewSet, base_name='program_type')
router.register(r'digital_book_bundles', DigitalBookBundleViewSet, base_name='digital_book_bundle')
router.register(r'search/all', search_views.AggregateSearchViewSet, base_name='search-all')
router.register(r'search/courses', search_views.CourseSearchViewSet, base_name='search-courses')
router.register(r'search/course_runs', search_views.CourseRunSearchViewSet, base_name='search-course_runs')
......
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticated
from rest_framework_extensions.cache.mixins import CacheResponseMixin
from course_discovery.apps.api import filters, serializers
class DigitalBookBundleViewSet(CacheResponseMixin, viewsets.ReadOnlyModelViewSet):
""" Digital Book Bundle resource """
lookup_field = 'uuid'
lookup_value_regex = '[0-9a-f-]+'
permission_classes = (IsAuthenticated,)
filter_backends = (DjangoFilterBackend,)
#TODO: figure out what filters are appropriate
# filter_class
#TODO: what pagination should i support
#pagination_class
def get_serializer_class(self):
if self.action == 'list':
return serializers.MinimalDigitalBookBundleSerializer
# TODO: should this be something different? what is the difference between these two classes?!?
return serializers.MinimalDigitalBookBundleSerializer
def get_queryset(self):
# This method prevents prefetches on the digital book bundle queryset from "stacking"
# which happens when the queryset is stored in a class property
#TODO: should deals be asscoriated with partners?
return self.get_serializer_class().prefetch_queryset()
......@@ -30,7 +30,8 @@ class ProgramViewSet(CacheResponseMixin, viewsets.ReadOnlyModelViewSet):
return serializers.ProgramSerializer
def get_queryset(self):
# This method prevents prefetches on the program queryset from "stacking,"
# This method prevents prefetc
# hes on the program queryset from "stacking,"
# which happens when the queryset is stored in a class property.
partner = self.request.site.partner
return self.get_serializer_class().prefetch_queryset(partner)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment