diff --git a/program/views.py b/program/views.py index 48a7c45c132a5f1472ea0db42a22fbc4eb5ba3ab..5a6eb54489beac4b3623557895649feecdd7dfac 100644 --- a/program/views.py +++ b/program/views.py @@ -1,27 +1,26 @@ -# -*- coding: utf-8 -*- - import json from datetime import date, datetime, time, timedelta -from django.db.models import Q -from django.utils.translation import ugettext_lazy as _ -from django.core.exceptions import ObjectDoesNotExist from django.contrib.auth.models import User -from django.http import Http404, HttpResponse, JsonResponse +from django.db.models import Q +from django.http import HttpResponse from django.shortcuts import get_object_or_404 +from django.utils import timezone +from django.utils.translation import ugettext_lazy as _ from django.views.generic.base import TemplateView from django.views.generic.detail import DetailView from django.views.generic.list import ListView -from django.forms.models import model_to_dict -from rest_framework import permissions, serializers, status, viewsets -from rest_framework.views import APIView -from rest_framework.response import Response +from rest_framework import permissions, status, viewsets from rest_framework.pagination import LimitOffsetPagination +from rest_framework.response import Response -from program.models import Type, MusicFocus, Language, Note, Show, Category, FundingCategory, Topic, TimeSlot, Host, Schedule, RRule -from program.serializers import TypeSerializer, LanguageSerializer, MusicFocusSerializer, NoteSerializer, ShowSerializer, ScheduleSerializer, CategorySerializer, FundingCategorySerializer, TopicSerializer, TimeSlotSerializer, HostSerializer, UserSerializer +from program.models import Type, MusicFocus, Language, Note, Show, Category, FundingCategory, Topic, TimeSlot, Host, Schedule +from program.serializers import TypeSerializer, LanguageSerializer, MusicFocusSerializer, NoteSerializer, ShowSerializer, \ + ScheduleSerializer, CategorySerializer, FundingCategorySerializer, TopicSerializer, TimeSlotSerializer, HostSerializer, \ + UserSerializer from program.utils import tofirstdayinisoweek, get_cached_shows + # Deprecated class CalendarView(TemplateView): template_name = 'calendar.html' @@ -30,7 +29,7 @@ class CalendarView(TemplateView): # Deprecated class HostListView(ListView): context_object_name = 'host_list' - queryset = Host.objects.filter(Q(is_active=True) | Q(shows__schedules__until__gt=datetime.now())).distinct() + queryset = Host.objects.filter(Q(is_active=True) | Q(shows__schedules__until__gt=timezone.now())).distinct() template_name = 'host_list.html' @@ -85,7 +84,7 @@ class RecommendationsListView(ListView): context_object_name = 'recommendation_list' template_name = 'recommendation_list.html' - now = datetime.now() + now = timezone.now() end = now + timedelta(weeks=1) queryset = TimeSlot.objects.filter(Q(note__isnull=False, note__status=1, @@ -167,7 +166,7 @@ class WeekScheduleView(TemplateView): week = self.kwargs.get('week', None) if year is None and week is None: - year, week = datetime.now().strftime('%G__%V').split('__') + year, week = timezone.now().strftime('%G__%V').split('__') monday = tofirstdayinisoweek(int(year), int(week)) tuesday = monday + timedelta(days=1) @@ -335,7 +334,7 @@ def json_timeslots_specials(request): if show['type'] == 's': specials[show['id']] = show - for ts in TimeSlot.objects.filter(end__gt=datetime.now(), + for ts in TimeSlot.objects.filter(end__gt=timezone.now(), schedule__automation_id__in=specials.iterkeys()).select_related('show'): automation_id = ts.schedule.automation_id start = ts.start.strftime('%Y-%m-%d_%H:%M:%S') @@ -418,6 +417,7 @@ class APIUserViewSet(viewsets.ModelViewSet): def update(self, request, pk=None): + serializer = UserSerializer(data=request.data) # Common users may only edit themselves if not request.user.is_superuser and int(pk) != request.user.id: return Response(serializer.initial_data, status=status.HTTP_401_UNAUTHORIZED) @@ -730,8 +730,8 @@ class APITimeSlotViewSet(viewsets.ModelViewSet): end = start + timedelta(days=60) if self.request.GET.get('start') and self.request.GET.get('end'): - start = datetime.combine( datetime.strptime(self.request.GET.get('start'), '%Y-%m-%d').date(), time(0, 0)) - end = datetime.combine( datetime.strptime(self.request.GET.get('end'), '%Y-%m-%d').date(), time(23, 59)) + start = datetime.combine(datetime.strptime(self.request.GET.get('start'), '%Y-%m-%d').date(), time(0, 0)) + end = datetime.combine(datetime.strptime(self.request.GET.get('end'), '%Y-%m-%d').date(), time(23, 59)) '''Endpoints''' @@ -776,7 +776,7 @@ class APITimeSlotViewSet(viewsets.ModelViewSet): Timeslots may only be created by adding/updating schedules TODO: Adding single timeslot which fits to schedule? """ - return Response(status=HTTP_401_UNAUTHORIZED) + return Response(status=status.HTTP_401_UNAUTHORIZED) def update(self, request, pk=None, schedule_pk=None, show_pk=None): @@ -1178,4 +1178,4 @@ class APIHostViewSet(viewsets.ModelViewSet): if self.request.GET.get('active') == 'false': return Host.objects.filter(is_active=False) - return Host.objects.all() \ No newline at end of file + return Host.objects.all()