Commit 9005819d by Bessie Steinberg

digital book bundle api

parent 0430072c
......@@ -26,6 +26,9 @@ from course_discovery.apps.course_metadata.models import (
)
from course_discovery.apps.course_metadata.search_indexes import CourseIndex, CourseRunIndex, ProgramIndex
import logging
logger = logging.getLogger(__name__)
User = get_user_model()
COMMON_IGNORED_FIELDS = ('text',)
......@@ -955,10 +958,14 @@ class ProgramTypeSerializer(serializers.ModelSerializer):
class MinimalDigitalBookBundleSerializer(serializers.ModelSerializer):
courses = MinimalCourseSerializer(many=True, read_only=True)
@classmethod
def prefetch_queryset(cls):
return DigitalBookBundle.objects.all()
#TODO: optimize this
return DigitalBookBundle.objects.prefetch_related(
Prefetch('courses', queryset=MinimalCourseSerializer.prefetch_queryset())
)
class Meta:
model = DigitalBookBundle
......@@ -966,13 +973,16 @@ class MinimalDigitalBookBundleSerializer(serializers.ModelSerializer):
'uuid',
'title',
'book_key',
'course' #TODO: return actual course not course id
'courses'
)
def get_course(self, digital_book_bundle):
import pdb; pdb.set_trace()
pass
course_runs = list(digital_book_bundle.course_runs)
logger.info(">>> course_runs: %s", course_runs)
return MinimalCourseSerializer()
class AffiliateWindowSerializer(serializers.ModelSerializer):
""" Serializer for Affiliate Window product feeds. """
......
......@@ -115,10 +115,9 @@ class DigitalBookBundleAdmin(admin.ModelAdmin):
'id',
'uuid',
'title',
'book_key',
'course'
'book_key'
)
raw_id_fields = ('course',)
raw_id_fields = ('courses',)
@admin.register(Program)
......
# -*- coding: utf-8 -*-
# Generated by Django 1.11.3 on 2018-03-07 15:40
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('course_metadata', '0078_merge_20180209_1044'),
('course_metadata', '0078_digitalbookbundle'),
]
operations = [
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.3 on 2018-03-07 22:34
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('course_metadata', '0079_merge_20180307_1540'),
]
operations = [
migrations.RemoveField(
model_name='digitalbookbundle',
name='course',
),
migrations.AddField(
model_name='digitalbookbundle',
name='courses',
field=models.ManyToManyField(blank=True, to='course_metadata.Course'),
),
]
......@@ -934,9 +934,7 @@ class DigitalBookBundle(TimeStampedModel):
)
#TODO: replace with foreign key
book_key = models.CharField(max_length=255)
#TODO: we may one day want to make this a many to many relationship
#TODO: should it be a course or a course run?
course = models.ForeignKey(Course)
courses = models.ManyToManyField(Course, blank=True)
class Program(TimeStampedModel):
......
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