From bd04c9af548247ca9b5d6cbadb2cb0d3005bc650 Mon Sep 17 00:00:00 2001 From: Andrew Buss Date: Mon, 18 May 2015 16:05:30 -0700 Subject: [PATCH] Only retrieve lecture periods for a section if it's needed --- flashcards/serializers.py | 5 ++++- flashcards/views.py | 7 ++++--- flashy/urls.py | 1 + scripts/setup_production.sh | 1 + 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/flashcards/serializers.py b/flashcards/serializers.py index 1a57f60..214c92c 100644 --- a/flashcards/serializers.py +++ b/flashcards/serializers.py @@ -69,7 +69,6 @@ class LecturePeriodSerializer(ModelSerializer): class SectionSerializer(ModelSerializer): - lectures = LecturePeriodSerializer(source='lectureperiod_set', many=True, read_only=True) lecture_times = CharField() short_name = CharField() long_name = CharField() @@ -77,6 +76,10 @@ class SectionSerializer(ModelSerializer): class Meta: model = Section +class DeepSectionSerializer(SectionSerializer): + lectures = LecturePeriodSerializer(source='lectureperiod_set', many=True, read_only=True) + + class UserSerializer(ModelSerializer): email = EmailField(required=False) diff --git a/flashcards/views.py b/flashcards/views.py index bca6be4..14b7682 100644 --- a/flashcards/views.py +++ b/flashcards/views.py @@ -6,7 +6,7 @@ from flashcards.api import StandardResultsSetPagination, IsEnrolledInAssociatedS from flashcards.models import Section, User, Flashcard, FlashcardHide, UserFlashcard from flashcards.serializers import SectionSerializer, UserUpdateSerializer, RegistrationSerializer, UserSerializer, \ PasswordResetSerializer, PasswordResetRequestSerializer, EmailPasswordSerializer, FlashcardSerializer, \ - FlashcardUpdateSerializer + FlashcardUpdateSerializer, DeepSectionSerializer from rest_framework.decorators import detail_route, permission_classes, api_view, list_route from rest_framework.generics import ListAPIView, GenericAPIView from rest_framework.mixins import CreateModelMixin, RetrieveModelMixin @@ -23,7 +23,7 @@ from simple_email_confirmation import EmailAddress class SectionViewSet(ReadOnlyModelViewSet): queryset = Section.objects.all() - serializer_class = SectionSerializer + serializer_class = DeepSectionSerializer pagination_class = StandardResultsSetPagination permission_classes = [IsAuthenticated] @@ -74,6 +74,7 @@ class SectionViewSet(ReadOnlyModelViewSet): description: space-separated list of terms required: true type: form + response_serializer: SectionSerializer """ query = request.GET.get('q', None) if not query: return Response('[]') @@ -111,7 +112,7 @@ class SectionViewSet(ReadOnlyModelViewSet): class UserSectionListView(ListAPIView): - serializer_class = SectionSerializer + serializer_class = DeepSectionSerializer permission_classes = [IsAuthenticated] def get_queryset(self): diff --git a/flashy/urls.py b/flashy/urls.py index a3fc6b0..19e7629 100644 --- a/flashy/urls.py +++ b/flashy/urls.py @@ -28,6 +28,7 @@ urlpatterns = [ if IN_PRODUCTION: urlpatterns += (url(r'^admin/django-ses/', include('django_ses.urls')),) + urlpatterns += (url(r'^admin/pghero/', include('django_pghero.urls')),) if DEBUG: urlpatterns += [url(r'^app/(?P.*)$', serve_with_default, diff --git a/scripts/setup_production.sh b/scripts/setup_production.sh index a3952f2..4874f19 100755 --- a/scripts/setup_production.sh +++ b/scripts/setup_production.sh @@ -6,6 +6,7 @@ pip install psycopg2 pip install gunicorn pip install newrelic pip install django-ses +pip install django-pghero python manage.py migrate -- 1.9.1