Merge branch '564-delete-old-federated-tracks' into 'develop'

Fix #564: Added a script to prune pre 0.17 federated tracks

Closes #564

See merge request funkwhale/funkwhale!535
This commit is contained in:
Eliot Berriot 2019-01-14 17:25:11 +01:00
commit 53660f84f3
5 changed files with 56 additions and 1 deletions

View File

@ -2,6 +2,7 @@ from . import create_actors
from . import create_image_variations
from . import django_permissions_to_user_permissions
from . import migrate_to_user_libraries
from . import delete_pre_017_federated_uploads
from . import test
@ -10,5 +11,6 @@ __all__ = [
"create_image_variations",
"django_permissions_to_user_permissions",
"migrate_to_user_libraries",
"delete_pre_017_federated_uploads",
"test",
]

View File

@ -0,0 +1,14 @@
"""
Compute different sizes of image used for Album covers and User avatars
"""
from funkwhale_api.music.models import Upload
def main(command, **kwargs):
queryset = Upload.objects.filter(
source__startswith="http", source__contains="/federation/music/file/"
).exclude(source__contains="youtube")
total = queryset.count()
command.stdout.write("{} uploads found".format(total))
queryset.delete()

View File

@ -12,7 +12,12 @@ def command():
@pytest.mark.parametrize(
"script_name", ["django_permissions_to_user_permissions", "test"]
"script_name",
[
"django_permissions_to_user_permissions",
"test",
"delete_pre_017_federated_uploads",
],
)
def test_script_command_list(command, script_name, mocker):
mocked = mocker.patch("funkwhale_api.common.scripts.{}.main".format(script_name))
@ -235,3 +240,17 @@ def test_migrate_to_users_libraries_command(
for part in ["followers", "following"]:
generate_actor_urls.assert_any_call(part, command.stdout)
def test_delete_pre_017_federated_uploads(factories, command):
to_delete = factories["music.Upload"](
source="https://test.com/federation/music/file/1"
)
to_keep = factories["music.Upload"](source="https://hello.world")
scripts.delete_pre_017_federated_uploads.main(command)
to_keep.refresh_from_db()
with pytest.raises(to_delete.__class__.DoesNotExist):
to_delete.refresh_from_db()

View File

@ -0,0 +1 @@
Added a script to prune pre 0.17 federated tracks (#564)

View File

@ -52,6 +52,25 @@ Funkwhale will successfully extract licensing data for the following licenses:
Support for other licenses such as Art Libre or WTFPL will be added in future releases.
Delete pre 0.17 federated tracks [manual action suggested]
----------------------------------------------------------
If you were using Funkwhale before the 0.17 release and federated with other instances,
it's possible that you still have some unplayable federated files in the database.
To purge the database of those entries, you can run the following command:
On docker setups::
docker-compose run --rm api python manage.py script delete_pre_017_federated_uploads --no-input
On non-docker setups::
python manage.py script delete_pre_017_federated_uploads --no-input
Enable gzip compression [manual action suggested]
-------------------------------------------------