Commit ce098d51 by Bessie Steinberg

Journal Bundle Get API

parent f320a8d1
...@@ -22,6 +22,7 @@ class JournalBundleAdmin(admin.ModelAdmin): ...@@ -22,6 +22,7 @@ class JournalBundleAdmin(admin.ModelAdmin):
'title' 'title'
) )
raw_id_fields = ( raw_id_fields = (
'partner',
'journals', 'journals',
'courses' 'courses'
) )
\ No newline at end of file
"""Journal API Serializers""" """Journal API Serializers"""
from rest_framework import 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): class JournalSerializer(serializers.HyperlinkedModelSerializer):
...@@ -21,3 +23,19 @@ class JournalSerializer(serializers.HyperlinkedModelSerializer): ...@@ -21,3 +23,19 @@ class JournalSerializer(serializers.HyperlinkedModelSerializer):
model = Journal model = Journal
# TODO - add partner # TODO - add partner
fields = ('uuid', 'title', 'price', 'currency', 'sku', 'expires') 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. """ """ API v1 URLs. """
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
from .views import JournalViewSet from .views import JournalViewSet, JournalBundleViewSet
router = DefaultRouter() router = DefaultRouter()
router.register(r'journals', JournalViewSet, base_name='journal') router.register(r'journals', JournalViewSet, base_name='journal')
router.register(r'journal_bundles', JournalBundleViewSet, base_name='journal_bundle')
urlpatterns = router.urls urlpatterns = router.urls
'''JournalViewSet''' '''JournalViewSet'''
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import viewsets 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.models import Journal, JournalBundle
from course_discovery.apps.journal.api.serializers import JournalSerializer from course_discovery.apps.journal.api.serializers import JournalSerializer, JournalBundleSerializer
from course_discovery.apps.journal import constants as journal_constants
class JournalViewSet(viewsets.ModelViewSet): class JournalViewSet(viewsets.ModelViewSet):
...@@ -11,3 +15,14 @@ class JournalViewSet(viewsets.ModelViewSet): ...@@ -11,3 +15,14 @@ class JournalViewSet(viewsets.ModelViewSet):
""" """
queryset = Journal.objects.all() queryset = Journal.objects.all()
serializer_class = JournalSerializer 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): ...@@ -54,5 +54,9 @@ class JournalBundle(TimeStampedModel):
max_length=CHARFIELD_MAX_LENGTH, max_length=CHARFIELD_MAX_LENGTH,
unique=True unique=True
) )
partner = models.ForeignKey(Partner)
journals = models.ManyToManyField(Journal, blank=True) journals = models.ManyToManyField(Journal, blank=True)
courses = models.ManyToManyField(Course, 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