Merge branch '1151-list-librarie' into 'master'

Fix #1151: Updated the /api/v1/libraries endpoint to support listing public libraries of a pod

See merge request funkwhale/funkwhale!1135
This commit is contained in:
Agate 2020-06-05 11:26:55 +02:00
commit d43eed805b
6 changed files with 45 additions and 4 deletions

View file

@ -218,3 +218,12 @@ class AlbumFilter(
def filter_playable(self, queryset, name, value):
actor = utils.get_actor_from_request(self.request)
return queryset.playable_by(actor, value)
class LibraryFilter(filters.FilterSet):
q = fields.SearchFilter(search_fields=["name"],)
scope = common_filters.ActorScopeFilter(actor_field="actor", distinct=True)
class Meta:
model = models.Library
fields = ["privacy_level", "q", "scope"]

View file

@ -273,6 +273,7 @@ class LibraryViewSet(
oauth_permissions.ScopePermission,
common_permissions.OwnerPermission,
]
filterset_class = filters.LibraryFilter
required_scope = "libraries"
anonymous_policy = "setting"
owner_field = "actor.user"
@ -282,8 +283,12 @@ class LibraryViewSet(
qs = super().get_queryset()
# allow retrieving a single library by uuid if request.user isn't
# the owner. Any other get should be from the owner only
if self.action != "retrieve":
if self.action not in ["retrieve", "list"]:
qs = qs.filter(actor=self.request.user.actor)
if self.action == "list":
actor = utils.get_actor_from_request(self.request)
qs = qs.viewable_by(actor)
return qs
def perform_create(self, serializer):