feat: move storage path setting to configuration file

- change default storage path to /srv/libretime
- remove music dirs table
- use /tmp for testing storage
- storage dir should always have a trailing slash
This commit is contained in:
jo 2022-04-18 20:34:38 +02:00 committed by Kyle Robbertze
parent b3ff2defc4
commit f7bb6e7592
48 changed files with 464 additions and 4701 deletions

View file

@ -1,4 +1,3 @@
from .cloud_file import CloudFile
from .file import File
from .storage import MusicDir
from .track_type import TrackType

View file

@ -5,9 +5,6 @@ class File(models.Model):
name = models.CharField(max_length=255)
mime = models.CharField(max_length=255)
ftype = models.CharField(max_length=128)
directory = models.ForeignKey(
"MusicDir", models.DO_NOTHING, db_column="directory", blank=True, null=True
)
filepath = models.TextField(blank=True, null=True)
import_status = models.IntegerField()
currently_accessing = models.IntegerField(db_column="currentlyaccessing")

View file

@ -1,12 +0,0 @@
from django.db import models
class MusicDir(models.Model):
directory = models.TextField(unique=True, blank=True, null=True)
type = models.CharField(max_length=255, blank=True, null=True)
exists = models.BooleanField(blank=True, null=True)
watched = models.BooleanField(blank=True, null=True)
class Meta:
managed = False
db_table = "cc_music_dirs"

View file

@ -1,9 +1,8 @@
from rest_framework import routers
from .views import CloudFileViewSet, FileViewSet, MusicDirViewSet, TrackTypeViewSet
from .views import CloudFileViewSet, FileViewSet, TrackTypeViewSet
router = routers.DefaultRouter()
router.register("files", FileViewSet)
router.register("music-dirs", MusicDirViewSet)
router.register("cloud-files", CloudFileViewSet)
router.register("track-types", TrackTypeViewSet)

View file

@ -1,4 +1,3 @@
from .cloud_file import CloudFileSerializer
from .file import FileSerializer
from .storage import MusicDirSerializer
from .track_type import TrackTypeSerializer

View file

@ -1,9 +0,0 @@
from rest_framework import serializers
from ..models import MusicDir
class MusicDirSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = MusicDir
fields = "__all__"

View file

@ -24,13 +24,8 @@ class TestFileViewSet(APITestCase):
self.assertEqual(response.status_code, 404)
def test_exists(self):
music_dir = baker.make(
"storage.MusicDir",
directory=str(fixture_path),
)
file = baker.make(
"storage.File",
directory=music_dir,
mime="audio/mp3",
filepath=AUDIO_FILENAME,
)

View file

@ -1,4 +1,3 @@
from .cloud_file import CloudFileViewSet
from .file import FileViewSet
from .storage import MusicDirViewSet
from .track_type import TrackTypeViewSet

View file

@ -1,5 +1,6 @@
import os
from django.conf import settings
from django.http import FileResponse
from django.shortcuts import get_object_or_404
from rest_framework import viewsets
@ -20,7 +21,5 @@ class FileViewSet(viewsets.ModelViewSet):
pk = IntegerField().to_internal_value(data=pk)
file = get_object_or_404(File, pk=pk)
storage = file.directory
path = os.path.join(storage.directory, file.filepath)
path = os.path.join(settings.CONFIG.storage.path, file.filepath)
return FileResponse(open(path, "rb"), content_type=file.mime)

View file

@ -1,10 +0,0 @@
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"