Commit ce098d51 by Bessie Steinberg

Journal Bundle Get API

parent f320a8d1
......@@ -22,6 +22,7 @@ class JournalBundleAdmin(admin.ModelAdmin):
'title'
)
raw_id_fields = (
'partner',
'journals',
'courses'
)
\ No newline at end of file
)
"""Journal API Serializers"""
from rest_framework import serializers
from course_discovery.apps.journal.models import Journal
from course_discovery.apps.api.serializers import MinimalCourseSerializer
from course_discovery.apps.journal.models import Journal, JournalBundle
class JournalSerializer(serializers.HyperlinkedModelSerializer):
......@@ -21,3 +23,19 @@ class JournalSerializer(serializers.HyperlinkedModelSerializer):
model = Journal
# TODO - add partner
fields = ('uuid', 'title', 'price', 'currency', 'sku', 'expires')
class JournalBundleSerializer(serializers.ModelSerializer):
courses = MinimalCourseSerializer(many=True, read_only=True)
journals = JournalSerializer(many=True, read_only=True)
partner = serializers.SlugRelatedField(slug_field='name', read_only=True)
class Meta:
model = JournalBundle
fields = (
'uuid',
'title',
'partner',
'journals',
'courses'
)
""" API v1 URLs. """
from rest_framework.routers import DefaultRouter
from .views import JournalViewSet
from .views import JournalViewSet, JournalBundleViewSet
router = DefaultRouter()
router.register(r'journals', JournalViewSet, base_name='journal')
router.register(r'journal_bundles', JournalBundleViewSet, base_name='journal_bundle')
urlpatterns = router.urls
'''JournalViewSet'''
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import viewsets
from rest_framework_extensions.cache.mixins import CacheResponseMixin
from rest_framework.permissions import IsAuthenticated
from course_discovery.apps.journal.models import Journal
from course_discovery.apps.journal.api.serializers import JournalSerializer
from course_discovery.apps.journal.models import Journal, JournalBundle
from course_discovery.apps.journal.api.serializers import JournalSerializer, JournalBundleSerializer
from course_discovery.apps.journal import constants as journal_constants
class JournalViewSet(viewsets.ModelViewSet):
......@@ -11,3 +15,14 @@ class JournalViewSet(viewsets.ModelViewSet):
"""
queryset = Journal.objects.all()
serializer_class = JournalSerializer
class JournalBundleViewSet(CacheResponseMixin, viewsets.ReadOnlyModelViewSet):
""" Journal Bundle"""
lookup_field = 'uuid'
lookup_value_regex = journal_constants.UUID_PATTERN
permission_classes = (IsAuthenticated,)
filter_backends = (DjangoFilterBackend,)
queryset = JournalBundle.objects.all()
serializer_class = JournalBundleSerializer
# -*- coding: utf-8 -*-
# Generated by Django 1.11.3 on 2018-03-22 20:17
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('core', '0007_auto_20171004_1133'),
('journal', '0003_auto_20180322_1827'),
]
operations = [
migrations.AddField(
model_name='journalbundle',
name='partner',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='core.Partner'),
preserve_default=False,
),
]
......@@ -54,5 +54,9 @@ class JournalBundle(TimeStampedModel):
max_length=CHARFIELD_MAX_LENGTH,
unique=True
)
partner = models.ForeignKey(Partner)
journals = models.ManyToManyField(Journal, blank=True)
courses = models.ManyToManyField(Course, blank=True)
def __str__(self):
return self.title
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