229 lines
8.2 KiB
Python
229 lines
8.2 KiB
Python
import os
|
|
from django.conf import settings
|
|
from django.http import FileResponse
|
|
from django.shortcuts import get_object_or_404
|
|
from rest_framework import status, viewsets
|
|
from rest_framework.decorators import api_view, action, permission_classes
|
|
from rest_framework.permissions import AllowAny
|
|
from rest_framework.response import Response
|
|
from .serializers import *
|
|
from .permissions import IsAdminOrOwnUser
|
|
|
|
class UserViewSet(viewsets.ModelViewSet):
|
|
queryset = get_user_model().objects.all()
|
|
serializer_class = UserSerializer
|
|
permission_classes = [IsAdminOrOwnUser]
|
|
model_permission_name = 'user'
|
|
|
|
class SmartBlockViewSet(viewsets.ModelViewSet):
|
|
queryset = SmartBlock.objects.all()
|
|
serializer_class = SmartBlockSerializer
|
|
model_permission_name = 'smartblock'
|
|
|
|
class SmartBlockContentViewSet(viewsets.ModelViewSet):
|
|
queryset = SmartBlockContent.objects.all()
|
|
serializer_class = SmartBlockContentSerializer
|
|
model_permission_name = 'smartblockcontent'
|
|
|
|
class SmartBlockCriteriaViewSet(viewsets.ModelViewSet):
|
|
queryset = SmartBlockCriteria.objects.all()
|
|
serializer_class = SmartBlockCriteriaSerializer
|
|
model_permission_name = 'smartblockcriteria'
|
|
|
|
class CountryViewSet(viewsets.ModelViewSet):
|
|
queryset = Country.objects.all()
|
|
serializer_class = CountrySerializer
|
|
model_permission_name = 'country'
|
|
|
|
class FileViewSet(viewsets.ModelViewSet):
|
|
queryset = File.objects.all()
|
|
serializer_class = FileSerializer
|
|
model_permission_name = 'file'
|
|
|
|
@action(detail=True, methods=['GET'])
|
|
def download(self, request, pk=None):
|
|
if pk is None:
|
|
return Response('No file requested', status=status.HTTP_400_BAD_REQUEST)
|
|
try:
|
|
pk = int(pk)
|
|
except ValueError:
|
|
return Response('File ID should be an integer',
|
|
status=status.HTTP_400_BAD_REQUEST)
|
|
|
|
filename = get_object_or_404(File, pk=pk)
|
|
directory = filename.directory
|
|
path = os.path.join(directory.directory, filename.filepath)
|
|
response = FileResponse(open(path, 'rb'), content_type=filename.mime)
|
|
return response
|
|
|
|
class ListenerCountViewSet(viewsets.ModelViewSet):
|
|
queryset = ListenerCount.objects.all()
|
|
serializer_class = ListenerCountSerializer
|
|
model_permission_name = 'listenercount'
|
|
|
|
class LiveLogViewSet(viewsets.ModelViewSet):
|
|
queryset = LiveLog.objects.all()
|
|
serializer_class = LiveLogSerializer
|
|
model_permission_name = 'livelog'
|
|
|
|
class LoginAttemptViewSet(viewsets.ModelViewSet):
|
|
queryset = LoginAttempt.objects.all()
|
|
serializer_class = LoginAttemptSerializer
|
|
model_permission_name = 'loginattempt'
|
|
|
|
class MountNameViewSet(viewsets.ModelViewSet):
|
|
queryset = MountName.objects.all()
|
|
serializer_class = MountNameSerializer
|
|
model_permission_name = 'mountname'
|
|
|
|
class MusicDirViewSet(viewsets.ModelViewSet):
|
|
queryset = MusicDir.objects.all()
|
|
serializer_class = MusicDirSerializer
|
|
model_permission_name = 'musicdir'
|
|
|
|
class PlaylistViewSet(viewsets.ModelViewSet):
|
|
queryset = Playlist.objects.all()
|
|
serializer_class = PlaylistSerializer
|
|
model_permission_name = 'playlist'
|
|
|
|
class PlaylistContentViewSet(viewsets.ModelViewSet):
|
|
queryset = PlaylistContent.objects.all()
|
|
serializer_class = PlaylistContentSerializer
|
|
model_permission_name = 'playlistcontent'
|
|
|
|
class PlayoutHistoryViewSet(viewsets.ModelViewSet):
|
|
queryset = PlayoutHistory.objects.all()
|
|
serializer_class = PlayoutHistorySerializer
|
|
model_permission_name = 'playouthistory'
|
|
|
|
class PlayoutHistoryMetadataViewSet(viewsets.ModelViewSet):
|
|
queryset = PlayoutHistoryMetadata.objects.all()
|
|
serializer_class = PlayoutHistoryMetadataSerializer
|
|
model_permission_name = 'playouthistorymetadata'
|
|
|
|
class PlayoutHistoryTemplateViewSet(viewsets.ModelViewSet):
|
|
queryset = PlayoutHistoryTemplate.objects.all()
|
|
serializer_class = PlayoutHistoryTemplateSerializer
|
|
model_permission_name = 'playouthistorytemplate'
|
|
|
|
class PlayoutHistoryTemplateFieldViewSet(viewsets.ModelViewSet):
|
|
queryset = PlayoutHistoryTemplateField.objects.all()
|
|
serializer_class = PlayoutHistoryTemplateFieldSerializer
|
|
model_permission_name = 'playouthistorytemplatefield'
|
|
|
|
class PreferenceViewSet(viewsets.ModelViewSet):
|
|
queryset = Preference.objects.all()
|
|
serializer_class = PreferenceSerializer
|
|
model_permission_name = 'perference'
|
|
|
|
class ScheduleViewSet(viewsets.ModelViewSet):
|
|
queryset = Schedule.objects.all()
|
|
serializer_class = ScheduleSerializer
|
|
filter_fields = ('starts', 'ends', 'playout_status', 'broadcasted')
|
|
model_permission_name = 'schedule'
|
|
|
|
class ServiceRegisterViewSet(viewsets.ModelViewSet):
|
|
queryset = ServiceRegister.objects.all()
|
|
serializer_class = ServiceRegisterSerializer
|
|
model_permission_name = 'serviceregister'
|
|
|
|
class SessionViewSet(viewsets.ModelViewSet):
|
|
queryset = Session.objects.all()
|
|
serializer_class = SessionSerializer
|
|
model_permission_name = 'session'
|
|
|
|
class ShowViewSet(viewsets.ModelViewSet):
|
|
queryset = Show.objects.all()
|
|
serializer_class = ShowSerializer
|
|
model_permission_name = 'show'
|
|
|
|
class ShowDaysViewSet(viewsets.ModelViewSet):
|
|
queryset = ShowDays.objects.all()
|
|
serializer_class = ShowDaysSerializer
|
|
model_permission_name = 'showdays'
|
|
|
|
class ShowHostViewSet(viewsets.ModelViewSet):
|
|
queryset = ShowHost.objects.all()
|
|
serializer_class = ShowHostSerializer
|
|
model_permission_name = 'showhost'
|
|
|
|
class ShowInstanceViewSet(viewsets.ModelViewSet):
|
|
queryset = ShowInstance.objects.all()
|
|
serializer_class = ShowInstanceSerializer
|
|
model_permission_name = 'showinstance'
|
|
|
|
class ShowRebroadcastViewSet(viewsets.ModelViewSet):
|
|
queryset = ShowRebroadcast.objects.all()
|
|
serializer_class = ShowRebroadcastSerializer
|
|
model_permission_name = 'showrebroadcast'
|
|
|
|
class StreamSettingViewSet(viewsets.ModelViewSet):
|
|
queryset = StreamSetting.objects.all()
|
|
serializer_class = StreamSettingSerializer
|
|
model_permission_name = 'streamsetting'
|
|
|
|
class UserTokenViewSet(viewsets.ModelViewSet):
|
|
queryset = UserToken.objects.all()
|
|
serializer_class = UserTokenSerializer
|
|
model_permission_name = 'usertoken'
|
|
|
|
class TimestampViewSet(viewsets.ModelViewSet):
|
|
queryset = Timestamp.objects.all()
|
|
serializer_class = TimestampSerializer
|
|
model_permission_name = 'timestamp'
|
|
|
|
class WebstreamViewSet(viewsets.ModelViewSet):
|
|
queryset = Webstream.objects.all()
|
|
serializer_class = WebstreamSerializer
|
|
model_permission_name = 'webstream'
|
|
|
|
class WebstreamMetadataViewSet(viewsets.ModelViewSet):
|
|
queryset = WebstreamMetadata.objects.all()
|
|
serializer_class = WebstreamMetadataSerializer
|
|
model_permission_name = 'webstreametadata'
|
|
|
|
class CeleryTaskViewSet(viewsets.ModelViewSet):
|
|
queryset = CeleryTask.objects.all()
|
|
serializer_class = CeleryTaskSerializer
|
|
model_permission_name = 'celerytask'
|
|
|
|
class CloudFileViewSet(viewsets.ModelViewSet):
|
|
queryset = CloudFile.objects.all()
|
|
serializer_class = CloudFileSerializer
|
|
model_permission_name = 'cloudfile'
|
|
|
|
class ImportedPodcastViewSet(viewsets.ModelViewSet):
|
|
queryset = ImportedPodcast.objects.all()
|
|
serializer_class = ImportedPodcastSerializer
|
|
model_permission_name = 'importedpodcast'
|
|
|
|
class PodcastViewSet(viewsets.ModelViewSet):
|
|
queryset = Podcast.objects.all()
|
|
serializer_class = PodcastSerializer
|
|
model_permission_name = 'podcast'
|
|
|
|
class PodcastEpisodeViewSet(viewsets.ModelViewSet):
|
|
queryset = PodcastEpisode.objects.all()
|
|
serializer_class = PodcastEpisodeSerializer
|
|
model_permission_name = 'podcastepisode'
|
|
|
|
class StationPodcastViewSet(viewsets.ModelViewSet):
|
|
queryset = StationPodcast.objects.all()
|
|
serializer_class = StationPodcastSerializer
|
|
model_permission_name = 'station'
|
|
|
|
class ThirdPartyTrackReferenceViewSet(viewsets.ModelViewSet):
|
|
queryset = ThirdPartyTrackReference.objects.all()
|
|
serializer_class = ThirdPartyTrackReferenceSerializer
|
|
model_permission_name = 'thirdpartytrackreference'
|
|
|
|
class TrackTypeViewSet(viewsets.ModelViewSet):
|
|
queryset = TrackType.objects.all()
|
|
serializer_class = TrackTypeSerializer
|
|
model_permission_name = 'tracktype'
|
|
|
|
@api_view(['GET'])
|
|
@permission_classes((AllowAny, ))
|
|
def version(request, *args, **kwargs):
|
|
return Response({'api_version': settings.API_VERSION})
|