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:
parent
b3ff2defc4
commit
f7bb6e7592
48 changed files with 464 additions and 4701 deletions
|
@ -1,4 +1,3 @@
|
|||
from .cloud_file import CloudFile
|
||||
from .file import File
|
||||
from .storage import MusicDir
|
||||
from .track_type import TrackType
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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"
|
|
@ -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)
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
from .cloud_file import CloudFileSerializer
|
||||
from .file import FileSerializer
|
||||
from .storage import MusicDirSerializer
|
||||
from .track_type import TrackTypeSerializer
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
from rest_framework import serializers
|
||||
|
||||
from ..models import MusicDir
|
||||
|
||||
|
||||
class MusicDirSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class Meta:
|
||||
model = MusicDir
|
||||
fields = "__all__"
|
|
@ -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,
|
||||
)
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
from .cloud_file import CloudFileViewSet
|
||||
from .file import FileViewSet
|
||||
from .storage import MusicDirViewSet
|
||||
from .track_type import TrackTypeViewSet
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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"
|
Loading…
Add table
Add a link
Reference in a new issue