kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
Added scan endpoint to trigger a scan for a library
rodzic
077a17b093
commit
dda1cd2531
|
@ -176,6 +176,10 @@ class APILibrarySerializer(serializers.ModelSerializer):
|
|||
] + read_only_fields
|
||||
|
||||
|
||||
class APILibraryScanSerializer(serializers.Serializer):
|
||||
until = serializers.DateTimeField(required=False)
|
||||
|
||||
|
||||
class APILibraryCreateSerializer(serializers.ModelSerializer):
|
||||
actor = serializers.URLField()
|
||||
federation_enabled = serializers.BooleanField()
|
||||
|
|
|
@ -25,6 +25,7 @@ from . import models
|
|||
from . import permissions
|
||||
from . import renderers
|
||||
from . import serializers
|
||||
from . import tasks
|
||||
from . import utils
|
||||
from . import webfinger
|
||||
|
||||
|
@ -186,7 +187,7 @@ class LibraryViewSet(
|
|||
)
|
||||
|
||||
@list_route(methods=['get'])
|
||||
def scan(self, request, *args, **kwargs):
|
||||
def fetch(self, request, *args, **kwargs):
|
||||
account = request.GET.get('account')
|
||||
if not account:
|
||||
return response.Response(
|
||||
|
@ -195,6 +196,19 @@ class LibraryViewSet(
|
|||
data = library.scan_from_account_name(account)
|
||||
return response.Response(data)
|
||||
|
||||
@detail_route(methods=['post'])
|
||||
def scan(self, request, *args, **kwargs):
|
||||
library = self.get_object()
|
||||
serializer = serializers.APILibraryScanSerializer(
|
||||
data=request.data
|
||||
)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
id = tasks.scan_library.delay(
|
||||
library_id=library.pk,
|
||||
until=serializer.validated_data['until']
|
||||
)
|
||||
return response.Response({'task': id})
|
||||
|
||||
@list_route(methods=['get'])
|
||||
def following(self, request, *args, **kwargs):
|
||||
library_actor = actors.SYSTEM_ACTORS['library'].get_actor_instance()
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
from django.urls import reverse
|
||||
from django.core.paginator import Paginator
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
|
||||
import pytest
|
||||
|
||||
|
@ -168,13 +169,13 @@ def test_library_actor_includes_library_link(db, settings, api_client):
|
|||
assert response.data['url'] == expected_links
|
||||
|
||||
|
||||
def test_can_scan_library(superuser_api_client, mocker):
|
||||
def test_can_fetch_library(superuser_api_client, mocker):
|
||||
result = {'test': 'test'}
|
||||
scan = mocker.patch(
|
||||
'funkwhale_api.federation.library.scan_from_account_name',
|
||||
return_value=result)
|
||||
|
||||
url = reverse('api:v1:federation:libraries-scan')
|
||||
url = reverse('api:v1:federation:libraries-fetch')
|
||||
response = superuser_api_client.get(
|
||||
url, data={'account': 'test@test.library'})
|
||||
|
||||
|
@ -306,3 +307,25 @@ def test_can_patch_library(factories, superuser_api_client):
|
|||
|
||||
for k, v in data.items():
|
||||
assert getattr(library, k) == v
|
||||
|
||||
|
||||
def test_scan_library(factories, mocker, superuser_api_client):
|
||||
scan = mocker.patch(
|
||||
'funkwhale_api.federation.tasks.scan_library.delay',
|
||||
return_value='id')
|
||||
library = factories['federation.Library']()
|
||||
now = timezone.now()
|
||||
data = {
|
||||
'until': now,
|
||||
}
|
||||
url = reverse(
|
||||
'api:v1:federation:libraries-scan',
|
||||
kwargs={'uuid': str(library.uuid)})
|
||||
response = superuser_api_client.post(url, data)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.data == {'task': 'id'}
|
||||
scan.assert_called_once_with(
|
||||
library_id=library.pk,
|
||||
until=now
|
||||
)
|
||||
|
|
|
@ -72,7 +72,7 @@ export default {
|
|||
this.isLoading = true
|
||||
self.errors = []
|
||||
self.result = null
|
||||
axios.get('/federation/libraries/scan/', {params: {account: this.libraryUsername}}).then((response) => {
|
||||
axios.get('/federation/libraries/fetch/', {params: {account: this.libraryUsername}}).then((response) => {
|
||||
self.result = response.data
|
||||
self.result.display_name = self.libraryUsername
|
||||
self.isLoading = false
|
||||
|
|
Ładowanie…
Reference in New Issue