diff --git a/api/config/api_urls.py b/api/config/api_urls.py index 74b8cdd0b..6fa17b3c6 100644 --- a/api/config/api_urls.py +++ b/api/config/api_urls.py @@ -4,8 +4,8 @@ from rest_framework.urlpatterns import format_suffix_patterns from funkwhale_api.activity import views as activity_views from funkwhale_api.audio import views as audio_views -from funkwhale_api.common import views as common_views from funkwhale_api.common import routers as common_routers +from funkwhale_api.common import views as common_views from funkwhale_api.music import views from funkwhale_api.playlists import views as playlists_views from funkwhale_api.subsonic.views import SubsonicViewSet diff --git a/api/config/plugins.py b/api/config/plugins.py index d943cbe76..756e90993 100644 --- a/api/config/plugins.py +++ b/api/config/plugins.py @@ -7,7 +7,6 @@ import sys import persisting_theory from django.core.cache import cache from django.db.models import Q - from rest_framework import serializers logger = logging.getLogger("plugins") diff --git a/api/config/routing.py b/api/config/routing.py index 1a2911e75..ec5f90e6e 100644 --- a/api/config/routing.py +++ b/api/config/routing.py @@ -1,8 +1,8 @@ from channels.auth import AuthMiddlewareStack from channels.routing import ProtocolTypeRouter, URLRouter - from django.conf.urls import url from django.core.asgi import get_asgi_application + from funkwhale_api.instance import consumers application = ProtocolTypeRouter( diff --git a/api/config/schema.py b/api/config/schema.py index 11d41ba00..aea23f3fe 100644 --- a/api/config/schema.py +++ b/api/config/schema.py @@ -1,6 +1,7 @@ +import os + from drf_spectacular.contrib.django_oauth_toolkit import OpenApiAuthenticationExtension from drf_spectacular.plumbing import build_bearer_security_scheme_object -import os class CustomOAuthExt(OpenApiAuthenticationExtension): @@ -8,9 +9,8 @@ class CustomOAuthExt(OpenApiAuthenticationExtension): name = "oauth2" def get_security_definition(self, auto_schema): - from oauth2_provider.scopes import get_scopes_backend - from drf_spectacular.settings import spectacular_settings + from oauth2_provider.scopes import get_scopes_backend flows = {} for flow_type in spectacular_settings.OAUTH2_FLOWS: diff --git a/api/config/settings/common.py b/api/config/settings/common.py index 6d9036012..710e31fdc 100644 --- a/api/config/settings/common.py +++ b/api/config/settings/common.py @@ -1,10 +1,9 @@ # -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals -from collections import OrderedDict import logging.config import sys - +from collections import OrderedDict from urllib.parse import urlsplit import environ @@ -21,8 +20,9 @@ LOGLEVEL = env("LOGLEVEL", default="info").upper() if env("FUNKWHALE_SENTRY_DSN", default=None) is not None: import sentry_sdk - from sentry_sdk.integrations.django import DjangoIntegration from sentry_sdk.integrations.celery import CeleryIntegration + from sentry_sdk.integrations.django import DjangoIntegration + from funkwhale_api import __version__ as version sentry_sdk.init( @@ -686,7 +686,7 @@ if AUTH_LDAP_ENABLED: # This way, we don't need the dependency unless someone # actually enables the LDAP support import ldap - from django_auth_ldap.config import LDAPSearch, LDAPSearchUnion, GroupOfNamesType + from django_auth_ldap.config import GroupOfNamesType, LDAPSearch, LDAPSearchUnion # Add LDAP to the authentication backends AUTHENTICATION_BACKENDS += ("django_auth_ldap.backend.LDAPBackend",) diff --git a/api/config/settings/local.py b/api/config/settings/local.py index e1670fc75..0265fc3b8 100644 --- a/api/config/settings/local.py +++ b/api/config/settings/local.py @@ -8,9 +8,9 @@ Local settings - Add django-extensions as app """ -from .common import * # noqa from funkwhale_api import __version__ as funkwhale_version +from .common import * # noqa # DEBUG # ------------------------------------------------------------------------------ diff --git a/api/config/urls/__init__.py b/api/config/urls/__init__.py index d43a3d4b8..b13a17fe8 100644 --- a/api/config/urls/__init__.py +++ b/api/config/urls/__init__.py @@ -3,12 +3,12 @@ from __future__ import unicode_literals from django.conf import settings from django.conf.urls import url -from django.urls import include, path from django.conf.urls.static import static -from funkwhale_api.common import admin +from django.urls import include, path from django.views import defaults as default_views from config import plugins +from funkwhale_api.common import admin plugins_patterns = plugins.trigger_filter(plugins.URLS, [], enabled=True) diff --git a/api/config/urls/api.py b/api/config/urls/api.py index b43728ba1..520224f9f 100644 --- a/api/config/urls/api.py +++ b/api/config/urls/api.py @@ -2,8 +2,8 @@ from django.conf.urls import include, url from funkwhale_api.activity import views as activity_views from funkwhale_api.audio import views as audio_views -from funkwhale_api.common import views as common_views from funkwhale_api.common import routers as common_routers +from funkwhale_api.common import views as common_views from funkwhale_api.music import views from funkwhale_api.playlists import views as playlists_views from funkwhale_api.tags import views as tags_views diff --git a/api/config/urls/spa.py b/api/config/urls/spa.py index 7b4b5e169..4786d9db9 100644 --- a/api/config/urls/spa.py +++ b/api/config/urls/spa.py @@ -4,7 +4,6 @@ from funkwhale_api.audio import spa_views as audio_spa_views from funkwhale_api.federation import spa_views as federation_spa_views from funkwhale_api.music import spa_views - urlpatterns = [ urls.re_path( r"^library/tracks/(?P\d+)/?$", spa_views.library_track, name="library_track" diff --git a/api/funkwhale_api/activity/views.py b/api/funkwhale_api/activity/views.py index 15524c8f1..387a5f64d 100644 --- a/api/funkwhale_api/activity/views.py +++ b/api/funkwhale_api/activity/views.py @@ -1,8 +1,7 @@ +from drf_spectacular.utils import extend_schema from rest_framework import viewsets from rest_framework.response import Response -from drf_spectacular.utils import extend_schema - from funkwhale_api.common.permissions import ConditionalAuthentication from funkwhale_api.favorites.models import TrackFavorite diff --git a/api/funkwhale_api/audio/factories.py b/api/funkwhale_api/audio/factories.py index 7e2a4bfae..cf84a7864 100644 --- a/api/funkwhale_api/audio/factories.py +++ b/api/funkwhale_api/audio/factories.py @@ -2,7 +2,7 @@ import uuid import factory -from funkwhale_api.factories import registry, NoUpdateOnCreate +from funkwhale_api.factories import NoUpdateOnCreate, registry from funkwhale_api.federation import actors from funkwhale_api.federation import factories as federation_factories from funkwhale_api.music import factories as music_factories diff --git a/api/funkwhale_api/audio/filters.py b/api/funkwhale_api/audio/filters.py index 2f3f5bb01..eb9960031 100644 --- a/api/funkwhale_api/audio/filters.py +++ b/api/funkwhale_api/audio/filters.py @@ -1,6 +1,5 @@ -from django.db.models import Q - import django_filters +from django.db.models import Q from funkwhale_api.common import fields from funkwhale_api.common import filters as common_filters diff --git a/api/funkwhale_api/audio/models.py b/api/funkwhale_api/audio/models.py index 9e1f7453d..8eced6c43 100644 --- a/api/funkwhale_api/audio/models.py +++ b/api/funkwhale_api/audio/models.py @@ -1,14 +1,13 @@ import uuid - from django.contrib.contenttypes.fields import GenericRelation -from django.db.models import JSONField from django.core.serializers.json import DjangoJSONEncoder from django.db import models -from django.urls import reverse -from django.utils import timezone +from django.db.models import JSONField from django.db.models.signals import post_delete from django.dispatch import receiver +from django.urls import reverse +from django.utils import timezone from funkwhale_api.federation import keys from funkwhale_api.federation import models as federation_models diff --git a/api/funkwhale_api/audio/renderers.py b/api/funkwhale_api/audio/renderers.py index 9cae83959..34812765c 100644 --- a/api/funkwhale_api/audio/renderers.py +++ b/api/funkwhale_api/audio/renderers.py @@ -1,7 +1,6 @@ import xml.etree.ElementTree as ET -from rest_framework import negotiation -from rest_framework import renderers +from rest_framework import negotiation, renderers from funkwhale_api.subsonic.renderers import dict_to_xml_tree diff --git a/api/funkwhale_api/audio/serializers.py b/api/funkwhale_api/audio/serializers.py index b9a905c61..239e4520c 100644 --- a/api/funkwhale_api/audio/serializers.py +++ b/api/funkwhale_api/audio/serializers.py @@ -3,42 +3,35 @@ import logging import time import uuid +import feedparser +import pytz +import requests from django.conf import settings from django.db import transaction from django.db.models import Q -from django.utils import timezone - -import feedparser -import requests -import pytz - -from rest_framework import serializers - from django.templatetags.static import static from django.urls import reverse +from django.utils import timezone +from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import extend_schema_field +from rest_framework import serializers +from funkwhale_api.common import locales, preferences from funkwhale_api.common import serializers as common_serializers -from funkwhale_api.common import utils as common_utils -from funkwhale_api.common import locales -from funkwhale_api.common import preferences from funkwhale_api.common import session +from funkwhale_api.common import utils as common_utils from funkwhale_api.federation import actors from funkwhale_api.federation import models as federation_models from funkwhale_api.federation import serializers as federation_serializers from funkwhale_api.federation import utils as federation_utils from funkwhale_api.moderation import mrf from funkwhale_api.music import models as music_models -from funkwhale_api.music.serializers import SimpleArtistSerializer, COVER_WRITE_FIELD +from funkwhale_api.music.serializers import COVER_WRITE_FIELD, SimpleArtistSerializer from funkwhale_api.tags import models as tags_models from funkwhale_api.tags import serializers as tags_serializers from funkwhale_api.users import serializers as users_serializers -from drf_spectacular.utils import extend_schema_field -from drf_spectacular.types import OpenApiTypes - -from . import categories -from . import models - +from . import categories, models logger = logging.getLogger(__name__) diff --git a/api/funkwhale_api/audio/spa_views.py b/api/funkwhale_api/audio/spa_views.py index 32dc7f585..3825057ae 100644 --- a/api/funkwhale_api/audio/spa_views.py +++ b/api/funkwhale_api/audio/spa_views.py @@ -3,12 +3,9 @@ import urllib.parse from django.conf import settings from django.db.models import Q from django.urls import reverse - from rest_framework import serializers -from funkwhale_api.common import preferences -from funkwhale_api.common import middleware -from funkwhale_api.common import utils +from funkwhale_api.common import middleware, preferences, utils from funkwhale_api.federation import utils as federation_utils from funkwhale_api.music import spa_views diff --git a/api/funkwhale_api/audio/tasks.py b/api/funkwhale_api/audio/tasks.py index 96e216338..0d117eaae 100644 --- a/api/funkwhale_api/audio/tasks.py +++ b/api/funkwhale_api/audio/tasks.py @@ -7,8 +7,7 @@ from django.utils import timezone from funkwhale_api.taskapp import celery -from . import models -from . import serializers +from . import models, serializers logger = logging.getLogger(__name__) diff --git a/api/funkwhale_api/audio/views.py b/api/funkwhale_api/audio/views.py index 314b2cb42..e1fb9a8c5 100644 --- a/api/funkwhale_api/audio/views.py +++ b/api/funkwhale_api/audio/views.py @@ -1,20 +1,13 @@ -from rest_framework import decorators -from rest_framework import exceptions -from rest_framework import mixins -from rest_framework import permissions as rest_permissions -from rest_framework import response -from rest_framework import viewsets - -from drf_spectacular.utils import extend_schema, extend_schema_view - from django import http from django.db import transaction from django.db.models import Count, Prefetch, Q, Sum from django.utils import timezone +from drf_spectacular.utils import extend_schema, extend_schema_view +from rest_framework import decorators, exceptions, mixins +from rest_framework import permissions as rest_permissions +from rest_framework import response, viewsets -from funkwhale_api.common import locales -from funkwhale_api.common import permissions -from funkwhale_api.common import preferences +from funkwhale_api.common import locales, permissions, preferences from funkwhale_api.common import utils as common_utils from funkwhale_api.common.mixins import MultipleLookupDetailMixin from funkwhale_api.federation import actors diff --git a/api/funkwhale_api/cli/base.py b/api/funkwhale_api/cli/base.py index 439d91ff6..b9ddc3e63 100644 --- a/api/funkwhale_api/cli/base.py +++ b/api/funkwhale_api/cli/base.py @@ -1,6 +1,7 @@ -import click import functools +import click + @click.group() def cli(): diff --git a/api/funkwhale_api/cli/main.py b/api/funkwhale_api/cli/main.py index db7e87a22..99a83f811 100644 --- a/api/funkwhale_api/cli/main.py +++ b/api/funkwhale_api/cli/main.py @@ -1,13 +1,13 @@ -import click import sys -from . import base +import click +from rest_framework.exceptions import ValidationError + from . import library # noqa from . import media # noqa from . import plugins # noqa from . import users # noqa - -from rest_framework.exceptions import ValidationError +from . import base def invoke(): diff --git a/api/funkwhale_api/cli/media.py b/api/funkwhale_api/cli/media.py index 2c23f8a75..a2c2efc87 100644 --- a/api/funkwhale_api/cli/media.py +++ b/api/funkwhale_api/cli/media.py @@ -1,11 +1,9 @@ import click - -from django.core.cache import cache from django.conf import settings +from django.core.cache import cache from django.core.files.storage import default_storage - -from versatileimagefield.image_warmer import VersatileImageFieldWarmer from versatileimagefield import settings as vif_settings +from versatileimagefield.image_warmer import VersatileImageFieldWarmer from funkwhale_api.common import utils as common_utils from funkwhale_api.common.models import Attachment diff --git a/api/funkwhale_api/cli/plugins.py b/api/funkwhale_api/cli/plugins.py index 9ab24dccf..bcc10786f 100644 --- a/api/funkwhale_api/cli/plugins.py +++ b/api/funkwhale_api/cli/plugins.py @@ -5,7 +5,6 @@ import sys import click from django.conf import settings - from . import base diff --git a/api/funkwhale_api/cli/users.py b/api/funkwhale_api/cli/users.py index 77c6f4650..a2d020b6f 100644 --- a/api/funkwhale_api/cli/users.py +++ b/api/funkwhale_api/cli/users.py @@ -1,14 +1,10 @@ import click - from django.db import transaction from funkwhale_api.federation import models as federation_models -from funkwhale_api.users import models -from funkwhale_api.users import serializers -from funkwhale_api.users import tasks +from funkwhale_api.users import models, serializers, tasks -from . import base -from . import utils +from . import base, utils class FakeRequest(object): diff --git a/api/funkwhale_api/common/admin.py b/api/funkwhale_api/common/admin.py index 39a112531..2145358f7 100644 --- a/api/funkwhale_api/common/admin.py +++ b/api/funkwhale_api/common/admin.py @@ -1,8 +1,9 @@ -from django.contrib.admin import register as initial_register, site, ModelAdmin # noqa +from django.contrib.admin import site # noqa: F401 +from django.contrib.admin import ModelAdmin +from django.contrib.admin import register as initial_register from django.db.models.fields.related import RelatedField -from . import models -from . import tasks +from . import models, tasks def register(model): diff --git a/api/funkwhale_api/common/apps.py b/api/funkwhale_api/common/apps.py index 05fc275fe..e60966248 100644 --- a/api/funkwhale_api/common/apps.py +++ b/api/funkwhale_api/common/apps.py @@ -3,8 +3,7 @@ from django.conf import settings from config import plugins -from . import mutations -from . import utils +from . import mutations, utils class CommonConfig(AppConfig): diff --git a/api/funkwhale_api/common/authentication.py b/api/funkwhale_api/common/authentication.py index 75a33406f..827fa50f9 100644 --- a/api/funkwhale_api/common/authentication.py +++ b/api/funkwhale_api/common/authentication.py @@ -1,8 +1,6 @@ -from django.utils.translation import ugettext as _ - -from django.core.cache import cache - from allauth.account.utils import send_email_confirmation +from django.core.cache import cache +from django.utils.translation import ugettext as _ from oauth2_provider.contrib.rest_framework.authentication import ( OAuth2Authentication as BaseOAuth2Authentication, ) diff --git a/api/funkwhale_api/common/decorators.py b/api/funkwhale_api/common/decorators.py index df6a5b470..774feb6ba 100644 --- a/api/funkwhale_api/common/decorators.py +++ b/api/funkwhale_api/common/decorators.py @@ -1,19 +1,10 @@ from django.db import transaction +from drf_spectacular.utils import OpenApiParameter, extend_schema +from rest_framework import decorators, exceptions, response, status -from rest_framework import decorators -from rest_framework import exceptions -from rest_framework import response -from rest_framework import status - -from drf_spectacular.utils import extend_schema, OpenApiParameter - -from . import filters -from . import models +from . import filters, models from . import mutations as common_mutations -from . import serializers -from . import signals -from . import tasks -from . import utils +from . import serializers, signals, tasks, utils def action_route(serializer_class): diff --git a/api/funkwhale_api/common/factories.py b/api/funkwhale_api/common/factories.py index f897f5532..4f64af654 100644 --- a/api/funkwhale_api/common/factories.py +++ b/api/funkwhale_api/common/factories.py @@ -1,7 +1,6 @@ import factory -from funkwhale_api.factories import registry, NoUpdateOnCreate - +from funkwhale_api.factories import NoUpdateOnCreate, registry from funkwhale_api.federation import factories as federation_factories diff --git a/api/funkwhale_api/common/fields.py b/api/funkwhale_api/common/fields.py index d354c93eb..9577a73ab 100644 --- a/api/funkwhale_api/common/fields.py +++ b/api/funkwhale_api/common/fields.py @@ -2,7 +2,6 @@ import django_filters from django import forms from django.core.serializers.json import DjangoJSONEncoder from django.db import models - from rest_framework import serializers from . import search diff --git a/api/funkwhale_api/common/filters.py b/api/funkwhale_api/common/filters.py index 600ca6a01..957b730f2 100644 --- a/api/funkwhale_api/common/filters.py +++ b/api/funkwhale_api/common/filters.py @@ -1,15 +1,10 @@ from django import forms from django.db.models import Q - +from django_filters import rest_framework as filters +from django_filters import widgets from drf_spectacular.utils import extend_schema_field -from django_filters import widgets -from django_filters import rest_framework as filters - -from . import fields -from . import models -from . import search -from . import utils +from . import fields, models, search, utils class NoneObject(object): diff --git a/api/funkwhale_api/common/management/commands/gitpod.py b/api/funkwhale_api/common/management/commands/gitpod.py index 2712c673d..78d8c9ddb 100644 --- a/api/funkwhale_api/common/management/commands/gitpod.py +++ b/api/funkwhale_api/common/management/commands/gitpod.py @@ -1,11 +1,13 @@ -from django.core.management.commands.migrate import Command as BaseCommand +import os + +import debugpy +import uvicorn from django.core.management import call_command +from django.core.management.commands.migrate import Command as BaseCommand + +from funkwhale_api.common import preferences from funkwhale_api.music.models import Library from funkwhale_api.users.models import User -from funkwhale_api.common import preferences -import uvicorn -import debugpy -import os class Command(BaseCommand): diff --git a/api/funkwhale_api/common/management/commands/load_test_data.py b/api/funkwhale_api/common/management/commands/load_test_data.py index 9eab5ff08..8209bb85f 100644 --- a/api/funkwhale_api/common/management/commands/load_test_data.py +++ b/api/funkwhale_api/common/management/commands/load_test_data.py @@ -5,14 +5,12 @@ from django.conf import settings from django.core.management.base import BaseCommand from django.db import transaction - from funkwhale_api.federation import keys from funkwhale_api.federation import models as federation_models from funkwhale_api.music import models as music_models from funkwhale_api.tags import models as tags_models from funkwhale_api.users import models as users_models - BATCH_SIZE = 500 @@ -238,6 +236,7 @@ class Command(BaseCommand): def handle(self, *args, **options): from django.apps import apps + from funkwhale_api import factories app_names = [app.name for app in apps.app_configs.values()] diff --git a/api/funkwhale_api/common/middleware.py b/api/funkwhale_api/common/middleware.py index cc897bf77..c01ff6a53 100644 --- a/api/funkwhale_api/common/middleware.py +++ b/api/funkwhale_api/common/middleware.py @@ -1,27 +1,23 @@ import html -import logging import io +import logging import os import re import time +import tracemalloc import urllib.parse import xml.sax.saxutils -from django import http +from django import http, urls from django.conf import settings +from django.contrib import auth from django.core.cache import caches from django.middleware import csrf -from django.contrib import auth -from django import urls from rest_framework import views -import tracemalloc from funkwhale_api.federation import utils as federation_utils -from . import preferences -from . import session -from . import throttling -from . import utils +from . import preferences, session, throttling, utils EXCLUDED_PATHS = ["/api", "/federation", "/.well-known"] diff --git a/api/funkwhale_api/common/mixins.py b/api/funkwhale_api/common/mixins.py index ed619d637..2781c5b21 100644 --- a/api/funkwhale_api/common/mixins.py +++ b/api/funkwhale_api/common/mixins.py @@ -1,7 +1,6 @@ -from rest_framework import serializers - from django.db.models import Q from django.shortcuts import get_object_or_404 +from rest_framework import serializers class MultipleLookupDetailMixin(object): diff --git a/api/funkwhale_api/common/models.py b/api/funkwhale_api/common/models.py index 4f71c00aa..2b6e4c13f 100644 --- a/api/funkwhale_api/common/models.py +++ b/api/funkwhale_api/common/models.py @@ -1,28 +1,24 @@ -import uuid -import magic import mimetypes +import uuid -from django.db.models import JSONField +import magic +from django.conf import settings from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType -from django.conf import settings from django.core.serializers.json import DjangoJSONEncoder from django.db import connections, models, transaction -from django.db.models import Lookup +from django.db.models import JSONField, Lookup from django.db.models.fields import Field from django.db.models.sql.compiler import SQLCompiler from django.dispatch import receiver -from django.utils import timezone from django.urls import reverse - +from django.utils import timezone from versatileimagefield.fields import VersatileImageField from versatileimagefield.image_warmer import VersatileImageFieldWarmer from funkwhale_api.federation import utils as federation_utils -from . import utils -from . import validators - +from . import utils, validators CONTENT_TEXT_MAX_LENGTH = 5000 CONTENT_TEXT_SUPPORTED_TYPES = [ diff --git a/api/funkwhale_api/common/mutations.py b/api/funkwhale_api/common/mutations.py index 66a16e4b4..f402a0276 100644 --- a/api/funkwhale_api/common/mutations.py +++ b/api/funkwhale_api/common/mutations.py @@ -1,8 +1,6 @@ import persisting_theory - -from rest_framework import serializers - from django.db import models, transaction +from rest_framework import serializers class ConfNotFound(KeyError): diff --git a/api/funkwhale_api/common/permissions.py b/api/funkwhale_api/common/permissions.py index 76d8a7ff3..13ff696c8 100644 --- a/api/funkwhale_api/common/permissions.py +++ b/api/funkwhale_api/common/permissions.py @@ -2,7 +2,6 @@ import operator from django.core.exceptions import ObjectDoesNotExist from django.http import Http404 - from rest_framework.permissions import BasePermission from funkwhale_api.common import preferences diff --git a/api/funkwhale_api/common/preferences.py b/api/funkwhale_api/common/preferences.py index 972b1ac1e..17d348f2a 100644 --- a/api/funkwhale_api/common/preferences.py +++ b/api/funkwhale_api/common/preferences.py @@ -1,8 +1,8 @@ import json from django import forms -from django.contrib.postgres.forms import JSONField from django.conf import settings +from django.contrib.postgres.forms import JSONField from dynamic_preferences import serializers, types from dynamic_preferences.registries import global_preferences_registry diff --git a/api/funkwhale_api/common/scripts/__init__.py b/api/funkwhale_api/common/scripts/__init__.py index 42160e30d..750207730 100644 --- a/api/funkwhale_api/common/scripts/__init__.py +++ b/api/funkwhale_api/common/scripts/__init__.py @@ -1,9 +1,10 @@ -from . import create_actors -from . import django_permissions_to_user_permissions -from . import migrate_to_user_libraries -from . import delete_pre_017_federated_uploads -from . import test - +from . import ( + create_actors, + delete_pre_017_federated_uploads, + django_permissions_to_user_permissions, + migrate_to_user_libraries, + test, +) __all__ = [ "create_actors", diff --git a/api/funkwhale_api/common/scripts/create_image_variations.py b/api/funkwhale_api/common/scripts/create_image_variations.py index 10bef7a35..ac2279cc8 100644 --- a/api/funkwhale_api/common/scripts/create_image_variations.py +++ b/api/funkwhale_api/common/scripts/create_image_variations.py @@ -6,7 +6,6 @@ from versatileimagefield.image_warmer import VersatileImageFieldWarmer from funkwhale_api.common.models import Attachment - MODELS = [ (Attachment, "file", "attachment_square"), ] diff --git a/api/funkwhale_api/common/scripts/migrate_to_user_libraries.py b/api/funkwhale_api/common/scripts/migrate_to_user_libraries.py index 537794b62..a387fca80 100644 --- a/api/funkwhale_api/common/scripts/migrate_to_user_libraries.py +++ b/api/funkwhale_api/common/scripts/migrate_to_user_libraries.py @@ -12,12 +12,12 @@ This command will also generate federation ids for existing resources. """ from django.conf import settings -from django.db.models import functions, CharField, F, Value +from django.db.models import CharField, F, Value, functions +from funkwhale_api.common import preferences +from funkwhale_api.federation import models as federation_models from funkwhale_api.music import models from funkwhale_api.users.models import User -from funkwhale_api.federation import models as federation_models -from funkwhale_api.common import preferences def create_libraries(open_api, stdout): diff --git a/api/funkwhale_api/common/search.py b/api/funkwhale_api/common/search.py index 580f1604f..a28184d41 100644 --- a/api/funkwhale_api/common/search.py +++ b/api/funkwhale_api/common/search.py @@ -5,7 +5,6 @@ from django.db.models import Q from . import utils - QUERY_REGEX = re.compile(r'(((?P\w+):)?(?P"[^"]+"|[\S]+))') diff --git a/api/funkwhale_api/common/serializers.py b/api/funkwhale_api/common/serializers.py index d623b2cae..efb916957 100644 --- a/api/funkwhale_api/common/serializers.py +++ b/api/funkwhale_api/common/serializers.py @@ -1,20 +1,17 @@ import collections import io -import PIL import os -from rest_framework import serializers - +import PIL from django.core.exceptions import ObjectDoesNotExist from django.core.files.uploadedfile import SimpleUploadedFile from django.utils.encoding import smart_text from django.utils.translation import ugettext_lazy as _ - -from drf_spectacular.utils import extend_schema_field from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import extend_schema_field +from rest_framework import serializers -from . import models -from . import utils +from . import models, utils class RelatedField(serializers.RelatedField): diff --git a/api/funkwhale_api/common/storage.py b/api/funkwhale_api/common/storage.py index 8959c6532..ebf70a367 100644 --- a/api/funkwhale_api/common/storage.py +++ b/api/funkwhale_api/common/storage.py @@ -1,7 +1,7 @@ import os import shutil -import slugify +import slugify from django.core.files.storage import FileSystemStorage from storages.backends.s3boto3 import S3Boto3Storage diff --git a/api/funkwhale_api/common/tasks.py b/api/funkwhale_api/common/tasks.py index 6f4d9439c..b91b96abc 100644 --- a/api/funkwhale_api/common/tasks.py +++ b/api/funkwhale_api/common/tasks.py @@ -11,10 +11,7 @@ from django.utils import timezone from funkwhale_api.common import channels from funkwhale_api.taskapp import celery -from . import models -from . import serializers -from . import session -from . import signals +from . import models, serializers, session, signals logger = logging.getLogger(__name__) diff --git a/api/funkwhale_api/common/throttling.py b/api/funkwhale_api/common/throttling.py index 8d37efe24..06b99f9f0 100644 --- a/api/funkwhale_api/common/throttling.py +++ b/api/funkwhale_api/common/throttling.py @@ -1,10 +1,9 @@ import collections +from django.conf import settings from django.core.cache import cache from rest_framework import throttling as rest_throttling -from django.conf import settings - def get_ident(user, request): if user and user.is_authenticated: diff --git a/api/funkwhale_api/common/utils.py b/api/funkwhale_api/common/utils.py index f252aeac9..b49c6fdd7 100644 --- a/api/funkwhale_api/common/utils.py +++ b/api/funkwhale_api/common/utils.py @@ -1,24 +1,21 @@ import datetime import hashlib - -from django.core.files.base import ContentFile -from django.http import request -from django.utils.deconstruct import deconstructible - -import bleach.sanitizer import logging -import markdown import os import shutil import uuid import xml.etree.ElementTree as ET - from urllib.parse import parse_qs, urlencode, urlsplit, urlunsplit -from django.conf import settings +import bleach.sanitizer +import markdown from django import urls +from django.conf import settings +from django.core.files.base import ContentFile from django.db import models, transaction +from django.http import request from django.utils import timezone +from django.utils.deconstruct import deconstructible logger = logging.getLogger(__name__) @@ -379,8 +376,7 @@ def attach_content(obj, field, content_data): @transaction.atomic def attach_file(obj, field, file_data, fetch=False): - from . import models - from . import tasks + from . import models, tasks existing = getattr(obj, "{}_id".format(field)) if existing: diff --git a/api/funkwhale_api/common/views.py b/api/funkwhale_api/common/views.py index a42a2c9ce..51c46e2e0 100644 --- a/api/funkwhale_api/common/views.py +++ b/api/funkwhale_api/common/views.py @@ -3,36 +3,26 @@ import time from django.conf import settings from django.db import transaction - -from rest_framework.decorators import action -from rest_framework import exceptions -from rest_framework import mixins -from rest_framework import permissions -from rest_framework import response -from rest_framework import views -from rest_framework import viewsets -from rest_framework import generics - from drf_spectacular.utils import extend_schema +from rest_framework import ( + exceptions, + generics, + mixins, + permissions, + response, + views, + viewsets, +) +from rest_framework.decorators import action from config import plugins - -from funkwhale_api.users.oauth import permissions as oauth_permissions - from funkwhale_api.common.serializers import ( ErrorDetailSerializer, TextPreviewSerializer, ) +from funkwhale_api.users.oauth import permissions as oauth_permissions -from . import filters -from . import models -from . import mutations -from . import serializers -from . import signals -from . import tasks -from . import throttling -from . import utils - +from . import filters, models, mutations, serializers, signals, tasks, throttling, utils logger = logging.getLogger(__name__) diff --git a/api/funkwhale_api/contrib/listenbrainz/funkwhale_ready.py b/api/funkwhale_api/contrib/listenbrainz/funkwhale_ready.py index ccda2d287..81b391840 100644 --- a/api/funkwhale_api/contrib/listenbrainz/funkwhale_ready.py +++ b/api/funkwhale_api/contrib/listenbrainz/funkwhale_ready.py @@ -1,7 +1,8 @@ -from config import plugins import funkwhale_api -from .funkwhale_startup import PLUGIN +from config import plugins + from .client import ListenBrainzClient, Track +from .funkwhale_startup import PLUGIN @plugins.register_hook(plugins.LISTENING_CREATED, PLUGIN) diff --git a/api/funkwhale_api/contrib/listenbrainz/funkwhale_startup.py b/api/funkwhale_api/contrib/listenbrainz/funkwhale_startup.py index 5c945cc68..16f58b3f4 100644 --- a/api/funkwhale_api/contrib/listenbrainz/funkwhale_startup.py +++ b/api/funkwhale_api/contrib/listenbrainz/funkwhale_startup.py @@ -1,6 +1,5 @@ from config import plugins - PLUGIN = plugins.get_plugin_config( name="listenbrainz", label="ListenBrainz", diff --git a/api/funkwhale_api/contrib/maloja/funkwhale_ready.py b/api/funkwhale_api/contrib/maloja/funkwhale_ready.py index 0dae6e3c6..7b9b31503 100644 --- a/api/funkwhale_api/contrib/maloja/funkwhale_ready.py +++ b/api/funkwhale_api/contrib/maloja/funkwhale_ready.py @@ -1,6 +1,7 @@ import json from config import plugins + from .funkwhale_startup import PLUGIN diff --git a/api/funkwhale_api/contrib/scrobbler/funkwhale_ready.py b/api/funkwhale_api/contrib/scrobbler/funkwhale_ready.py index 12292523d..8b36301ee 100644 --- a/api/funkwhale_api/contrib/scrobbler/funkwhale_ready.py +++ b/api/funkwhale_api/contrib/scrobbler/funkwhale_ready.py @@ -1,9 +1,9 @@ import hashlib from config import plugins -from .funkwhale_startup import PLUGIN from . import scrobbler +from .funkwhale_startup import PLUGIN # https://listenbrainz.org/lastfm-proxy DEFAULT_SCROBBLER_URL = "http://post.audioscrobbler.com" diff --git a/api/funkwhale_api/contrib/scrobbler/scrobbler.py b/api/funkwhale_api/contrib/scrobbler/scrobbler.py index fe9676df1..6a380c586 100644 --- a/api/funkwhale_api/contrib/scrobbler/scrobbler.py +++ b/api/funkwhale_api/contrib/scrobbler/scrobbler.py @@ -1,7 +1,6 @@ import hashlib import time - # https://github.com/jlieth/legacy-scrobbler from .funkwhale_startup import PLUGIN diff --git a/api/funkwhale_api/factories.py b/api/funkwhale_api/factories.py index f75f327f4..ae7f68071 100644 --- a/api/funkwhale_api/factories.py +++ b/api/funkwhale_api/factories.py @@ -1,10 +1,9 @@ -import uuid -import factory import random +import uuid + +import factory import persisting_theory - from django.conf import settings - from faker.providers import internet as internet_provider diff --git a/api/funkwhale_api/favorites/factories.py b/api/funkwhale_api/favorites/factories.py index fcc2f8204..df2f47335 100644 --- a/api/funkwhale_api/favorites/factories.py +++ b/api/funkwhale_api/favorites/factories.py @@ -1,6 +1,6 @@ import factory -from funkwhale_api.factories import registry, NoUpdateOnCreate +from funkwhale_api.factories import NoUpdateOnCreate, registry from funkwhale_api.music.factories import TrackFactory from funkwhale_api.users.factories import UserFactory diff --git a/api/funkwhale_api/favorites/serializers.py b/api/funkwhale_api/favorites/serializers.py index 2b31b4b76..205732b74 100644 --- a/api/funkwhale_api/favorites/serializers.py +++ b/api/funkwhale_api/favorites/serializers.py @@ -1,15 +1,11 @@ +from drf_spectacular.utils import extend_schema_field from rest_framework import serializers from funkwhale_api.activity import serializers as activity_serializers from funkwhale_api.federation import serializers as federation_serializers -from funkwhale_api.music.serializers import ( - TrackActivitySerializer, - TrackSerializer, -) +from funkwhale_api.music.serializers import TrackActivitySerializer, TrackSerializer from funkwhale_api.users.serializers import UserActivitySerializer, UserBasicSerializer -from drf_spectacular.utils import extend_schema_field - from . import models diff --git a/api/funkwhale_api/favorites/views.py b/api/funkwhale_api/favorites/views.py index bab9925f7..c61251ac0 100644 --- a/api/funkwhale_api/favorites/views.py +++ b/api/funkwhale_api/favorites/views.py @@ -1,15 +1,13 @@ +from django.db.models import Prefetch +from drf_spectacular.utils import extend_schema from rest_framework import mixins, status, viewsets from rest_framework.decorators import action from rest_framework.response import Response -from drf_spectacular.utils import extend_schema - -from django.db.models import Prefetch - from funkwhale_api.activity import record from funkwhale_api.common import fields, permissions -from funkwhale_api.music.models import Track from funkwhale_api.music import utils as music_utils +from funkwhale_api.music.models import Track from funkwhale_api.users.oauth import permissions as oauth_permissions from . import filters, models, serializers diff --git a/api/funkwhale_api/federation/activity.py b/api/funkwhale_api/federation/activity.py index 7725953e6..db0de1828 100644 --- a/api/funkwhale_api/federation/activity.py +++ b/api/funkwhale_api/federation/activity.py @@ -1,10 +1,10 @@ -import uuid import logging import urllib.parse +import uuid -from django.core.cache import cache from django.conf import settings -from django.db import transaction, IntegrityError +from django.core.cache import cache +from django.db import IntegrityError, transaction from django.db.models import Q from funkwhale_api.common import channels @@ -119,12 +119,11 @@ def should_reject(fid, actor_id=None, payload={}): @transaction.atomic def receive(activity, on_behalf_of, inbox_actor=None): - from . import models - from . import serializers - from . import tasks - from .routes import inbox from funkwhale_api.moderation import mrf + from . import models, serializers, tasks + from .routes import inbox + logger.debug( "[federation] Received activity from %s : %s", on_behalf_of.fid, activity ) @@ -223,8 +222,7 @@ class InboxRouter(Router): call_handlers should be False when are delivering a local activity, because we want only want to bind activities to their recipients, not reapply the changes. """ - from . import api_serializers - from . import models + from . import api_serializers, models handlers = self.get_matching_handlers(payload) for handler in handlers: @@ -305,8 +303,8 @@ class OutboxRouter(Router): for further delivery. """ from funkwhale_api.common import preferences - from . import models - from . import tasks + + from . import models, tasks allow_list_enabled = preferences.get("moderation__allow_list_enabled") allowed_domains = None diff --git a/api/funkwhale_api/federation/admin.py b/api/funkwhale_api/federation/admin.py index 8e66708cf..f7d079c93 100644 --- a/api/funkwhale_api/federation/admin.py +++ b/api/funkwhale_api/federation/admin.py @@ -1,7 +1,6 @@ from funkwhale_api.common import admin -from . import models -from . import tasks +from . import models, tasks def redeliver_deliveries(modeladmin, request, queryset): diff --git a/api/funkwhale_api/federation/api_serializers.py b/api/funkwhale_api/federation/api_serializers.py index 465a55686..844be0c1a 100644 --- a/api/funkwhale_api/federation/api_serializers.py +++ b/api/funkwhale_api/federation/api_serializers.py @@ -1,10 +1,11 @@ import datetime from django.conf import settings -from django.core.exceptions import ObjectDoesNotExist from django.core import validators +from django.core.exceptions import ObjectDoesNotExist from django.utils import timezone - +from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import extend_schema_field from rest_framework import serializers from funkwhale_api.audio import models as audio_models @@ -13,11 +14,7 @@ from funkwhale_api.common import serializers as common_serializers from funkwhale_api.music import models as music_models from funkwhale_api.users import serializers as users_serializers -from drf_spectacular.utils import extend_schema_field -from drf_spectacular.types import OpenApiTypes - -from . import filters -from . import models +from . import filters, models from . import serializers as federation_serializers diff --git a/api/funkwhale_api/federation/api_views.py b/api/funkwhale_api/federation/api_views.py index ebe24d17e..75c414893 100644 --- a/api/funkwhale_api/federation/api_views.py +++ b/api/funkwhale_api/federation/api_views.py @@ -1,34 +1,29 @@ import requests.exceptions - from django.conf import settings from django.db import transaction from django.db.models import Count, Q - -from rest_framework import decorators -from rest_framework import mixins -from rest_framework import permissions -from rest_framework import response -from rest_framework import viewsets - from drf_spectacular.utils import extend_schema, extend_schema_view +from rest_framework import decorators, mixins, permissions, response, viewsets from funkwhale_api.common import preferences from funkwhale_api.common import utils as common_utils from funkwhale_api.common.permissions import ConditionalAuthentication from funkwhale_api.music import models as music_models -from funkwhale_api.music import views as music_views from funkwhale_api.music import serializers as music_serializers +from funkwhale_api.music import views as music_views from funkwhale_api.users.oauth import permissions as oauth_permissions -from . import activity -from . import api_serializers -from . import exceptions -from . import filters -from . import models -from . import routes -from . import serializers -from . import tasks -from . import utils +from . import ( + activity, + api_serializers, + exceptions, + filters, + models, + routes, + serializers, + tasks, + utils, +) @transaction.atomic diff --git a/api/funkwhale_api/federation/authentication.py b/api/funkwhale_api/federation/authentication.py index b46e615f0..171b66106 100644 --- a/api/funkwhale_api/federation/authentication.py +++ b/api/funkwhale_api/federation/authentication.py @@ -1,15 +1,17 @@ -import cryptography -import logging import datetime +import logging import urllib.parse + +import cryptography from django.contrib.auth.models import AnonymousUser from django.utils import timezone +from rest_framework import authentication +from rest_framework import exceptions as rest_exceptions -from rest_framework import authentication, exceptions as rest_exceptions from funkwhale_api.common import preferences from funkwhale_api.moderation import models as moderation_models -from . import actors, exceptions, keys, models, signing, tasks, utils +from . import actors, exceptions, keys, models, signing, tasks, utils logger = logging.getLogger(__name__) diff --git a/api/funkwhale_api/federation/decorators.py b/api/funkwhale_api/federation/decorators.py index 0a3416beb..756054e39 100644 --- a/api/funkwhale_api/federation/decorators.py +++ b/api/funkwhale_api/federation/decorators.py @@ -1,19 +1,10 @@ from django.db import transaction - -from rest_framework import decorators -from rest_framework import permissions -from rest_framework import response -from rest_framework import status - -from drf_spectacular.utils import extend_schema, OpenApiParameter +from drf_spectacular.utils import OpenApiParameter, extend_schema +from rest_framework import decorators, permissions, response, status from funkwhale_api.common import utils as common_utils -from . import api_serializers -from . import filters -from . import models -from . import tasks -from . import utils +from . import api_serializers, filters, models, tasks, utils def fetches_route(): diff --git a/api/funkwhale_api/federation/factories.py b/api/funkwhale_api/federation/factories.py index 852998c9e..61a15c6b4 100644 --- a/api/funkwhale_api/federation/factories.py +++ b/api/funkwhale_api/federation/factories.py @@ -7,7 +7,7 @@ from django.conf import settings from django.utils import timezone from django.utils.http import http_date -from funkwhale_api.factories import registry, NoUpdateOnCreate +from funkwhale_api.factories import NoUpdateOnCreate, registry from funkwhale_api.users import factories as user_factories from . import keys, models diff --git a/api/funkwhale_api/federation/fields.py b/api/funkwhale_api/federation/fields.py index 8a8a1eb2d..44e554df9 100644 --- a/api/funkwhale_api/federation/fields.py +++ b/api/funkwhale_api/federation/fields.py @@ -1,9 +1,7 @@ import django_filters - from rest_framework import serializers -from . import models -from . import utils +from . import models, utils class ActorRelatedField(serializers.EmailField): diff --git a/api/funkwhale_api/federation/jsonld.py b/api/funkwhale_api/federation/jsonld.py index 0ff7e0e64..240c410ee 100644 --- a/api/funkwhale_api/federation/jsonld.py +++ b/api/funkwhale_api/federation/jsonld.py @@ -1,12 +1,13 @@ -import aiohttp import asyncio import functools +import aiohttp +import pyld.documentloader.requests import pyld.jsonld from django.conf import settings -import pyld.documentloader.requests from rest_framework import serializers from rest_framework.fields import empty + from . import contexts diff --git a/api/funkwhale_api/federation/keys.py b/api/funkwhale_api/federation/keys.py index 57ac95ab1..bd13ac2ec 100644 --- a/api/funkwhale_api/federation/keys.py +++ b/api/funkwhale_api/federation/keys.py @@ -1,11 +1,10 @@ import re import urllib.parse -from django.conf import settings - from cryptography.hazmat.backends import default_backend as crypto_default_backend from cryptography.hazmat.primitives import serialization as crypto_serialization from cryptography.hazmat.primitives.asymmetric import rsa +from django.conf import settings KEY_ID_REGEX = re.compile(r"keyId=\"(?P.*)\"") diff --git a/api/funkwhale_api/federation/management/commands/fix_federation_ids.py b/api/funkwhale_api/federation/management/commands/fix_federation_ids.py index 764a9c1e4..0ccf2d208 100644 --- a/api/funkwhale_api/federation/management/commands/fix_federation_ids.py +++ b/api/funkwhale_api/federation/management/commands/fix_federation_ids.py @@ -4,7 +4,6 @@ from funkwhale_api.common import utils from funkwhale_api.federation import models as federation_models from funkwhale_api.music import models as music_models - MODELS = [ (music_models.Artist, ["fid"]), (music_models.Album, ["fid"]), diff --git a/api/funkwhale_api/federation/models.py b/api/funkwhale_api/federation/models.py index 5a6b12e53..2b6a86dc2 100644 --- a/api/funkwhale_api/federation/models.py +++ b/api/funkwhale_api/federation/models.py @@ -3,16 +3,16 @@ import urllib.parse import uuid from django.conf import settings -from django.db.models import JSONField from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ObjectDoesNotExist from django.core.serializers.json import DjangoJSONEncoder from django.db import models -from django.db.models.signals import post_save, pre_save, post_delete +from django.db.models import JSONField +from django.db.models.signals import post_delete, post_save, pre_save from django.dispatch import receiver -from django.utils import timezone from django.urls import reverse +from django.utils import timezone from funkwhale_api.common import session from funkwhale_api.common import utils as common_utils @@ -283,8 +283,8 @@ class Actor(models.Model): return data def get_stats(self): - from funkwhale_api.music import models as music_models from funkwhale_api.moderation import models as moderation_models + from funkwhale_api.music import models as music_models data = Actor.objects.filter(pk=self.pk).aggregate( outbox_activities=models.Count("outbox_activities", distinct=True), @@ -389,8 +389,7 @@ class Fetch(models.Model): @property def serializers(self): - from . import contexts - from . import serializers + from . import contexts, serializers return { contexts.FW.Artist: [serializers.ArtistSerializer], diff --git a/api/funkwhale_api/federation/mrf_policies.py b/api/funkwhale_api/federation/mrf_policies.py index 220c0d3cb..df0ebd7a6 100644 --- a/api/funkwhale_api/federation/mrf_policies.py +++ b/api/funkwhale_api/federation/mrf_policies.py @@ -1,6 +1,5 @@ from funkwhale_api.moderation import mrf - from . import activity diff --git a/api/funkwhale_api/federation/routes.py b/api/funkwhale_api/federation/routes.py index 0a45f1d64..cd0b94b5c 100644 --- a/api/funkwhale_api/federation/routes.py +++ b/api/funkwhale_api/federation/routes.py @@ -5,10 +5,7 @@ from django.db.models import Q from funkwhale_api.music import models as music_models -from . import activity -from . import actors -from . import models -from . import serializers +from . import activity, actors, models, serializers logger = logging.getLogger(__name__) inbox = activity.InboxRouter() diff --git a/api/funkwhale_api/federation/serializers.py b/api/funkwhale_api/federation/serializers.py index 5781bf414..38cf444ed 100644 --- a/api/funkwhale_api/federation/serializers.py +++ b/api/funkwhale_api/federation/serializers.py @@ -10,8 +10,8 @@ from django.urls import reverse from django.utils import timezone from rest_framework import serializers -from funkwhale_api.common import utils as common_utils from funkwhale_api.common import models as common_models +from funkwhale_api.common import utils as common_utils from funkwhale_api.moderation import models as moderation_models from funkwhale_api.moderation import serializers as moderation_serializers from funkwhale_api.moderation import signals as moderation_signals diff --git a/api/funkwhale_api/federation/signing.py b/api/funkwhale_api/federation/signing.py index 42b38d8ff..1f668e72a 100644 --- a/api/funkwhale_api/federation/signing.py +++ b/api/funkwhale_api/federation/signing.py @@ -1,15 +1,14 @@ -import cryptography.exceptions import datetime import logging -import pytz +import cryptography.exceptions +import pytz +import requests +import requests_http_message_signatures from django import forms from django.utils import timezone from django.utils.http import parse_http_date -import requests -import requests_http_message_signatures - from . import exceptions, utils logger = logging.getLogger(__name__) diff --git a/api/funkwhale_api/federation/spa_views.py b/api/funkwhale_api/federation/spa_views.py index af7e210cf..c5e05abb9 100644 --- a/api/funkwhale_api/federation/spa_views.py +++ b/api/funkwhale_api/federation/spa_views.py @@ -1,10 +1,7 @@ from django.conf import settings - from rest_framework import serializers -from funkwhale_api.common import preferences -from funkwhale_api.common import middleware -from funkwhale_api.common import utils +from funkwhale_api.common import middleware, preferences, utils from funkwhale_api.federation import utils as federation_utils from . import models diff --git a/api/funkwhale_api/federation/tasks.py b/api/funkwhale_api/federation/tasks.py index a24384ceb..f9c7e8456 100644 --- a/api/funkwhale_api/federation/tasks.py +++ b/api/funkwhale_api/federation/tasks.py @@ -2,35 +2,37 @@ import datetime import json import logging import os -import requests +import requests from django.conf import settings from django.db import transaction -from django.db.models import Q, F +from django.db.models import F, Q from django.db.models.deletion import Collector from django.utils import timezone from dynamic_preferences.registries import global_preferences_registry from requests.exceptions import RequestException from funkwhale_api.audio import models as audio_models -from funkwhale_api.common import preferences from funkwhale_api.common import models as common_models -from funkwhale_api.common import session +from funkwhale_api.common import preferences, session from funkwhale_api.common import utils as common_utils from funkwhale_api.moderation import mrf from funkwhale_api.music import models as music_models from funkwhale_api.taskapp import celery -from . import activity -from . import actors -from . import exceptions -from . import jsonld -from . import keys -from . import models, signing -from . import serializers -from . import routes -from . import utils -from . import webfinger +from . import ( + activity, + actors, + exceptions, + jsonld, + keys, + models, + routes, + serializers, + signing, + utils, + webfinger, +) logger = logging.getLogger(__name__) diff --git a/api/funkwhale_api/federation/utils.py b/api/funkwhale_api/federation/utils.py index 81ce02e95..f39381022 100644 --- a/api/funkwhale_api/federation/utils.py +++ b/api/funkwhale_api/federation/utils.py @@ -1,7 +1,7 @@ import html.parser +import re import unicodedata import urllib.parse -import re from django.apps import apps from django.conf import settings @@ -11,8 +11,7 @@ from django.db.models import CharField, Q, Value from funkwhale_api.common import session from funkwhale_api.moderation import mrf -from . import exceptions -from . import signing +from . import exceptions, signing def full_url(path): diff --git a/api/funkwhale_api/federation/views.py b/api/funkwhale_api/federation/views.py index f22e1c3ff..324fb4568 100644 --- a/api/funkwhale_api/federation/views.py +++ b/api/funkwhale_api/federation/views.py @@ -15,8 +15,8 @@ from funkwhale_api.music import models as music_models from funkwhale_api.music import utils as music_utils from . import ( - actors, activity, + actors, authentication, models, renderers, diff --git a/api/funkwhale_api/history/factories.py b/api/funkwhale_api/history/factories.py index 59a701063..bae8da505 100644 --- a/api/funkwhale_api/history/factories.py +++ b/api/funkwhale_api/history/factories.py @@ -1,6 +1,6 @@ import factory -from funkwhale_api.factories import registry, NoUpdateOnCreate +from funkwhale_api.factories import NoUpdateOnCreate, registry from funkwhale_api.music import factories from funkwhale_api.users.factories import UserFactory diff --git a/api/funkwhale_api/history/serializers.py b/api/funkwhale_api/history/serializers.py index b275ff806..66ce34f21 100644 --- a/api/funkwhale_api/history/serializers.py +++ b/api/funkwhale_api/history/serializers.py @@ -1,3 +1,4 @@ +from drf_spectacular.utils import extend_schema_field from rest_framework import serializers from funkwhale_api.activity import serializers as activity_serializers @@ -5,8 +6,6 @@ from funkwhale_api.federation import serializers as federation_serializers from funkwhale_api.music.serializers import TrackActivitySerializer, TrackSerializer from funkwhale_api.users.serializers import UserActivitySerializer, UserBasicSerializer -from drf_spectacular.utils import extend_schema_field - from . import models diff --git a/api/funkwhale_api/history/views.py b/api/funkwhale_api/history/views.py index 0a7992756..0012af790 100644 --- a/api/funkwhale_api/history/views.py +++ b/api/funkwhale_api/history/views.py @@ -1,17 +1,15 @@ +from django.db.models import Prefetch from rest_framework import mixins, viewsets -from django.db.models import Prefetch - from config import plugins - from funkwhale_api.activity import record from funkwhale_api.common import fields, permissions -from funkwhale_api.music.models import Track from funkwhale_api.music import utils as music_utils -from . import filters, models, serializers - +from funkwhale_api.music.models import Track from funkwhale_api.users.oauth import permissions as oauth_permissions +from . import filters, models, serializers + class ListeningViewSet( mixins.CreateModelMixin, diff --git a/api/funkwhale_api/instance/dynamic_preferences_registry.py b/api/funkwhale_api/instance/dynamic_preferences_registry.py index 1b4dd10b4..d34fb814f 100644 --- a/api/funkwhale_api/instance/dynamic_preferences_registry.py +++ b/api/funkwhale_api/instance/dynamic_preferences_registry.py @@ -1,6 +1,5 @@ -from django.forms import widgets from django.core.validators import FileExtensionValidator - +from django.forms import widgets from dynamic_preferences import types from dynamic_preferences.registries import global_preferences_registry diff --git a/api/funkwhale_api/instance/serializers.py b/api/funkwhale_api/instance/serializers.py index a1a9d7887..86dec2c43 100644 --- a/api/funkwhale_api/instance/serializers.py +++ b/api/funkwhale_api/instance/serializers.py @@ -1,7 +1,7 @@ +from drf_spectacular.utils import extend_schema_field from rest_framework import serializers from funkwhale_api.federation.utils import full_url -from drf_spectacular.utils import extend_schema_field class SoftwareSerializer(serializers.Serializer): diff --git a/api/funkwhale_api/instance/urls.py b/api/funkwhale_api/instance/urls.py index 0956dae4a..6047eca19 100644 --- a/api/funkwhale_api/instance/urls.py +++ b/api/funkwhale_api/instance/urls.py @@ -1,4 +1,5 @@ from django.conf.urls import url + from funkwhale_api.common import routers from . import views diff --git a/api/funkwhale_api/instance/views.py b/api/funkwhale_api/instance/views.py index cde306ed5..bad2a41af 100644 --- a/api/funkwhale_api/instance/views.py +++ b/api/funkwhale_api/instance/views.py @@ -1,31 +1,26 @@ import json import logging -from cache_memoize import cache_memoize +from cache_memoize import cache_memoize from django.conf import settings from django.urls import reverse - -from dynamic_preferences.api.serializers import GlobalPreferenceSerializer +from drf_spectacular.utils import extend_schema from dynamic_preferences.api import viewsets as preferences_viewsets +from dynamic_preferences.api.serializers import GlobalPreferenceSerializer from dynamic_preferences.registries import global_preferences_registry -from rest_framework import generics -from rest_framework import views +from rest_framework import generics, views from rest_framework.response import Response from funkwhale_api import __version__ as funkwhale_version -from funkwhale_api.common import middleware -from funkwhale_api.common import preferences +from funkwhale_api.common import middleware, preferences from funkwhale_api.common.renderers import ActivityStreamRenderer -from funkwhale_api.federation.models import Domain from funkwhale_api.federation.actors import get_service_actor -from funkwhale_api.users.oauth import permissions as oauth_permissions -from funkwhale_api.music.utils import SUPPORTED_EXTENSIONS +from funkwhale_api.federation.models import Domain from funkwhale_api.moderation.models import REPORT_TYPES +from funkwhale_api.music.utils import SUPPORTED_EXTENSIONS +from funkwhale_api.users.oauth import permissions as oauth_permissions -from drf_spectacular.utils import extend_schema - -from . import serializers -from . import stats +from . import serializers, stats NODEINFO_2_CONTENT_TYPE = "application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.0#; charset=utf-8" # noqa diff --git a/api/funkwhale_api/manage/filters.py b/api/funkwhale_api/manage/filters.py index 39ba56d9d..fb283de99 100644 --- a/api/funkwhale_api/manage/filters.py +++ b/api/funkwhale_api/manage/filters.py @@ -1,22 +1,20 @@ +import django_filters from django import forms from django.db.models import Q - -import django_filters from django_filters import rest_framework as filters +from funkwhale_api.audio import models as audio_models from funkwhale_api.common import fields from funkwhale_api.common import filters as common_filters from funkwhale_api.common import search - -from funkwhale_api.audio import models as audio_models from funkwhale_api.federation import models as federation_models from funkwhale_api.federation import utils as federation_utils from funkwhale_api.moderation import models as moderation_models from funkwhale_api.moderation import serializers as moderation_serializers from funkwhale_api.moderation import utils as moderation_utils from funkwhale_api.music import models as music_models -from funkwhale_api.users import models as users_models from funkwhale_api.tags import models as tags_models +from funkwhale_api.users import models as users_models class ActorField(forms.CharField): diff --git a/api/funkwhale_api/manage/serializers.py b/api/funkwhale_api/manage/serializers.py index 03ecd9076..2ea740916 100644 --- a/api/funkwhale_api/manage/serializers.py +++ b/api/funkwhale_api/manage/serializers.py @@ -1,14 +1,15 @@ from django.conf import settings from django.db import transaction - +from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import extend_schema_field from rest_framework import serializers from funkwhale_api.audio import models as audio_models from funkwhale_api.common import fields as common_fields from funkwhale_api.common import serializers as common_serializers from funkwhale_api.common import utils as common_utils -from funkwhale_api.federation import models as federation_models from funkwhale_api.federation import fields as federation_fields +from funkwhale_api.federation import models as federation_models from funkwhale_api.federation import tasks as federation_tasks from funkwhale_api.moderation import models as moderation_models from funkwhale_api.moderation import serializers as moderation_serializers @@ -18,9 +19,6 @@ from funkwhale_api.music import serializers as music_serializers from funkwhale_api.tags import models as tags_models from funkwhale_api.users import models as users_models -from drf_spectacular.utils import extend_schema_field -from drf_spectacular.types import OpenApiTypes - from . import filters diff --git a/api/funkwhale_api/manage/urls.py b/api/funkwhale_api/manage/urls.py index 760e24c8d..9cf6acced 100644 --- a/api/funkwhale_api/manage/urls.py +++ b/api/funkwhale_api/manage/urls.py @@ -1,4 +1,5 @@ from django.conf.urls import include, url + from funkwhale_api.common import routers from . import views diff --git a/api/funkwhale_api/manage/views.py b/api/funkwhale_api/manage/views.py index 627323003..00c537f89 100644 --- a/api/funkwhale_api/manage/views.py +++ b/api/funkwhale_api/manage/views.py @@ -1,32 +1,30 @@ -from rest_framework import mixins, response, viewsets -from rest_framework import decorators as rest_decorators - -from drf_spectacular.utils import extend_schema - from django.db import transaction -from django.db.models import Count, Prefetch, Q, Sum, OuterRef, Subquery +from django.db.models import Count, OuterRef, Prefetch, Q, Subquery, Sum from django.db.models.functions import Coalesce, Length from django.shortcuts import get_object_or_404 +from drf_spectacular.utils import extend_schema +from rest_framework import decorators as rest_decorators +from rest_framework import mixins, response, viewsets from funkwhale_api.audio import models as audio_models -from funkwhale_api.common.mixins import MultipleLookupDetailMixin +from funkwhale_api.common import decorators from funkwhale_api.common import models as common_models -from funkwhale_api.common import preferences, decorators +from funkwhale_api.common import preferences from funkwhale_api.common import utils as common_utils +from funkwhale_api.common.mixins import MultipleLookupDetailMixin from funkwhale_api.favorites import models as favorites_models from funkwhale_api.federation import models as federation_models from funkwhale_api.federation import tasks as federation_tasks from funkwhale_api.federation import utils as federation_utils from funkwhale_api.history import models as history_models -from funkwhale_api.music import models as music_models -from funkwhale_api.music import views as music_views from funkwhale_api.moderation import models as moderation_models from funkwhale_api.moderation import tasks as moderation_tasks +from funkwhale_api.music import models as music_models +from funkwhale_api.music import views as music_views from funkwhale_api.playlists import models as playlists_models from funkwhale_api.tags import models as tags_models from funkwhale_api.users import models as users_models - from . import filters, serializers diff --git a/api/funkwhale_api/moderation/dynamic_preferences_registry.py b/api/funkwhale_api/moderation/dynamic_preferences_registry.py index 331b9b5c7..8d982653c 100644 --- a/api/funkwhale_api/moderation/dynamic_preferences_registry.py +++ b/api/funkwhale_api/moderation/dynamic_preferences_registry.py @@ -1,6 +1,5 @@ from dynamic_preferences import types from dynamic_preferences.registries import global_preferences_registry - from rest_framework import serializers from funkwhale_api.common import preferences as common_preferences diff --git a/api/funkwhale_api/moderation/factories.py b/api/funkwhale_api/moderation/factories.py index 74a1daa65..5b681c6dd 100644 --- a/api/funkwhale_api/moderation/factories.py +++ b/api/funkwhale_api/moderation/factories.py @@ -1,6 +1,6 @@ import factory -from funkwhale_api.factories import registry, NoUpdateOnCreate +from funkwhale_api.factories import NoUpdateOnCreate, registry from funkwhale_api.federation import factories as federation_factories from funkwhale_api.music import factories as music_factories from funkwhale_api.users import factories as users_factories diff --git a/api/funkwhale_api/moderation/filters.py b/api/funkwhale_api/moderation/filters.py index 991b82479..eacb7c4b0 100644 --- a/api/funkwhale_api/moderation/filters.py +++ b/api/funkwhale_api/moderation/filters.py @@ -1,8 +1,6 @@ from django.db.models import Q - from django_filters import rest_framework as filters - USER_FILTER_CONFIG = { "ARTIST": {"target_artist": ["pk"]}, "CHANNEL": {"target_artist": ["artist__pk"]}, diff --git a/api/funkwhale_api/moderation/management/commands/mrf_check.py b/api/funkwhale_api/moderation/management/commands/mrf_check.py index 51112de21..1e0e79d17 100644 --- a/api/funkwhale_api/moderation/management/commands/mrf_check.py +++ b/api/funkwhale_api/moderation/management/commands/mrf_check.py @@ -1,10 +1,10 @@ import json +import logging import sys import uuid -import logging -from django.core.management.base import BaseCommand, CommandError from django.core import validators +from django.core.management.base import BaseCommand, CommandError from funkwhale_api.common import session from funkwhale_api.federation import models diff --git a/api/funkwhale_api/moderation/models.py b/api/funkwhale_api/moderation/models.py index 447449410..f45441dbe 100644 --- a/api/funkwhale_api/moderation/models.py +++ b/api/funkwhale_api/moderation/models.py @@ -3,8 +3,8 @@ import uuid from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation from django.contrib.contenttypes.models import ContentType -from django.db.models import JSONField from django.db import models +from django.db.models import JSONField from django.db.models.signals import pre_save from django.dispatch import receiver from django.urls import reverse diff --git a/api/funkwhale_api/moderation/mrf_policies.py b/api/funkwhale_api/moderation/mrf_policies.py index ec6b2f6d8..7d388c69e 100644 --- a/api/funkwhale_api/moderation/mrf_policies.py +++ b/api/funkwhale_api/moderation/mrf_policies.py @@ -1,7 +1,6 @@ import urllib.parse -from funkwhale_api.common import preferences -from funkwhale_api.common import utils +from funkwhale_api.common import preferences, utils from funkwhale_api.federation import models as federation_models from funkwhale_api.moderation import mrf diff --git a/api/funkwhale_api/moderation/serializers.py b/api/funkwhale_api/moderation/serializers.py index 55daca3a4..b3c784d64 100644 --- a/api/funkwhale_api/moderation/serializers.py +++ b/api/funkwhale_api/moderation/serializers.py @@ -1,9 +1,9 @@ import json import urllib.parse +import persisting_theory from django.conf import settings from django.core.serializers.json import DjangoJSONEncoder -import persisting_theory from rest_framework import serializers from funkwhale_api.audio import models as audio_models @@ -14,8 +14,7 @@ from funkwhale_api.federation import utils as federation_utils from funkwhale_api.music import models as music_models from funkwhale_api.playlists import models as playlists_models -from . import models -from . import tasks +from . import models, tasks class FilteredArtistSerializer(serializers.ModelSerializer): diff --git a/api/funkwhale_api/moderation/tasks.py b/api/funkwhale_api/moderation/tasks.py index 1e049540f..9c510bf61 100644 --- a/api/funkwhale_api/moderation/tasks.py +++ b/api/funkwhale_api/moderation/tasks.py @@ -1,18 +1,16 @@ import logging -from django.core import mail + from django.conf import settings +from django.core import mail from django.db import transaction from django.dispatch import receiver -from funkwhale_api.common import channels -from funkwhale_api.common import preferences -from funkwhale_api.common import utils -from funkwhale_api.taskapp import celery +from funkwhale_api.common import channels, preferences, utils from funkwhale_api.federation import utils as federation_utils +from funkwhale_api.taskapp import celery from funkwhale_api.users import models as users_models -from . import models -from . import signals +from . import models, signals logger = logging.getLogger(__name__) diff --git a/api/funkwhale_api/moderation/utils.py b/api/funkwhale_api/moderation/utils.py index c8bf691dc..a08bc1ea0 100644 --- a/api/funkwhale_api/moderation/utils.py +++ b/api/funkwhale_api/moderation/utils.py @@ -5,7 +5,6 @@ from funkwhale_api.federation import models as federation_models from . import models from . import serializers as moderation_serializers - NOTE_TARGET_FIELDS = { "report": { "queryset": models.Report.objects.all(), diff --git a/api/funkwhale_api/moderation/views.py b/api/funkwhale_api/moderation/views.py index b3a91594a..71e139bc7 100644 --- a/api/funkwhale_api/moderation/views.py +++ b/api/funkwhale_api/moderation/views.py @@ -1,15 +1,10 @@ from django.db import IntegrityError - -from rest_framework import mixins -from rest_framework import response -from rest_framework import status -from rest_framework import viewsets +from rest_framework import mixins, response, status, viewsets from funkwhale_api.federation import routes from funkwhale_api.federation import utils as federation_utils -from . import models -from . import serializers +from . import models, serializers class UserFilterViewSet( diff --git a/api/funkwhale_api/music/factories.py b/api/funkwhale_api/music/factories.py index 14bcecb86..eba9525b4 100644 --- a/api/funkwhale_api/music/factories.py +++ b/api/funkwhale_api/music/factories.py @@ -2,9 +2,8 @@ import os import factory -from funkwhale_api.factories import registry, NoUpdateOnCreate - from funkwhale_api.common import factories as common_factories +from funkwhale_api.factories import NoUpdateOnCreate, registry from funkwhale_api.federation import factories as federation_factories from funkwhale_api.music import licenses from funkwhale_api.tags import factories as tags_factories diff --git a/api/funkwhale_api/music/filters.py b/api/funkwhale_api/music/filters.py index 3e152c497..92f519d18 100644 --- a/api/funkwhale_api/music/filters.py +++ b/api/funkwhale_api/music/filters.py @@ -1,6 +1,5 @@ -from django.db.models import Q - import django_filters +from django.db.models import Q from django_filters import rest_framework as filters from funkwhale_api.audio import filters as audio_filters @@ -11,8 +10,7 @@ from funkwhale_api.common import search from funkwhale_api.moderation import filters as moderation_filters from funkwhale_api.tags import filters as tags_filters -from . import models -from . import utils +from . import models, utils def filter_tags(queryset, name, value): diff --git a/api/funkwhale_api/music/management/commands/check_inplace_files.py b/api/funkwhale_api/music/management/commands/check_inplace_files.py index d3c36212a..514b9a838 100644 --- a/api/funkwhale_api/music/management/commands/check_inplace_files.py +++ b/api/funkwhale_api/music/management/commands/check_inplace_files.py @@ -2,7 +2,6 @@ import os from argparse import RawTextHelpFormatter from django.core.management.base import BaseCommand - from django.db import transaction from funkwhale_api.music import models diff --git a/api/funkwhale_api/music/management/commands/check_licenses.py b/api/funkwhale_api/music/management/commands/check_licenses.py index b0b398acf..0746d6b8b 100644 --- a/api/funkwhale_api/music/management/commands/check_licenses.py +++ b/api/funkwhale_api/music/management/commands/check_licenses.py @@ -1,5 +1,5 @@ -from django.core.management.base import BaseCommand, CommandError import requests.exceptions +from django.core.management.base import BaseCommand, CommandError from funkwhale_api.music import licenses diff --git a/api/funkwhale_api/music/management/commands/create_library.py b/api/funkwhale_api/music/management/commands/create_library.py index 861100cd5..8b2073947 100644 --- a/api/funkwhale_api/music/management/commands/create_library.py +++ b/api/funkwhale_api/music/management/commands/create_library.py @@ -1,6 +1,7 @@ +from django.core.management.base import BaseCommand + from funkwhale_api.federation.models import Actor from funkwhale_api.music.models import Library -from django.core.management.base import BaseCommand class Command(BaseCommand): diff --git a/api/funkwhale_api/music/management/commands/import_files.py b/api/funkwhale_api/music/management/commands/import_files.py index afb83c8d0..1d6542a27 100644 --- a/api/funkwhale_api/music/management/commands/import_files.py +++ b/api/funkwhale_api/music/management/commands/import_files.py @@ -10,7 +10,6 @@ import urllib.parse import watchdog.events import watchdog.observers - from django.conf import settings from django.core.cache import cache from django.core.files import File @@ -19,7 +18,6 @@ from django.core.management.base import BaseCommand, CommandError from django.db.models import Q from django.db.utils import IntegrityError from django.utils import timezone - from rest_framework import serializers from funkwhale_api.common import utils as common_utils diff --git a/api/funkwhale_api/music/management/commands/prune_library.py b/api/funkwhale_api/music/management/commands/prune_library.py index e06ee0fdb..c0a2ebe97 100644 --- a/api/funkwhale_api/music/management/commands/prune_library.py +++ b/api/funkwhale_api/music/management/commands/prune_library.py @@ -1,8 +1,6 @@ from argparse import RawTextHelpFormatter -from django.core.management.base import BaseCommand -from django.core.management.base import CommandError - +from django.core.management.base import BaseCommand, CommandError from django.db import transaction from funkwhale_api.music import models, tasks diff --git a/api/funkwhale_api/music/management/commands/prune_skipped_uploads.py b/api/funkwhale_api/music/management/commands/prune_skipped_uploads.py index 8dcf75380..7dd86f9af 100644 --- a/api/funkwhale_api/music/management/commands/prune_skipped_uploads.py +++ b/api/funkwhale_api/music/management/commands/prune_skipped_uploads.py @@ -1,5 +1,4 @@ from django.core.management.base import BaseCommand - from django.db import transaction from funkwhale_api.music import models diff --git a/api/funkwhale_api/music/management/commands/rebuild_music_permissions.py b/api/funkwhale_api/music/management/commands/rebuild_music_permissions.py index 6f02e51ce..3cf1b7fe4 100644 --- a/api/funkwhale_api/music/management/commands/rebuild_music_permissions.py +++ b/api/funkwhale_api/music/management/commands/rebuild_music_permissions.py @@ -1,13 +1,11 @@ from argparse import RawTextHelpFormatter -from django.core.management.base import BaseCommand -from django.core.management.base import CommandError - +from django.core.management.base import BaseCommand, CommandError from django.db import transaction from django.db.models import Q -from funkwhale_api.music.models import TrackActor, Library from funkwhale_api.federation.models import Actor +from funkwhale_api.music.models import Library, TrackActor class Command(BaseCommand): diff --git a/api/funkwhale_api/music/metadata.py b/api/funkwhale_api/music/metadata.py index d0c7f78ad..792179ee5 100644 --- a/api/funkwhale_api/music/metadata.py +++ b/api/funkwhale_api/music/metadata.py @@ -1,14 +1,13 @@ import base64 -from collections.abc import Mapping import datetime import logging -import arrow +from collections.abc import Mapping +import arrow import mutagen._util +import mutagen.flac import mutagen.oggtheora import mutagen.oggvorbis -import mutagen.flac - from rest_framework import serializers from funkwhale_api.tags import models as tags_models diff --git a/api/funkwhale_api/music/models.py b/api/funkwhale_api/music/models.py index 069a915a4..fb05c5694 100644 --- a/api/funkwhale_api/music/models.py +++ b/api/funkwhale_api/music/models.py @@ -5,25 +5,23 @@ import tempfile import urllib.parse import uuid -from django.db.models.expressions import OuterRef, Subquery -from django.db.models.query_utils import Q - import arrow import pydub from django.conf import settings from django.contrib.contenttypes.fields import GenericRelation -from django.db.models import JSONField -from django.contrib.postgres.search import SearchVectorField from django.contrib.postgres.indexes import GinIndex +from django.contrib.postgres.search import SearchVectorField from django.core.exceptions import ObjectDoesNotExist from django.core.files.base import ContentFile from django.core.serializers.json import DjangoJSONEncoder from django.db import models, transaction +from django.db.models import Count, JSONField, Prefetch +from django.db.models.expressions import OuterRef, Subquery +from django.db.models.query_utils import Q from django.db.models.signals import post_save, pre_save from django.dispatch import receiver from django.urls import reverse from django.utils import timezone -from django.db.models import Prefetch, Count from funkwhale_api import musicbrainz from funkwhale_api.common import fields @@ -33,6 +31,7 @@ from funkwhale_api.common import utils as common_utils from funkwhale_api.federation import models as federation_models from funkwhale_api.federation import utils as federation_utils from funkwhale_api.tags import models as tags_models + from . import importers, metadata, utils logger = logging.getLogger(__name__) @@ -1156,7 +1155,7 @@ class LibraryQuerySet(models.QuerySet): ) def viewable_by(self, actor): - from funkwhale_api.federation.models import LibraryFollow, Follow + from funkwhale_api.federation.models import Follow, LibraryFollow if actor is None: return self.filter(privacy_level="everyone") diff --git a/api/funkwhale_api/music/mutations.py b/api/funkwhale_api/music/mutations.py index 7cab0d63e..7cd2918d6 100644 --- a/api/funkwhale_api/music/mutations.py +++ b/api/funkwhale_api/music/mutations.py @@ -2,7 +2,6 @@ from funkwhale_api.common import models as common_models from funkwhale_api.common import mutations from funkwhale_api.common import serializers as common_serializers from funkwhale_api.common import utils as common_utils - from funkwhale_api.federation import routes from funkwhale_api.tags import models as tags_models from funkwhale_api.tags import serializers as tags_serializers diff --git a/api/funkwhale_api/music/serializers.py b/api/funkwhale_api/music/serializers.py index ba18a2fe7..d352da8d3 100644 --- a/api/funkwhale_api/music/serializers.py +++ b/api/funkwhale_api/music/serializers.py @@ -1,8 +1,10 @@ import urllib.parse -from django.db import transaction from django import urls from django.conf import settings +from django.db import transaction +from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import extend_schema_field from rest_framework import serializers from funkwhale_api.activity import serializers as activity_serializers @@ -18,9 +20,6 @@ from funkwhale_api.tags import serializers as tags_serializers from . import filters, models, tasks, utils -from drf_spectacular.utils import extend_schema_field -from drf_spectacular.types import OpenApiTypes - NOOP = object() COVER_WRITE_FIELD = common_serializers.RelatedField( diff --git a/api/funkwhale_api/music/spa_views.py b/api/funkwhale_api/music/spa_views.py index 2d1d1a22c..4ddebcdf5 100644 --- a/api/funkwhale_api/music/spa_views.py +++ b/api/funkwhale_api/music/spa_views.py @@ -1,16 +1,13 @@ import urllib.parse from django.conf import settings -from django.urls import reverse from django.db.models import Q +from django.urls import reverse -from funkwhale_api.common import preferences -from funkwhale_api.common import middleware -from funkwhale_api.common import utils +from funkwhale_api.common import middleware, preferences, utils from funkwhale_api.playlists import models as playlists_models -from . import models -from . import serializers +from . import models, serializers def get_twitter_card_metas(type, id): diff --git a/api/funkwhale_api/music/tasks.py b/api/funkwhale_api/music/tasks.py index 5eeac3248..3d3840895 100644 --- a/api/funkwhale_api/music/tasks.py +++ b/api/funkwhale_api/music/tasks.py @@ -9,25 +9,21 @@ from django.db import transaction from django.db.models import F, Q from django.dispatch import receiver from django.utils import timezone - from musicbrainzngs import ResponseError from requests.exceptions import RequestException from funkwhale_api import musicbrainz from funkwhale_api.common import channels, preferences from funkwhale_api.common import utils as common_utils -from funkwhale_api.federation import routes from funkwhale_api.federation import library as lb +from funkwhale_api.federation import routes from funkwhale_api.federation import utils as federation_utils from funkwhale_api.music.management.commands import import_files from funkwhale_api.tags import models as tags_models from funkwhale_api.tags import tasks as tags_tasks from funkwhale_api.taskapp import celery -from . import licenses -from . import models -from . import metadata -from . import signals +from . import licenses, metadata, models, signals logger = logging.getLogger(__name__) diff --git a/api/funkwhale_api/music/utils.py b/api/funkwhale_api/music/utils.py index 4e94c47a1..be75cab89 100644 --- a/api/funkwhale_api/music/utils.py +++ b/api/funkwhale_api/music/utils.py @@ -1,11 +1,10 @@ +import mimetypes import os import pathlib -import mimetypes import magic import mutagen import pydub - from django.conf import settings from django.core.cache import cache from django.db.models import F diff --git a/api/funkwhale_api/music/views.py b/api/funkwhale_api/music/views.py index ba7148ebb..c5c183240 100644 --- a/api/funkwhale_api/music/views.py +++ b/api/funkwhale_api/music/views.py @@ -2,39 +2,36 @@ import base64 import datetime import logging import urllib.parse + +import django.db.utils +import requests.exceptions from django.conf import settings from django.core.cache import cache from django.db import transaction -from django.db.models import Count, Prefetch, Sum, F, Q -import django.db.utils +from django.db.models import Count, F, Prefetch, Q, Sum from django.utils import timezone - -from rest_framework import mixins -from rest_framework import renderers +from drf_spectacular.utils import OpenApiParameter, extend_schema, extend_schema_view +from rest_framework import mixins, renderers from rest_framework import settings as rest_settings from rest_framework import views, viewsets from rest_framework.decorators import action from rest_framework.response import Response -from drf_spectacular.utils import extend_schema, OpenApiParameter, extend_schema_view - -import requests.exceptions - from funkwhale_api.common import decorators as common_decorators from funkwhale_api.common import permissions as common_permissions from funkwhale_api.common import preferences from funkwhale_api.common import utils as common_utils from funkwhale_api.common import views as common_views -from funkwhale_api.federation.authentication import SignatureAuthentication from funkwhale_api.federation import actors from funkwhale_api.federation import api_serializers as federation_api_serializers from funkwhale_api.federation import decorators as federation_decorators from funkwhale_api.federation import models as federation_models from funkwhale_api.federation import routes from funkwhale_api.federation import tasks as federation_tasks +from funkwhale_api.federation.authentication import SignatureAuthentication from funkwhale_api.tags.models import Tag, TaggedItem -from funkwhale_api.users.oauth import permissions as oauth_permissions from funkwhale_api.users.authentication import ScopedTokenAuthentication +from funkwhale_api.users.oauth import permissions as oauth_permissions from . import filters, licenses, models, serializers, tasks, utils diff --git a/api/funkwhale_api/musicbrainz/urls.py b/api/funkwhale_api/musicbrainz/urls.py index f4ced5b00..b9e24994f 100644 --- a/api/funkwhale_api/musicbrainz/urls.py +++ b/api/funkwhale_api/musicbrainz/urls.py @@ -1,4 +1,5 @@ from django.conf.urls import url + from funkwhale_api.common import routers from . import views diff --git a/api/funkwhale_api/playlists/factories.py b/api/funkwhale_api/playlists/factories.py index acfde10cd..5fbddd997 100644 --- a/api/funkwhale_api/playlists/factories.py +++ b/api/funkwhale_api/playlists/factories.py @@ -1,6 +1,6 @@ import factory -from funkwhale_api.factories import registry, NoUpdateOnCreate +from funkwhale_api.factories import NoUpdateOnCreate, registry from funkwhale_api.music.factories import TrackFactory from funkwhale_api.users.factories import UserFactory diff --git a/api/funkwhale_api/playlists/models.py b/api/funkwhale_api/playlists/models.py index cef84ad25..af9190e1c 100644 --- a/api/funkwhale_api/playlists/models.py +++ b/api/funkwhale_api/playlists/models.py @@ -1,6 +1,6 @@ from django.db import models, transaction -from django.db.models.expressions import OuterRef, Subquery from django.db.models import Q +from django.db.models.expressions import OuterRef, Subquery from django.utils import timezone from rest_framework import exceptions diff --git a/api/funkwhale_api/playlists/serializers.py b/api/funkwhale_api/playlists/serializers.py index 59a4544be..09582774e 100644 --- a/api/funkwhale_api/playlists/serializers.py +++ b/api/funkwhale_api/playlists/serializers.py @@ -1,3 +1,5 @@ +from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import extend_schema_field from rest_framework import serializers from funkwhale_api.federation import serializers as federation_serializers @@ -5,9 +7,6 @@ from funkwhale_api.music.models import Track from funkwhale_api.music.serializers import TrackSerializer from funkwhale_api.users.serializers import UserBasicSerializer -from drf_spectacular.utils import extend_schema_field -from drf_spectacular.types import OpenApiTypes - from . import models diff --git a/api/funkwhale_api/playlists/views.py b/api/funkwhale_api/playlists/views.py index e2ebd59ab..ddcd0cea1 100644 --- a/api/funkwhale_api/playlists/views.py +++ b/api/funkwhale_api/playlists/views.py @@ -1,12 +1,10 @@ from django.db import transaction from django.db.models import Count - +from drf_spectacular.utils import extend_schema from rest_framework import exceptions, mixins, viewsets from rest_framework.decorators import action from rest_framework.response import Response -from drf_spectacular.utils import extend_schema - from funkwhale_api.common import fields, permissions from funkwhale_api.music import utils as music_utils from funkwhale_api.users.oauth import permissions as oauth_permissions diff --git a/api/funkwhale_api/radios/factories.py b/api/funkwhale_api/radios/factories.py index 2ba66483d..f8ff6f6ac 100644 --- a/api/funkwhale_api/radios/factories.py +++ b/api/funkwhale_api/radios/factories.py @@ -1,6 +1,6 @@ import factory -from funkwhale_api.factories import registry, NoUpdateOnCreate +from funkwhale_api.factories import NoUpdateOnCreate, registry from funkwhale_api.users.factories import UserFactory diff --git a/api/funkwhale_api/radios/filtersets.py b/api/funkwhale_api/radios/filtersets.py index 128b9ad1d..366da9973 100644 --- a/api/funkwhale_api/radios/filtersets.py +++ b/api/funkwhale_api/radios/filtersets.py @@ -1,5 +1,4 @@ import django_filters - from django_filters import rest_framework as filters from funkwhale_api.common import filters as common_filters diff --git a/api/funkwhale_api/radios/models.py b/api/funkwhale_api/radios/models.py index 6439e25db..9d8753608 100644 --- a/api/funkwhale_api/radios/models.py +++ b/api/funkwhale_api/radios/models.py @@ -1,8 +1,8 @@ from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType -from django.db.models import JSONField from django.core.serializers.json import DjangoJSONEncoder from django.db import models +from django.db.models import JSONField from django.utils import timezone from funkwhale_api.music.models import Track diff --git a/api/funkwhale_api/radios/radios.py b/api/funkwhale_api/radios/radios.py index 58477a8d6..361502da7 100644 --- a/api/funkwhale_api/radios/radios.py +++ b/api/funkwhale_api/radios/radios.py @@ -1,7 +1,7 @@ import datetime import logging import random -from typing import Optional, List, Tuple +from typing import List, Optional, Tuple from django.core.exceptions import ValidationError from django.db import connection diff --git a/api/funkwhale_api/radios/views.py b/api/funkwhale_api/radios/views.py index 037bcb4ad..a81a1c218 100644 --- a/api/funkwhale_api/radios/views.py +++ b/api/funkwhale_api/radios/views.py @@ -1,14 +1,12 @@ from django.db.models import Q - +from drf_spectacular.utils import extend_schema from rest_framework import mixins, status, viewsets from rest_framework.decorators import action from rest_framework.response import Response -from drf_spectacular.utils import extend_schema - from funkwhale_api.common import permissions as common_permissions -from funkwhale_api.music.serializers import TrackSerializer from funkwhale_api.music import utils as music_utils +from funkwhale_api.music.serializers import TrackSerializer from funkwhale_api.users.oauth import permissions as oauth_permissions from . import filters, filtersets, models, serializers diff --git a/api/funkwhale_api/schema.py b/api/funkwhale_api/schema.py index 2f6892f4f..1038f1e75 100644 --- a/api/funkwhale_api/schema.py +++ b/api/funkwhale_api/schema.py @@ -1,9 +1,8 @@ -from drf_spectacular.openapi import AutoSchema - -from pluralizer import Pluralizer - import re +from drf_spectacular.openapi import AutoSchema +from pluralizer import Pluralizer + class CustomAutoSchema(AutoSchema): method_mapping = { diff --git a/api/funkwhale_api/subsonic/views.py b/api/funkwhale_api/subsonic/views.py index dd5ca3111..84ef96fa5 100644 --- a/api/funkwhale_api/subsonic/views.py +++ b/api/funkwhale_api/subsonic/views.py @@ -14,22 +14,20 @@ from rest_framework import permissions as rest_permissions from rest_framework import renderers, response, viewsets from rest_framework.decorators import action from rest_framework.serializers import ValidationError -from config import plugins import funkwhale_api +from config import plugins from funkwhale_api.activity import record from funkwhale_api.audio import models as audio_models from funkwhale_api.audio import serializers as audio_serializers from funkwhale_api.audio import views as audio_views -from funkwhale_api.common import ( - fields, - preferences, - models as common_models, - utils as common_utils, - tasks as common_tasks, -) -from funkwhale_api.federation import models as federation_models +from funkwhale_api.common import fields +from funkwhale_api.common import models as common_models +from funkwhale_api.common import preferences +from funkwhale_api.common import tasks as common_tasks +from funkwhale_api.common import utils as common_utils from funkwhale_api.favorites.models import TrackFavorite +from funkwhale_api.federation import models as federation_models from funkwhale_api.moderation import filters as moderation_filters from funkwhale_api.music import models as music_models from funkwhale_api.music import serializers as music_serializers diff --git a/api/funkwhale_api/tags/factories.py b/api/funkwhale_api/tags/factories.py index c0ba5cac6..c0c2096df 100644 --- a/api/funkwhale_api/tags/factories.py +++ b/api/funkwhale_api/tags/factories.py @@ -1,6 +1,6 @@ import factory -from funkwhale_api.factories import registry, NoUpdateOnCreate +from funkwhale_api.factories import NoUpdateOnCreate, registry from . import models diff --git a/api/funkwhale_api/tags/filters.py b/api/funkwhale_api/tags/filters.py index 7922e3e12..38bec5b90 100644 --- a/api/funkwhale_api/tags/filters.py +++ b/api/funkwhale_api/tags/filters.py @@ -1,6 +1,5 @@ -from django.db import models as dj_models - import django_filters +from django.db import models as dj_models from django_filters import rest_framework as filters from funkwhale_api.common import fields diff --git a/api/funkwhale_api/tags/models.py b/api/funkwhale_api/tags/models.py index 1416a62bc..a8db3a675 100644 --- a/api/funkwhale_api/tags/models.py +++ b/api/funkwhale_api/tags/models.py @@ -4,13 +4,10 @@ from django.conf import settings from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.contrib.postgres.fields import CICharField -from django.db import models -from django.db import transaction - +from django.db import models, transaction from django.utils import timezone from django.utils.translation import gettext_lazy as _ - TAG_REGEX = re.compile(r"^((\w+)([\d_]*))$") diff --git a/api/funkwhale_api/tags/serializers.py b/api/funkwhale_api/tags/serializers.py index 9b7b31f50..3b7df6aea 100644 --- a/api/funkwhale_api/tags/serializers.py +++ b/api/funkwhale_api/tags/serializers.py @@ -1,6 +1,5 @@ -from rest_framework import serializers - from django.conf import settings +from rest_framework import serializers from . import models diff --git a/api/funkwhale_api/tags/views.py b/api/funkwhale_api/tags/views.py index 1d052ca7b..91c94840c 100644 --- a/api/funkwhale_api/tags/views.py +++ b/api/funkwhale_api/tags/views.py @@ -1,13 +1,10 @@ +import django_filters.rest_framework from django.db.models import functions from rest_framework import viewsets -import django_filters.rest_framework - from funkwhale_api.users.oauth import permissions as oauth_permissions -from . import filters -from . import models -from . import serializers +from . import filters, models, serializers class TagViewSet(viewsets.ReadOnlyModelViewSet): diff --git a/api/funkwhale_api/taskapp/celery.py b/api/funkwhale_api/taskapp/celery.py index fa827c2dd..728181041 100644 --- a/api/funkwhale_api/taskapp/celery.py +++ b/api/funkwhale_api/taskapp/celery.py @@ -1,14 +1,14 @@ from __future__ import absolute_import import functools -import traceback as tb -import os import logging +import os +import traceback as tb + import celery.app.task from django.apps import AppConfig from django.conf import settings - logger = logging.getLogger("celery") if not settings.configured: diff --git a/api/funkwhale_api/users/admin.py b/api/funkwhale_api/users/admin.py index 24f08d026..4d6d519bb 100644 --- a/api/funkwhale_api/users/admin.py +++ b/api/funkwhale_api/users/admin.py @@ -2,11 +2,12 @@ from __future__ import absolute_import, unicode_literals from django import forms -from funkwhale_api.common import admin from django.contrib.auth.admin import UserAdmin as AuthUserAdmin from django.contrib.auth.forms import UserChangeForm, UserCreationForm from django.utils.translation import ugettext_lazy as _ +from funkwhale_api.common import admin + from . import models diff --git a/api/funkwhale_api/users/api_urls.py b/api/funkwhale_api/users/api_urls.py index 1c39797f2..b0a057028 100644 --- a/api/funkwhale_api/users/api_urls.py +++ b/api/funkwhale_api/users/api_urls.py @@ -1,5 +1,7 @@ from django.conf.urls import url + from funkwhale_api.common import routers + from . import views router = routers.OptionalSlashRouter() diff --git a/api/funkwhale_api/users/auth_backends.py b/api/funkwhale_api/users/auth_backends.py index 3cb39b5d5..2eb7b08e8 100644 --- a/api/funkwhale_api/users/auth_backends.py +++ b/api/funkwhale_api/users/auth_backends.py @@ -1,5 +1,5 @@ -from django.contrib.auth import backends, get_user_model from allauth.account import auth_backends +from django.contrib.auth import backends, get_user_model from funkwhale_api.common import authentication diff --git a/api/funkwhale_api/users/authentication.py b/api/funkwhale_api/users/authentication.py index 5e94dd385..85fa2580d 100644 --- a/api/funkwhale_api/users/authentication.py +++ b/api/funkwhale_api/users/authentication.py @@ -1,13 +1,10 @@ from django.conf import settings from django.core import signing - -from rest_framework import authentication -from rest_framework import exceptions from django.core.exceptions import ValidationError - -from .oauth import scopes as available_scopes +from rest_framework import authentication, exceptions from . import models +from .oauth import scopes as available_scopes def generate_scoped_token(user_id, user_secret, scopes): diff --git a/api/funkwhale_api/users/factories.py b/api/funkwhale_api/users/factories.py index 7b1504328..c039a4854 100644 --- a/api/funkwhale_api/users/factories.py +++ b/api/funkwhale_api/users/factories.py @@ -1,8 +1,9 @@ -import pytz import factory +import pytz from django.contrib.auth.models import Permission from django.utils import timezone -from funkwhale_api.factories import ManyToManyFromList, registry, NoUpdateOnCreate + +from funkwhale_api.factories import ManyToManyFromList, NoUpdateOnCreate, registry from . import models diff --git a/api/funkwhale_api/users/models.py b/api/funkwhale_api/users/models.py index 818592678..e5ac8bfb6 100644 --- a/api/funkwhale_api/users/models.py +++ b/api/funkwhale_api/users/models.py @@ -8,14 +8,14 @@ import string import uuid from django.conf import settings -from django.contrib.auth.models import AbstractUser, UserManager as BaseUserManager -from django.db.models import JSONField +from django.contrib.auth.models import AbstractUser +from django.contrib.auth.models import UserManager as BaseUserManager from django.db import models, transaction +from django.db.models import JSONField from django.dispatch import receiver from django.urls import reverse from django.utils import timezone from django.utils.translation import ugettext_lazy as _ - from django_auth_ldap.backend import populate_user as ldap_populate_user from oauth2_provider import models as oauth2_models from oauth2_provider import validators as oauth2_validators diff --git a/api/funkwhale_api/users/mutations.py b/api/funkwhale_api/users/mutations.py index 2c30ffe17..603cc203d 100644 --- a/api/funkwhale_api/users/mutations.py +++ b/api/funkwhale_api/users/mutations.py @@ -2,8 +2,7 @@ import uuid from django.db import transaction -from funkwhale_api.common import mutations -from funkwhale_api.common import utils +from funkwhale_api.common import mutations, utils from funkwhale_api.federation import models from . import tasks diff --git a/api/funkwhale_api/users/oauth/permissions.py b/api/funkwhale_api/users/oauth/permissions.py index 823188d7a..54a3ff0f2 100644 --- a/api/funkwhale_api/users/oauth/permissions.py +++ b/api/funkwhale_api/users/oauth/permissions.py @@ -1,5 +1,5 @@ -from rest_framework import permissions from django.core.exceptions import ImproperlyConfigured +from rest_framework import permissions from funkwhale_api.common import preferences diff --git a/api/funkwhale_api/users/oauth/server.py b/api/funkwhale_api/users/oauth/server.py index 0bd59be58..08e2e2917 100644 --- a/api/funkwhale_api/users/oauth/server.py +++ b/api/funkwhale_api/users/oauth/server.py @@ -1,4 +1,5 @@ import urllib.parse + import oauthlib.oauth2 from funkwhale_api.common import authentication diff --git a/api/funkwhale_api/users/oauth/tasks.py b/api/funkwhale_api/users/oauth/tasks.py index 2aaba353a..c0ca1dcfc 100644 --- a/api/funkwhale_api/users/oauth/tasks.py +++ b/api/funkwhale_api/users/oauth/tasks.py @@ -1,7 +1,7 @@ -from funkwhale_api.taskapp import celery - from oauth2_provider import models as oauth2_models +from funkwhale_api.taskapp import celery + @celery.app.task(name="oauth.clear_expired_tokens") def clear_expired_tokens(): diff --git a/api/funkwhale_api/users/oauth/views.py b/api/funkwhale_api/users/oauth/views.py index 70324963c..9f0677cbf 100644 --- a/api/funkwhale_api/users/oauth/views.py +++ b/api/funkwhale_api/users/oauth/views.py @@ -1,25 +1,22 @@ import json -import urllib.parse import secrets +import urllib.parse from django import http -from django.utils import timezone from django.db.models import Q - -from rest_framework import mixins, permissions, response, views, viewsets -from rest_framework.decorators import action - +from django.utils import timezone from drf_spectacular.utils import extend_schema - from oauth2_provider import exceptions as oauth2_exceptions from oauth2_provider import views as oauth_views from oauth2_provider.settings import oauth2_settings +from rest_framework import mixins, permissions, response, views, viewsets +from rest_framework.decorators import action from funkwhale_api.common import throttling from .. import models -from .permissions import ScopePermission from . import serializers +from .permissions import ScopePermission class ApplicationViewSet( diff --git a/api/funkwhale_api/users/rest_auth_urls.py b/api/funkwhale_api/users/rest_auth_urls.py index 446b69e4f..21d91685c 100644 --- a/api/funkwhale_api/users/rest_auth_urls.py +++ b/api/funkwhale_api/users/rest_auth_urls.py @@ -1,6 +1,6 @@ +from dj_rest_auth import views as rest_auth_views from django.conf.urls import url from django.views.generic import TemplateView -from dj_rest_auth import views as rest_auth_views from . import views diff --git a/api/funkwhale_api/users/serializers.py b/api/funkwhale_api/users/serializers.py index 3d33ed556..8fe904f54 100644 --- a/api/funkwhale_api/users/serializers.py +++ b/api/funkwhale_api/users/serializers.py @@ -1,15 +1,16 @@ import re +from allauth.account import models as allauth_models +from dj_rest_auth.registration.serializers import RegisterSerializer as RS +from dj_rest_auth.registration.serializers import get_adapter +from dj_rest_auth.serializers import PasswordResetSerializer as PRS +from django.contrib import auth +from django.contrib.auth.forms import PasswordResetForm from django.core import validators from django.utils.deconstruct import deconstructible from django.utils.translation import gettext_lazy as _ -from django.contrib.auth.forms import PasswordResetForm - -from django.contrib import auth - -from allauth.account import models as allauth_models -from dj_rest_auth.serializers import PasswordResetSerializer as PRS -from dj_rest_auth.registration.serializers import RegisterSerializer as RS, get_adapter +from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import extend_schema_field from rest_framework import serializers from funkwhale_api.activity import serializers as activity_serializers @@ -22,12 +23,9 @@ from funkwhale_api.moderation import models as moderation_models from funkwhale_api.moderation import tasks as moderation_tasks from funkwhale_api.moderation import utils as moderation_utils -from drf_spectacular.utils import extend_schema_field -from drf_spectacular.types import OpenApiTypes - from . import adapters -from . import models from . import authentication as users_authentication +from . import models @deconstructible diff --git a/api/funkwhale_api/users/views.py b/api/funkwhale_api/users/views.py index 4f8c64165..3128dfbcf 100644 --- a/api/funkwhale_api/users/views.py +++ b/api/funkwhale_api/users/views.py @@ -1,22 +1,17 @@ import json -from django import http -from django.contrib import auth -from django.middleware import csrf - from allauth.account.adapter import get_adapter from dj_rest_auth import views as rest_auth_views from dj_rest_auth.registration import views as registration_views -from rest_framework import mixins -from rest_framework import viewsets +from django import http +from django.contrib import auth +from django.middleware import csrf +from drf_spectacular.utils import extend_schema, extend_schema_view +from rest_framework import mixins, viewsets from rest_framework.decorators import action from rest_framework.response import Response -from drf_spectacular.utils import extend_schema, extend_schema_view - -from funkwhale_api.common import authentication -from funkwhale_api.common import preferences -from funkwhale_api.common import throttling +from funkwhale_api.common import authentication, preferences, throttling from . import models, serializers, tasks diff --git a/api/manage.py b/api/manage.py index 8b855fa71..fbc0f7575 100755 --- a/api/manage.py +++ b/api/manage.py @@ -1,9 +1,10 @@ #!/usr/bin/env python3 -import django import os import sys +import django + sys.path.append(os.path.dirname(os.path.abspath(__file__))) if __name__ == "__main__": diff --git a/api/tests/audio/test_filters.py b/api/tests/audio/test_filters.py index d7a0a7980..94bd9db34 100644 --- a/api/tests/audio/test_filters.py +++ b/api/tests/audio/test_filters.py @@ -1,7 +1,6 @@ import pytest -from funkwhale_api.audio import filters -from funkwhale_api.audio import models +from funkwhale_api.audio import filters, models def test_channel_filter_subscribed_true(factories, mocker, queryset_equal_list): diff --git a/api/tests/audio/test_models.py b/api/tests/audio/test_models.py index 6c5136844..d56a783fb 100644 --- a/api/tests/audio/test_models.py +++ b/api/tests/audio/test_models.py @@ -1,5 +1,4 @@ import pytest - from django.urls import reverse from funkwhale_api.federation import utils as federation_utils diff --git a/api/tests/audio/test_serializers.py b/api/tests/audio/test_serializers.py index 17851fcea..319770c40 100644 --- a/api/tests/audio/test_serializers.py +++ b/api/tests/audio/test_serializers.py @@ -4,7 +4,6 @@ import uuid import feedparser import pytest import pytz - from django.templatetags.static import static from django.urls import reverse diff --git a/api/tests/audio/test_spa_views.py b/api/tests/audio/test_spa_views.py index 11a3e5f4e..341210e69 100644 --- a/api/tests/audio/test_spa_views.py +++ b/api/tests/audio/test_spa_views.py @@ -1,7 +1,6 @@ -import pytest - import urllib.parse +import pytest from django.urls import reverse from funkwhale_api.common import utils diff --git a/api/tests/audio/test_views.py b/api/tests/audio/test_views.py index 4ee216fa9..28f38ed5d 100644 --- a/api/tests/audio/test_views.py +++ b/api/tests/audio/test_views.py @@ -1,13 +1,8 @@ import pytest - from django.urls import reverse -from funkwhale_api.audio import categories -from funkwhale_api.audio import renderers -from funkwhale_api.audio import serializers -from funkwhale_api.audio import views -from funkwhale_api.common import locales -from funkwhale_api.common import utils +from funkwhale_api.audio import categories, renderers, serializers, views +from funkwhale_api.common import locales, utils def test_channel_create(logged_in_api_client): diff --git a/api/tests/channels/test_consumers.py b/api/tests/channels/test_consumers.py index 985e3cdd6..1794d7651 100644 --- a/api/tests/channels/test_consumers.py +++ b/api/tests/channels/test_consumers.py @@ -1,5 +1,6 @@ import pytest from channels.testing import WebsocketCommunicator + from funkwhale_api.common.consumers import JsonAuthConsumer diff --git a/api/tests/cli/test_main.py b/api/tests/cli/test_main.py index 9bea72db7..1dfca233c 100644 --- a/api/tests/cli/test_main.py +++ b/api/tests/cli/test_main.py @@ -1,10 +1,7 @@ import pytest - from click.testing import CliRunner -from funkwhale_api.cli import main -from funkwhale_api.cli import library -from funkwhale_api.cli import users +from funkwhale_api.cli import library, main, users @pytest.mark.parametrize( diff --git a/api/tests/common/test_commands.py b/api/tests/common/test_commands.py index a6fabfc06..eb0d77f9e 100644 --- a/api/tests/common/test_commands.py +++ b/api/tests/common/test_commands.py @@ -1,5 +1,4 @@ import pytest - from django.core.management import call_command from funkwhale_api.federation import models as federation_models diff --git a/api/tests/common/test_decorators.py b/api/tests/common/test_decorators.py index f8fef7904..d137c3792 100644 --- a/api/tests/common/test_decorators.py +++ b/api/tests/common/test_decorators.py @@ -1,15 +1,16 @@ import pytest - from rest_framework import viewsets -from funkwhale_api.common import decorators -from funkwhale_api.common import models -from funkwhale_api.common import mutations -from funkwhale_api.common import serializers -from funkwhale_api.common import signals -from funkwhale_api.common import tasks -from funkwhale_api.music import models as music_models +from funkwhale_api.common import ( + decorators, + models, + mutations, + serializers, + signals, + tasks, +) from funkwhale_api.music import licenses +from funkwhale_api.music import models as music_models class V(viewsets.ModelViewSet): diff --git a/api/tests/common/test_middleware.py b/api/tests/common/test_middleware.py index 11642b43e..63d6d3cfb 100644 --- a/api/tests/common/test_middleware.py +++ b/api/tests/common/test_middleware.py @@ -1,15 +1,13 @@ import html import time + import pytest from django.http import HttpResponse from django.urls import reverse +from funkwhale_api.common import middleware, throttling, utils from funkwhale_api.federation import utils as federation_utils -from funkwhale_api.common import middleware -from funkwhale_api.common import throttling -from funkwhale_api.common import utils - def test_spa_fallback_middleware_no_404(mocker): get_response = mocker.Mock() diff --git a/api/tests/common/test_models.py b/api/tests/common/test_models.py index 15cbe2dcc..af0496b57 100644 --- a/api/tests/common/test_models.py +++ b/api/tests/common/test_models.py @@ -1,5 +1,4 @@ import pytest - from django.urls import reverse from funkwhale_api.federation import utils as federation_utils diff --git a/api/tests/common/test_mutations.py b/api/tests/common/test_mutations.py index d006f83f7..26c3d053f 100644 --- a/api/tests/common/test_mutations.py +++ b/api/tests/common/test_mutations.py @@ -1,9 +1,8 @@ import pytest +from rest_framework import serializers from funkwhale_api.common import mutations -from rest_framework import serializers - @pytest.fixture def mutations_registry(): diff --git a/api/tests/common/test_preferences.py b/api/tests/common/test_preferences.py index f380e8236..4b69f6ae5 100644 --- a/api/tests/common/test_preferences.py +++ b/api/tests/common/test_preferences.py @@ -1,8 +1,6 @@ import pytest - from dynamic_preferences import types from dynamic_preferences.registries import global_preferences_registry - from rest_framework import serializers from funkwhale_api.common import preferences as common_preferences diff --git a/api/tests/common/test_search.py b/api/tests/common/test_search.py index 887229802..73aa35a08 100644 --- a/api/tests/common/test_search.py +++ b/api/tests/common/test_search.py @@ -1,7 +1,6 @@ import pytest - -from django.db.models import Q from django import forms +from django.db.models import Q from funkwhale_api.common import search from funkwhale_api.music import models as music_models diff --git a/api/tests/common/test_serializers.py b/api/tests/common/test_serializers.py index e8ef04bca..a5c9f69c5 100644 --- a/api/tests/common/test_serializers.py +++ b/api/tests/common/test_serializers.py @@ -1,15 +1,13 @@ import os -import PIL +import django_filters +import PIL from django.core.files.uploadedfile import SimpleUploadedFile from django.urls import reverse -import django_filters - -from funkwhale_api.common import serializers -from funkwhale_api.common import utils -from funkwhale_api.users import models +from funkwhale_api.common import serializers, utils from funkwhale_api.federation import utils as federation_utils +from funkwhale_api.users import models class TestActionFilterSet(django_filters.FilterSet): diff --git a/api/tests/common/test_tasks.py b/api/tests/common/test_tasks.py index e35806847..32874d57b 100644 --- a/api/tests/common/test_tasks.py +++ b/api/tests/common/test_tasks.py @@ -1,10 +1,8 @@ -import pytest import datetime -from funkwhale_api.common import models -from funkwhale_api.common import serializers -from funkwhale_api.common import signals -from funkwhale_api.common import tasks +import pytest + +from funkwhale_api.common import models, serializers, signals, tasks def test_apply_migration(factories, mocker): diff --git a/api/tests/common/test_throttling.py b/api/tests/common/test_throttling.py index 76ff2578b..5445bfbc9 100644 --- a/api/tests/common/test_throttling.py +++ b/api/tests/common/test_throttling.py @@ -1,4 +1,5 @@ import time + import pytest from funkwhale_api.common import throttling diff --git a/api/tests/common/test_utils.py b/api/tests/common/test_utils.py index c7c01719a..3914017f1 100644 --- a/api/tests/common/test_utils.py +++ b/api/tests/common/test_utils.py @@ -1,4 +1,5 @@ import io + import pytest from funkwhale_api.common import utils diff --git a/api/tests/common/test_views.py b/api/tests/common/test_views.py index cb7f37811..876252a84 100644 --- a/api/tests/common/test_views.py +++ b/api/tests/common/test_views.py @@ -1,13 +1,9 @@ import io -import pytest +import pytest from django.urls import reverse -from funkwhale_api.common import serializers -from funkwhale_api.common import signals -from funkwhale_api.common import tasks -from funkwhale_api.common import throttling -from funkwhale_api.common import utils +from funkwhale_api.common import serializers, signals, tasks, throttling, utils def test_can_detail_mutation(logged_in_api_client, factories): diff --git a/api/tests/conftest.py b/api/tests/conftest.py index 8b1dddd48..7371bc9a2 100644 --- a/api/tests/conftest.py +++ b/api/tests/conftest.py @@ -1,26 +1,25 @@ import contextlib import io import os -import PIL import random import shutil import tempfile import time import factory +import PIL import pytest - -from django.core.management import call_command +from aioresponses import aioresponses from django.contrib.auth.models import AnonymousUser -from django.core.cache import cache as django_cache, caches +from django.core.cache import cache as django_cache +from django.core.cache import caches from django.core.files import uploadedfile -from django.utils import timezone -from django.test import client +from django.core.management import call_command from django.db import connection from django.db.migrations.executor import MigrationExecutor from django.db.models import QuerySet - -from aioresponses import aioresponses +from django.test import client +from django.utils import timezone from dynamic_preferences.registries import global_preferences_registry from rest_framework.test import APIClient, APIRequestFactory @@ -74,6 +73,7 @@ def queryset_equal_list(): @pytest.fixture(scope="session", autouse=True) def factories_autodiscover(): from django.apps import apps + from funkwhale_api import factories app_names = [app.name for app in apps.app_configs.values()] diff --git a/api/tests/favorites/test_favorites.py b/api/tests/favorites/test_favorites.py index 06d4caa61..73e6653e6 100644 --- a/api/tests/favorites/test_favorites.py +++ b/api/tests/favorites/test_favorites.py @@ -3,8 +3,8 @@ import json import pytest from django.urls import reverse -from funkwhale_api.favorites.models import TrackFavorite from funkwhale_api.favorites import serializers +from funkwhale_api.favorites.models import TrackFavorite def test_user_can_add_favorite(factories): diff --git a/api/tests/favorites/test_filters.py b/api/tests/favorites/test_filters.py index e5eaca39e..2d5bca7dc 100644 --- a/api/tests/favorites/test_filters.py +++ b/api/tests/favorites/test_filters.py @@ -1,5 +1,4 @@ -from funkwhale_api.favorites import filters -from funkwhale_api.favorites import models +from funkwhale_api.favorites import filters, models def test_track_favorite_filter_track_artist(factories, mocker, queryset_equal_list): diff --git a/api/tests/favorites/test_serializers.py b/api/tests/favorites/test_serializers.py index 16823caa3..3fcf6bca2 100644 --- a/api/tests/favorites/test_serializers.py +++ b/api/tests/favorites/test_serializers.py @@ -1,5 +1,5 @@ -from funkwhale_api.federation import serializers as federation_serializers from funkwhale_api.favorites import serializers +from funkwhale_api.federation import serializers as federation_serializers from funkwhale_api.music import serializers as music_serializers from funkwhale_api.users import serializers as users_serializers diff --git a/api/tests/favorites/test_views.py b/api/tests/favorites/test_views.py index 7c3aed402..a51097156 100644 --- a/api/tests/favorites/test_views.py +++ b/api/tests/favorites/test_views.py @@ -1,5 +1,4 @@ import pytest - from django.urls import reverse diff --git a/api/tests/federation/test_activity.py b/api/tests/federation/test_activity.py index 2e4b62014..859c00045 100644 --- a/api/tests/federation/test_activity.py +++ b/api/tests/federation/test_activity.py @@ -1,13 +1,13 @@ -import pytest import uuid +import pytest from django.db.models import Q from django.urls import reverse from funkwhale_api.federation import ( activity, - models, api_serializers, + models, serializers, tasks, ) diff --git a/api/tests/federation/test_api_filters.py b/api/tests/federation/test_api_filters.py index 4cbf4293a..fe41f6e6e 100644 --- a/api/tests/federation/test_api_filters.py +++ b/api/tests/federation/test_api_filters.py @@ -1,6 +1,4 @@ -from funkwhale_api.federation import fields -from funkwhale_api.federation import filters -from funkwhale_api.federation import models +from funkwhale_api.federation import fields, filters, models def test_inbox_item_filter_before(factories): diff --git a/api/tests/federation/test_api_serializers.py b/api/tests/federation/test_api_serializers.py index ebff4e4af..78d7a0640 100644 --- a/api/tests/federation/test_api_serializers.py +++ b/api/tests/federation/test_api_serializers.py @@ -1,8 +1,7 @@ import pytest from funkwhale_api.common import serializers as common_serializers -from funkwhale_api.federation import api_serializers -from funkwhale_api.federation import serializers +from funkwhale_api.federation import api_serializers, serializers from funkwhale_api.users import serializers as users_serializers diff --git a/api/tests/federation/test_api_views.py b/api/tests/federation/test_api_views.py index e0fcc6edf..3d61984c7 100644 --- a/api/tests/federation/test_api_views.py +++ b/api/tests/federation/test_api_views.py @@ -1,13 +1,9 @@ import datetime import pytest - from django.urls import reverse -from funkwhale_api.federation import api_serializers -from funkwhale_api.federation import serializers -from funkwhale_api.federation import tasks -from funkwhale_api.federation import views +from funkwhale_api.federation import api_serializers, serializers, tasks, views def test_user_can_list_their_library_follows(factories, logged_in_api_client): diff --git a/api/tests/federation/test_authentication.py b/api/tests/federation/test_authentication.py index 643bccccb..cc2ccf8cb 100644 --- a/api/tests/federation/test_authentication.py +++ b/api/tests/federation/test_authentication.py @@ -1,6 +1,6 @@ import pytest -from funkwhale_api.federation import authentication, exceptions, keys, jsonld +from funkwhale_api.federation import authentication, exceptions, jsonld, keys def test_authenticate(factories, mocker, api_request): diff --git a/api/tests/federation/test_decorators.py b/api/tests/federation/test_decorators.py index fa50f5674..478fedfc3 100644 --- a/api/tests/federation/test_decorators.py +++ b/api/tests/federation/test_decorators.py @@ -1,12 +1,8 @@ from rest_framework import viewsets +from funkwhale_api.federation import api_serializers, decorators, models, tasks from funkwhale_api.music import models as music_models -from funkwhale_api.federation import api_serializers -from funkwhale_api.federation import decorators -from funkwhale_api.federation import models -from funkwhale_api.federation import tasks - class V(viewsets.ModelViewSet): queryset = music_models.Track.objects.all() diff --git a/api/tests/federation/test_jsonld.py b/api/tests/federation/test_jsonld.py index 92253f921..8f65bbef8 100644 --- a/api/tests/federation/test_jsonld.py +++ b/api/tests/federation/test_jsonld.py @@ -1,9 +1,7 @@ import pytest - from rest_framework import serializers -from funkwhale_api.federation import contexts -from funkwhale_api.federation import jsonld +from funkwhale_api.federation import contexts, jsonld def test_expand_no_external_request(): diff --git a/api/tests/federation/test_serializers.py b/api/tests/federation/test_serializers.py index 17c2de773..4312e26f5 100644 --- a/api/tests/federation/test_serializers.py +++ b/api/tests/federation/test_serializers.py @@ -1,19 +1,21 @@ import io -import pytest import uuid +import pytest from django.core.paginator import Paginator from django.urls import reverse from django.utils import timezone from funkwhale_api.common import utils as common_utils -from funkwhale_api.federation import actors -from funkwhale_api.federation import contexts -from funkwhale_api.federation import keys -from funkwhale_api.federation import jsonld -from funkwhale_api.federation import models -from funkwhale_api.federation import serializers -from funkwhale_api.federation import utils +from funkwhale_api.federation import ( + actors, + contexts, + jsonld, + keys, + models, + serializers, + utils, +) from funkwhale_api.moderation import serializers as moderation_serializers from funkwhale_api.music import licenses diff --git a/api/tests/federation/test_signing.py b/api/tests/federation/test_signing.py index 298462142..41094f140 100644 --- a/api/tests/federation/test_signing.py +++ b/api/tests/federation/test_signing.py @@ -1,8 +1,9 @@ -import cryptography.exceptions import datetime -from django.utils.http import http_date -from django import forms + +import cryptography.exceptions import pytest +from django import forms +from django.utils.http import http_date from funkwhale_api.federation import keys, signing diff --git a/api/tests/federation/test_tasks.py b/api/tests/federation/test_tasks.py index f878b7ad3..5dacdcee9 100644 --- a/api/tests/federation/test_tasks.py +++ b/api/tests/federation/test_tasks.py @@ -1,15 +1,11 @@ import datetime import os import pathlib -import pytest +import pytest from django.utils import timezone -from funkwhale_api.federation import jsonld -from funkwhale_api.federation import models -from funkwhale_api.federation import serializers -from funkwhale_api.federation import tasks -from funkwhale_api.federation import utils +from funkwhale_api.federation import jsonld, models, serializers, tasks, utils def test_clean_federation_music_cache_if_no_listen(preferences, factories): diff --git a/api/tests/federation/test_third_party_activitypub.py b/api/tests/federation/test_third_party_activitypub.py index 66d109943..8841aac96 100644 --- a/api/tests/federation/test_third_party_activitypub.py +++ b/api/tests/federation/test_third_party_activitypub.py @@ -1,7 +1,6 @@ import pytest -from funkwhale_api.federation import routes -from funkwhale_api.federation import serializers +from funkwhale_api.federation import routes, serializers def test_pleroma_actor_from_ap_with_tags(factories): diff --git a/api/tests/federation/test_utils.py b/api/tests/federation/test_utils.py index ea3b43f51..ff52372fa 100644 --- a/api/tests/federation/test_utils.py +++ b/api/tests/federation/test_utils.py @@ -1,7 +1,6 @@ -from rest_framework import serializers import pytest - from django.core.exceptions import ObjectDoesNotExist +from rest_framework import serializers from funkwhale_api.federation import exceptions, utils diff --git a/api/tests/federation/test_views.py b/api/tests/federation/test_views.py index 01dc66326..e7cd736f4 100644 --- a/api/tests/federation/test_views.py +++ b/api/tests/federation/test_views.py @@ -3,13 +3,9 @@ from django.core.paginator import Paginator from django.urls import reverse from funkwhale_api.common import utils - -from funkwhale_api.federation import ( - actors, - serializers, - webfinger, - utils as federation_utils, -) +from funkwhale_api.federation import actors, serializers +from funkwhale_api.federation import utils as federation_utils +from funkwhale_api.federation import webfinger def test_authenticate_allows_anonymous_actor_fetch_when_allow_list_enabled( diff --git a/api/tests/history/test_filters.py b/api/tests/history/test_filters.py index 257d46bf0..482590ef3 100644 --- a/api/tests/history/test_filters.py +++ b/api/tests/history/test_filters.py @@ -1,5 +1,4 @@ -from funkwhale_api.history import filters -from funkwhale_api.history import models +from funkwhale_api.history import filters, models def test_listening_filter_track_artist(factories, mocker, queryset_equal_list): diff --git a/api/tests/history/test_views.py b/api/tests/history/test_views.py index 8ec927710..98ea0976a 100644 --- a/api/tests/history/test_views.py +++ b/api/tests/history/test_views.py @@ -1,5 +1,4 @@ import pytest - from django.urls import reverse diff --git a/api/tests/instance/test_nodeinfo.py b/api/tests/instance/test_nodeinfo.py index 2539a2361..bd5b2e6cd 100644 --- a/api/tests/instance/test_nodeinfo.py +++ b/api/tests/instance/test_nodeinfo.py @@ -1,9 +1,10 @@ +from collections import OrderedDict + from django.urls import reverse + from funkwhale_api import __version__ as api_version from funkwhale_api.music.utils import SUPPORTED_EXTENSIONS -from collections import OrderedDict - def test_nodeinfo_default(api_client): url = reverse("api:v1:instance:nodeinfo-2.0") diff --git a/api/tests/moderation/test_mrf_policies.py b/api/tests/moderation/test_mrf_policies.py index 877123e6b..3e19ab7c7 100644 --- a/api/tests/moderation/test_mrf_policies.py +++ b/api/tests/moderation/test_mrf_policies.py @@ -1,7 +1,6 @@ import pytest -from funkwhale_api.moderation import mrf -from funkwhale_api.moderation import mrf_policies +from funkwhale_api.moderation import mrf, mrf_policies @pytest.mark.parametrize( diff --git a/api/tests/moderation/test_preferences.py b/api/tests/moderation/test_preferences.py index 74c350001..99872a8d5 100644 --- a/api/tests/moderation/test_preferences.py +++ b/api/tests/moderation/test_preferences.py @@ -1,5 +1,4 @@ import pytest - from django.urls import reverse from funkwhale_api.common import preferences as common_preferences diff --git a/api/tests/moderation/test_serializers.py b/api/tests/moderation/test_serializers.py index 2763fc8b1..06a14781e 100644 --- a/api/tests/moderation/test_serializers.py +++ b/api/tests/moderation/test_serializers.py @@ -1,13 +1,12 @@ import json -import pytest import urllib.parse +import pytest from django.core.serializers.json import DjangoJSONEncoder from funkwhale_api.common import utils as common_utils from funkwhale_api.federation import models as federation_models -from funkwhale_api.moderation import serializers -from funkwhale_api.moderation import signals +from funkwhale_api.moderation import serializers, signals def test_user_filter_serializer_repr(factories): diff --git a/api/tests/moderation/test_tasks.py b/api/tests/moderation/test_tasks.py index 884d3b2f8..2f968c68b 100644 --- a/api/tests/moderation/test_tasks.py +++ b/api/tests/moderation/test_tasks.py @@ -1,5 +1,4 @@ from funkwhale_api.federation import utils as federation_utils - from funkwhale_api.moderation import tasks diff --git a/api/tests/music/test_activity.py b/api/tests/music/test_activity.py index f19936362..6cf060f42 100644 --- a/api/tests/music/test_activity.py +++ b/api/tests/music/test_activity.py @@ -1,5 +1,4 @@ -from funkwhale_api.music import serializers -from funkwhale_api.music import signals +from funkwhale_api.music import serializers, signals def test_get_track_activity_url_mbid(factories): diff --git a/api/tests/music/test_commands.py b/api/tests/music/test_commands.py index 329dcffb5..04e95d55f 100644 --- a/api/tests/music/test_commands.py +++ b/api/tests/music/test_commands.py @@ -1,10 +1,13 @@ import os + import pytest from funkwhale_api.common import utils as common_utils -from funkwhale_api.music.management.commands import check_inplace_files -from funkwhale_api.music.management.commands import fix_uploads -from funkwhale_api.music.management.commands import prune_library +from funkwhale_api.music.management.commands import ( + check_inplace_files, + fix_uploads, + prune_library, +) DATA_DIR = os.path.dirname(os.path.abspath(__file__)) diff --git a/api/tests/music/test_filters.py b/api/tests/music/test_filters.py index f078932a8..4879b6f38 100644 --- a/api/tests/music/test_filters.py +++ b/api/tests/music/test_filters.py @@ -1,7 +1,6 @@ import pytest -from funkwhale_api.music import filters -from funkwhale_api.music import models +from funkwhale_api.music import filters, models def test_album_filter_hidden(factories, mocker, queryset_equal_list): diff --git a/api/tests/music/test_import.py b/api/tests/music/test_import.py index 1c1e5fea5..1bda22077 100644 --- a/api/tests/music/test_import.py +++ b/api/tests/music/test_import.py @@ -1,11 +1,10 @@ import os -import pytest import uuid +import pytest from django import forms -from funkwhale_api.music import importers -from funkwhale_api.music import models +from funkwhale_api.music import importers, models DATA_DIR = os.path.dirname(os.path.abspath(__file__)) diff --git a/api/tests/music/test_licenses.py b/api/tests/music/test_licenses.py index 33a02fa30..731dd9e7a 100644 --- a/api/tests/music/test_licenses.py +++ b/api/tests/music/test_licenses.py @@ -1,9 +1,9 @@ import json import os + import pytest -from funkwhale_api.music import models -from funkwhale_api.music import licenses +from funkwhale_api.music import licenses, models @pytest.fixture diff --git a/api/tests/music/test_metadata.py b/api/tests/music/test_metadata.py index 061840456..fbf448d07 100644 --- a/api/tests/music/test_metadata.py +++ b/api/tests/music/test_metadata.py @@ -1,10 +1,10 @@ import datetime import os import uuid -import pytest import mutagen.oggtheora import mutagen.oggvorbis +import pytest from funkwhale_api.music import metadata diff --git a/api/tests/music/test_models.py b/api/tests/music/test_models.py index d8e3bb444..3ba04934b 100644 --- a/api/tests/music/test_models.py +++ b/api/tests/music/test_models.py @@ -1,13 +1,12 @@ import os import pytest - -from django.utils import timezone from django.urls import reverse +from django.utils import timezone from funkwhale_api.common import utils as common_utils -from funkwhale_api.music import importers, models, tasks from funkwhale_api.federation import utils as federation_utils +from funkwhale_api.music import importers, models, tasks DATA_DIR = os.path.dirname(os.path.abspath(__file__)) diff --git a/api/tests/music/test_mutations.py b/api/tests/music/test_mutations.py index 11e199706..8536e2a3f 100644 --- a/api/tests/music/test_mutations.py +++ b/api/tests/music/test_mutations.py @@ -1,10 +1,9 @@ import datetime + import pytest from funkwhale_api.common import serializers as common_serializers -from funkwhale_api.music import licenses -from funkwhale_api.music import mutations - +from funkwhale_api.music import licenses, mutations from funkwhale_api.tags import models as tags_models diff --git a/api/tests/music/test_serializers.py b/api/tests/music/test_serializers.py index 213167277..c5cc40464 100644 --- a/api/tests/music/test_serializers.py +++ b/api/tests/music/test_serializers.py @@ -1,12 +1,10 @@ -import pytest import uuid +import pytest + from funkwhale_api.common import serializers as common_serializers from funkwhale_api.federation import serializers as federation_serializers -from funkwhale_api.music import licenses -from funkwhale_api.music import models -from funkwhale_api.music import serializers -from funkwhale_api.music import tasks +from funkwhale_api.music import licenses, models, serializers, tasks def test_license_serializer(): diff --git a/api/tests/music/test_tasks.py b/api/tests/music/test_tasks.py index 78c55ce68..abe19c2f5 100644 --- a/api/tests/music/test_tasks.py +++ b/api/tests/music/test_tasks.py @@ -1,14 +1,14 @@ import datetime import os -import pytest import uuid +import pytest from django.core.paginator import Paginator from django.utils import timezone from funkwhale_api.common import utils as common_utils -from funkwhale_api.federation import serializers as federation_serializers from funkwhale_api.federation import jsonld +from funkwhale_api.federation import serializers as federation_serializers from funkwhale_api.federation import utils as federation_utils from funkwhale_api.music import licenses, metadata, models, signals, tasks diff --git a/api/tests/music/test_triggers.py b/api/tests/music/test_triggers.py index 62f9ae81e..8c679917c 100644 --- a/api/tests/music/test_triggers.py +++ b/api/tests/music/test_triggers.py @@ -1,5 +1,4 @@ import pytest - from django.db import connection diff --git a/api/tests/music/test_utils.py b/api/tests/music/test_utils.py index 0c477312d..95c364fc2 100644 --- a/api/tests/music/test_utils.py +++ b/api/tests/music/test_utils.py @@ -1,8 +1,9 @@ import os import pathlib -import pytest import tempfile +import pytest + from funkwhale_api.music import utils DATA_DIR = os.path.dirname(os.path.abspath(__file__)) diff --git a/api/tests/music/test_views.py b/api/tests/music/test_views.py index 3a069cb16..af0c0fdc7 100644 --- a/api/tests/music/test_views.py +++ b/api/tests/music/test_views.py @@ -1,11 +1,11 @@ import datetime import io -import magic import os import pathlib import urllib.parse import uuid +import magic import pytest from django.db.models import Prefetch from django.urls import reverse @@ -13,8 +13,8 @@ from django.utils import timezone from funkwhale_api.common import utils from funkwhale_api.federation import api_serializers as federation_api_serializers -from funkwhale_api.federation import utils as federation_utils from funkwhale_api.federation import tasks as federation_tasks +from funkwhale_api.federation import utils as federation_utils from funkwhale_api.music import licenses, models, serializers, tasks, views from funkwhale_api.users import authentication as users_authentication diff --git a/api/tests/playlists/test_filters.py b/api/tests/playlists/test_filters.py index ad6a7e2f6..dcf07604d 100644 --- a/api/tests/playlists/test_filters.py +++ b/api/tests/playlists/test_filters.py @@ -1,5 +1,4 @@ -from funkwhale_api.playlists import filters -from funkwhale_api.playlists import models +from funkwhale_api.playlists import filters, models def test_playlist_filter_track(factories, queryset_equal_list): diff --git a/api/tests/plugins/test_plugins.py b/api/tests/plugins/test_plugins.py index 1b63442bb..fb8713ae6 100644 --- a/api/tests/plugins/test_plugins.py +++ b/api/tests/plugins/test_plugins.py @@ -2,13 +2,11 @@ import os import sys import pytest - from django.urls import reverse - from rest_framework import serializers -from funkwhale_api.common import models from config import plugins +from funkwhale_api.common import models @pytest.fixture(autouse=True) diff --git a/api/tests/radios/test_api.py b/api/tests/radios/test_api.py index 5b0df2ea4..3b41dbc7e 100644 --- a/api/tests/radios/test_api.py +++ b/api/tests/radios/test_api.py @@ -1,5 +1,4 @@ import pytest - from django.urls import reverse from funkwhale_api.music.serializers import TrackSerializer diff --git a/api/tests/subsonic/test_renderers.py b/api/tests/subsonic/test_renderers.py index 435f206a0..551f5572c 100644 --- a/api/tests/subsonic/test_renderers.py +++ b/api/tests/subsonic/test_renderers.py @@ -1,9 +1,9 @@ import json -import pytest import xml.etree.ElementTree as ET -import funkwhale_api +import pytest +import funkwhale_api from funkwhale_api.subsonic import renderers diff --git a/api/tests/subsonic/test_serializers.py b/api/tests/subsonic/test_serializers.py index d6d9458f6..183599e53 100644 --- a/api/tests/subsonic/test_serializers.py +++ b/api/tests/subsonic/test_serializers.py @@ -1,7 +1,7 @@ import datetime -from django.db.models.aggregates import Count import pytest +from django.db.models.aggregates import Count from funkwhale_api.music import models as music_models from funkwhale_api.subsonic import serializers diff --git a/api/tests/tags/test_filters.py b/api/tests/tags/test_filters.py index 3b812f0fe..970350f56 100644 --- a/api/tests/tags/test_filters.py +++ b/api/tests/tags/test_filters.py @@ -1,5 +1,4 @@ -from funkwhale_api.tags import filters -from funkwhale_api.tags import models +from funkwhale_api.tags import filters, models def test_filter_search_tag(factories, queryset_equal_list): diff --git a/api/tests/users/oauth/test_api_permissions.py b/api/tests/users/oauth/test_api_permissions.py index 68b352f7e..21fd3075a 100644 --- a/api/tests/users/oauth/test_api_permissions.py +++ b/api/tests/users/oauth/test_api_permissions.py @@ -1,6 +1,6 @@ -import pytest import uuid +import pytest from django.urls import reverse from funkwhale_api.users.oauth import scopes diff --git a/api/tests/users/oauth/test_models.py b/api/tests/users/oauth/test_models.py index 1b27900ee..ddc4f6110 100644 --- a/api/tests/users/oauth/test_models.py +++ b/api/tests/users/oauth/test_models.py @@ -1,5 +1,4 @@ import pytest - from django import forms from funkwhale_api.users import models diff --git a/api/tests/users/oauth/test_permissions.py b/api/tests/users/oauth/test_permissions.py index c336e88ce..56260bf92 100644 --- a/api/tests/users/oauth/test_permissions.py +++ b/api/tests/users/oauth/test_permissions.py @@ -1,7 +1,6 @@ import pytest -from funkwhale_api.users.oauth import scopes -from funkwhale_api.users.oauth import permissions +from funkwhale_api.users.oauth import permissions, scopes @pytest.mark.parametrize( diff --git a/api/tests/users/oauth/test_tasks.py b/api/tests/users/oauth/test_tasks.py index c30f24883..b2c666acf 100644 --- a/api/tests/users/oauth/test_tasks.py +++ b/api/tests/users/oauth/test_tasks.py @@ -1,4 +1,5 @@ from oauth2_provider import models + from funkwhale_api.users.oauth import tasks diff --git a/api/tests/users/oauth/test_views.py b/api/tests/users/oauth/test_views.py index 99f6ef8fa..81a87e1ce 100644 --- a/api/tests/users/oauth/test_views.py +++ b/api/tests/users/oauth/test_views.py @@ -1,6 +1,6 @@ import json -import pytest +import pytest from django.urls import reverse from funkwhale_api.users import models diff --git a/api/tests/users/test_authentication.py b/api/tests/users/test_authentication.py index a6fcbefd4..51b5f9d02 100644 --- a/api/tests/users/test_authentication.py +++ b/api/tests/users/test_authentication.py @@ -1,5 +1,4 @@ import pytest - from django.core import signing from funkwhale_api.users import authentication diff --git a/api/tests/users/test_ldap.py b/api/tests/users/test_ldap.py index 1010d02c8..47bb9d4da 100644 --- a/api/tests/users/test_ldap.py +++ b/api/tests/users/test_ldap.py @@ -1,5 +1,4 @@ from django.contrib.auth import get_backends - from django_auth_ldap import backend diff --git a/api/tests/users/test_models.py b/api/tests/users/test_models.py index badb8e8f8..367b05b57 100644 --- a/api/tests/users/test_models.py +++ b/api/tests/users/test_models.py @@ -1,10 +1,10 @@ import datetime -import pytest +import pytest from django.urls import reverse -from funkwhale_api.users import models from funkwhale_api.federation import utils as federation_utils +from funkwhale_api.users import models def test__str__(factories): diff --git a/api/tests/users/test_views.py b/api/tests/users/test_views.py index 52b599187..432f371fb 100644 --- a/api/tests/users/test_views.py +++ b/api/tests/users/test_views.py @@ -1,7 +1,6 @@ import pytest -from django.urls import reverse - from django.test import Client +from django.urls import reverse from funkwhale_api.common import serializers as common_serializers from funkwhale_api.common import utils as common_utils diff --git a/api/tests/utils.py b/api/tests/utils.py index 868972aa4..bed666a67 100644 --- a/api/tests/utils.py +++ b/api/tests/utils.py @@ -1,4 +1,5 @@ import datetime + from rest_framework import fields as rest_fields diff --git a/docs/conf.py b/docs/conf.py index 16fae6ee3..1dfbff8f3 100755 --- a/docs/conf.py +++ b/docs/conf.py @@ -13,13 +13,14 @@ # All configuration values have a default; values that are commented out # serve to show the default. +import datetime + # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # import os import sys -import datetime sys.path.insert(0, os.path.abspath("../api")) sys.path.insert(0, os.path.abspath("../api/config")) diff --git a/docs/get-releases-json.py b/docs/get-releases-json.py index 4fbfb1de8..773106051 100755 --- a/docs/get-releases-json.py +++ b/docs/get-releases-json.py @@ -3,7 +3,6 @@ import argparse import json import subprocess - from distutils.version import StrictVersion diff --git a/front/scripts/contextualize.py b/front/scripts/contextualize.py index e3e08c076..af1640299 100755 --- a/front/scripts/contextualize.py +++ b/front/scripts/contextualize.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import argparse + import polib diff --git a/front/scripts/print-duplicates-source.py b/front/scripts/print-duplicates-source.py index f28b3a1a7..036187ba8 100755 --- a/front/scripts/print-duplicates-source.py +++ b/front/scripts/print-duplicates-source.py @@ -2,6 +2,7 @@ import argparse import collections + import polib diff --git a/scripts/get-contributions-stats.py b/scripts/get-contributions-stats.py index 376244d2f..4f6324645 100755 --- a/scripts/get-contributions-stats.py +++ b/scripts/get-contributions-stats.py @@ -1,9 +1,10 @@ #!/usr/bin/env python3 import argparse -import requests import os +import requests + GITLAB_URL = "https://dev.funkwhale.audio" GITLAB_PROJECT_ID = 17 WEBLATE_URL = "https://translate.funkwhale.audio"