make setting dynamic

Part-of: <https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2607>
environments/review-docs-2083-yqf2yl/deployments/18772
Petitminion 2023-11-06 00:00:39 +01:00 zatwierdzone przez Marge
rodzic d3b27b4ba9
commit 179c53695e
8 zmienionych plików z 22 dodań i 19 usunięć

Wyświetl plik

@ -1484,10 +1484,3 @@ Typesense hostname. Defaults to `localhost` on non-Docker deployments and to `ty
Docker deployments.
"""
TYPESENSE_NUM_TYPO = env("TYPESENSE_NUM_TYPO", default=5)
ONLY_ALLOW_MUSICBRAINZ_TAGGED_FILES = env(
"ONLY_ALLOW_MUSICBRAINZ_TAGGED_FILES", default=False
)
"""
If True, files without a Musicbrainz id will not be uploaded.
"""

Wyświetl plik

@ -32,3 +32,18 @@ class MusicCacheDuration(types.IntPreference):
"will be erased and retranscoded on the next listening."
)
field_kwargs = {"required": False}
@global_preferences_registry.register
class MbidTaggedContent(types.BooleanPreference):
show_in_api = True
section = music
name = "only_allow_musicbrainz_tagged_files"
verbose_name = "Only allow Musicbrainz tagged files"
help_text = (
"Only Musicbrainz tagged files will be allowed to be uploaded on the server. "
"If files where uploaded before this settings will not affect them. "
"To clean the db from files not following mb tags use the funkwhale cli "
"or use quality filters"
)
default = False

Wyświetl plik

@ -247,10 +247,8 @@ def process_upload(upload, update_denormalization=True):
return fail_import(
upload, "invalid_metadata", detail=detail, file_metadata=metadata_dump
)
if (
settings.ONLY_ALLOW_MUSICBRAINZ_TAGGED_FILES is True
and not serializer.validated_data.get("mbid")
):
check_mbid = preferences.get("music__only_allow_musicbrainz_tagged_files")
if check_mbid is True and not serializer.validated_data.get("mbid"):
return fail_import(
upload,
"Uploading files without a MusicBrainz ID is not permitted in this pod",

Wyświetl plik

@ -179,7 +179,6 @@ env = [
"DISABLE_PASSWORD_VALIDATORS=false",
"FUNKWHALE_PLUGINS=",
"MUSIC_DIRECTORY_PATH=/music",
"ONLY_ALLOW_MUSICBRAINZ_TAGGED_FILES=true",
]
[tool.coverage.run]

Wyświetl plik

@ -429,8 +429,3 @@ def clear_license_cache(db):
@pytest.fixture
def faker():
return factory.Faker._get_faker()
@pytest.fixture()
def dont_check_mbid(settings):
settings.ONLY_ALLOW_MUSICBRAINZ_TAGGED_FILES = False

Wyświetl plik

@ -1402,7 +1402,8 @@ def test_fs_import(factories, cache, mocker, settings):
assert "Pruning dangling tracks" in cache.get("fs-import:logs")[-1]
def test_upload_checks_mbid_tag(temp_signal, factories, mocker):
def test_upload_checks_mbid_tag(temp_signal, factories, mocker, preferences):
preferences["music__only_allow_musicbrainz_tagged_files"] = True
mocker.patch("funkwhale_api.federation.routes.outbox.dispatch")
mocker.patch("funkwhale_api.music.tasks.populate_album_cover")
mocker.patch("funkwhale_api.music.metadata.Metadata.get_picture")

Wyświetl plik

@ -364,7 +364,7 @@ def test_handle_modified_update_existing_path_if_found_and_attributed_to(
update_track_metadata.assert_not_called()
def test_import_files(factories, capsys, dont_check_mbid):
def test_import_files(factories, capsys):
# smoke test to ensure the command run properly
library = factories["music.Library"](actor__local=True)
call_command(

Wyświetl plik

@ -57,6 +57,8 @@ const groups = computed(() => [
settings: [
{ name: 'music__transcoding_enabled' },
{ name: 'music__transcoding_cache_duration' }
{ name: 'music__only_allow_musicbrainz_tagged_files' },
]
},
{