feat(api): split api into multiple apps (#1626)
Fixes #1622 - split the api into 4 apps: core, history, schedule, storage - exploded the settings into testing/prod
This commit is contained in:
parent
87d2da9d84
commit
fce988aef1
120 changed files with 1499 additions and 1078 deletions
4
api/libretime_api/storage/views/__init__.py
Normal file
4
api/libretime_api/storage/views/__init__.py
Normal file
|
@ -0,0 +1,4 @@
|
|||
from .cloud_file import CloudFileViewSet
|
||||
from .file import FileViewSet
|
||||
from .storage import MusicDirViewSet
|
||||
from .track_type import TrackTypeViewSet
|
10
api/libretime_api/storage/views/cloud_file.py
Normal file
10
api/libretime_api/storage/views/cloud_file.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from rest_framework import viewsets
|
||||
|
||||
from ..models import CloudFile
|
||||
from ..serializers import CloudFileSerializer
|
||||
|
||||
|
||||
class CloudFileViewSet(viewsets.ModelViewSet):
|
||||
queryset = CloudFile.objects.all()
|
||||
serializer_class = CloudFileSerializer
|
||||
model_permission_name = "cloudfile"
|
33
api/libretime_api/storage/views/file.py
Normal file
33
api/libretime_api/storage/views/file.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
import os
|
||||
|
||||
from django.http import FileResponse
|
||||
from django.shortcuts import get_object_or_404
|
||||
from rest_framework import status, viewsets
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
|
||||
from ..models import File
|
||||
from ..serializers import FileSerializer
|
||||
|
||||
|
||||
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
|
10
api/libretime_api/storage/views/storage.py
Normal file
10
api/libretime_api/storage/views/storage.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from rest_framework import viewsets
|
||||
|
||||
from ..models import MusicDir
|
||||
from ..serializers import MusicDirSerializer
|
||||
|
||||
|
||||
class MusicDirViewSet(viewsets.ModelViewSet):
|
||||
queryset = MusicDir.objects.all()
|
||||
serializer_class = MusicDirSerializer
|
||||
model_permission_name = "musicdir"
|
10
api/libretime_api/storage/views/track_type.py
Normal file
10
api/libretime_api/storage/views/track_type.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from rest_framework import viewsets
|
||||
|
||||
from ..models import TrackType
|
||||
from ..serializers import TrackTypeSerializer
|
||||
|
||||
|
||||
class TrackTypeViewSet(viewsets.ModelViewSet):
|
||||
queryset = TrackType.objects.all()
|
||||
serializer_class = TrackTypeSerializer
|
||||
model_permission_name = "tracktype"
|
Loading…
Add table
Add a link
Reference in a new issue