Merge branch 'master' into develop

plugins
Eliot Berriot 2019-06-28 09:38:55 +02:00
commit 17996ca936
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: DD6965E2476E5C27
9 zmienionych plików z 47 dodań i 4 usunięć

Wyświetl plik

@ -44,12 +44,14 @@ class ManageUserSimpleSerializer(serializers.ModelSerializer):
class ManageUserSerializer(serializers.ModelSerializer):
permissions = PermissionsSerializer(source="*")
upload_quota = serializers.IntegerField(allow_null=True)
actor = serializers.SerializerMethodField()
class Meta:
model = users_models.User
fields = (
"id",
"username",
"actor",
"email",
"name",
"is_active",
@ -82,6 +84,10 @@ class ManageUserSerializer(serializers.ModelSerializer):
)
return instance
def get_actor(self, obj):
if obj.actor:
return ManageBaseActorSerializer(obj.actor).data
class ManageInvitationSerializer(serializers.ModelSerializer):
users = ManageUserSimpleSerializer(many=True, required=False)

Wyświetl plik

@ -291,7 +291,7 @@ class ManageUserViewSet(
mixins.UpdateModelMixin,
viewsets.GenericViewSet,
):
queryset = users_models.User.objects.all().order_by("-id")
queryset = users_models.User.objects.all().select_related("actor").order_by("-id")
serializer_class = serializers.ManageUserSerializer
filterset_class = filters.ManageUserFilterSet
required_scope = "instance:users"

Wyświetl plik

@ -13,6 +13,8 @@ from rest_framework.compat import Mapping
logger = logging.getLogger(__name__)
NODEFAULT = object()
# default title used when imported tracks miss the `Album` tag, see #122
UNKWOWN_ALBUM = "[Unknown Album]"
class TagNotFound(KeyError):
@ -425,9 +427,11 @@ class AlbumField(serializers.Field):
def to_internal_value(self, data):
try:
title = data.get("album")
title = data.get("album") or ""
except TagNotFound:
raise serializers.ValidationError("Missing album tag")
title = ""
title = title.strip() or UNKWOWN_ALBUM
final = {
"title": title,
"release_date": data.get("date", None),

Wyświetl plik

@ -31,6 +31,7 @@ def compute_status(jobs):
AUDIO_EXTENSIONS_AND_MIMETYPE = [
("ogg", "audio/ogg"),
("opus", "audio/opus"),
("mp3", "audio/mpeg"),
("flac", "audio/x-flac"),
("flac", "audio/flac"),

Wyświetl plik

@ -539,6 +539,34 @@ def test_serializer_album_artist_missing():
assert serializer.validated_data == expected
@pytest.mark.parametrize(
"data",
[
# no album tag
{"title": "Track", "artist": "Artist"},
# empty/null values
{"title": "Track", "artist": "Artist", "album": ""},
{"title": "Track", "artist": "Artist", "album": " "},
{"title": "Track", "artist": "Artist", "album": None},
],
)
def test_serializer_album_default_title_when_missing_or_empty(data):
expected = {
"title": "Track",
"artists": [{"name": "Artist", "mbid": None}],
"album": {
"title": metadata.UNKWOWN_ALBUM,
"mbid": None,
"release_date": None,
"artists": [],
},
"cover_data": None,
}
serializer = metadata.TrackMetadataSerializer(data=metadata.FakeMetadata(data))
assert serializer.is_valid(raise_exception=True) is True
assert serializer.validated_data == expected
@pytest.mark.parametrize(
"field_name", ["copyright", "license", "mbid", "position", "disc_number"]
)

Wyświetl plik

@ -0,0 +1 @@
Support for importing files with no album tag (#122)

Wyświetl plik

@ -0,0 +1 @@
Added opus to the list of supported mimetypes and extensions (#868)

Wyświetl plik

@ -0,0 +1 @@
Fixed broken user admin for users with non-digit or letters in their username (#869)

Wyświetl plik

@ -45,7 +45,8 @@
</template>
<template slot="row-cells" slot-scope="scope">
<td>
<router-link :to="{name: 'manage.moderation.accounts.detail', params: {id: scope.obj.full_username }}">{{ scope.obj.username }}</router-link>
<router-link v-if="scope.obj.actor" :to="{name: 'manage.moderation.accounts.detail', params: {id: scope.obj.actor.full_username }}">{{ scope.obj.username }}</router-link>
<router-link v-else :to="{name: 'manage.moderation.accounts.detail', params: {id: scope.obj.full_username }}">{{ scope.obj.username }}</router-link>
</td>
<td>
<span>{{ scope.obj.email }}</span>