From 1d1f5cfbb65dd00068c1be33de226e663508cc78 Mon Sep 17 00:00:00 2001 From: Laurent Bossavit Date: Fri, 25 Oct 2024 14:59:02 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A8(linter)=20add=20missing=20docstrin?= =?UTF-8?q?gs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Title says all there is to say… --- src/backend/__init__.py | 1 + src/backend/core/__init__.py | 1 + src/backend/core/admin.py | 3 ++- src/backend/core/api/permissions.py | 4 ++-- src/backend/core/api/serializers.py | 2 ++ src/backend/core/api/viewsets.py | 1 + src/backend/core/authentication/__init__.py | 1 + src/backend/core/resource_server/__init__.py | 1 + src/backend/core/resource_server/authentication.py | 3 ++- src/backend/core/resource_server/backend.py | 1 + src/backend/core/resource_server/clients.py | 2 ++ src/backend/core/templatetags/__init__.py | 1 + src/backend/core/tests/__init__.py | 1 + src/backend/core/tests/authentication/__init__.py | 1 + src/backend/core/tests/resource_server/__init__.py | 1 + src/backend/core/tests/swagger/__init__.py | 1 + src/backend/core/utils/__init__.py | 1 + src/backend/debug/views.py | 1 + src/backend/demo/__init__.py | 1 + src/backend/demo/management/__init__.py | 1 + src/backend/demo/management/commands/__init__.py | 1 + src/backend/demo/tests/__init__.py | 1 + src/backend/mailbox_manager/__init__.py | 1 + src/backend/mailbox_manager/api/__init__.py | 1 + src/backend/mailbox_manager/api/permissions.py | 1 + src/backend/mailbox_manager/api/viewsets.py | 2 ++ src/backend/mailbox_manager/management/__init__.py | 1 + src/backend/mailbox_manager/management/commands/__init__.py | 1 + src/backend/mailbox_manager/tests/__init__.py | 1 + src/backend/mailbox_manager/utils/__init__.py | 1 + src/backend/people/__init__.py | 1 + src/backend/people/settings.py | 1 + 32 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/backend/__init__.py b/src/backend/__init__.py index e69de29..639ca8e 100644 --- a/src/backend/__init__.py +++ b/src/backend/__init__.py @@ -0,0 +1 @@ +"""Root module.""" diff --git a/src/backend/core/__init__.py b/src/backend/core/__init__.py index e69de29..9eb442a 100644 --- a/src/backend/core/__init__.py +++ b/src/backend/core/__init__.py @@ -0,0 +1 @@ +"""Core root module.""" diff --git a/src/backend/core/admin.py b/src/backend/core/admin.py index 4c2b758..7e6290e 100644 --- a/src/backend/core/admin.py +++ b/src/backend/core/admin.py @@ -148,8 +148,8 @@ class InvitationAdmin(admin.ModelAdmin): ) def get_readonly_fields(self, request, obj=None): + """Mark all fields read only, i.e. disable update.""" if obj: - # all fields read only = disable update return self.fields return self.readonly_fields @@ -162,5 +162,6 @@ class InvitationAdmin(admin.ModelAdmin): return super().change_view(request, object_id, extra_context=extra_context) def save_model(self, request, obj, form, change): + """Fill in current logged-in user as issuer.""" obj.issuer = request.user obj.save() diff --git a/src/backend/core/api/permissions.py b/src/backend/core/api/permissions.py index 09f5fdb..30d3731 100644 --- a/src/backend/core/api/permissions.py +++ b/src/backend/core/api/permissions.py @@ -12,13 +12,13 @@ class IsAuthenticated(permissions.BasePermission): """ def has_permission(self, request, view): + """Check auth token first.""" return bool(request.auth) if request.auth else request.user.is_authenticated class IsSelf(IsAuthenticated): """ - Allows access only to authenticated users. Alternative method checking the presence - of the auth token to avoid hitting the database. + Allows access only to user's own data. """ def has_object_permission(self, request, view, obj): diff --git a/src/backend/core/api/serializers.py b/src/backend/core/api/serializers.py index 5a49344..a6d750b 100644 --- a/src/backend/core/api/serializers.py +++ b/src/backend/core/api/serializers.py @@ -34,6 +34,8 @@ class DynamicFieldsModelSerializer(serializers.ModelSerializer): """ def __init__(self, *args, **kwargs): + """Pass arguments to superclass except 'fields', then drop fields not listed therein.""" + # Don't pass the 'fields' arg up to the superclass fields = kwargs.pop("fields", None) diff --git a/src/backend/core/api/viewsets.py b/src/backend/core/api/viewsets.py index b0d556c..cf8fa2a 100644 --- a/src/backend/core/api/viewsets.py +++ b/src/backend/core/api/viewsets.py @@ -340,6 +340,7 @@ class TeamAccessViewSet( return context def get_serializer_class(self): + """Chooses list or detail serializer according to the action.""" if self.action in {"list", "retrieve"}: return self.list_serializer_class return self.detail_serializer_class diff --git a/src/backend/core/authentication/__init__.py b/src/backend/core/authentication/__init__.py index e69de29..7db5be4 100644 --- a/src/backend/core/authentication/__init__.py +++ b/src/backend/core/authentication/__init__.py @@ -0,0 +1 @@ +"""Authentication module.""" diff --git a/src/backend/core/resource_server/__init__.py b/src/backend/core/resource_server/__init__.py index e69de29..7cc02e3 100644 --- a/src/backend/core/resource_server/__init__.py +++ b/src/backend/core/resource_server/__init__.py @@ -0,0 +1 @@ +"""Backend resource server module.""" diff --git a/src/backend/core/resource_server/authentication.py b/src/backend/core/resource_server/authentication.py index aaac211..1455214 100644 --- a/src/backend/core/resource_server/authentication.py +++ b/src/backend/core/resource_server/authentication.py @@ -19,6 +19,7 @@ class ResourceServerAuthentication(OIDCAuthentication): """Authenticate clients using the token received from the authorization server.""" def __init__(self): + """Require authentication to be configured in order to instantiate.""" super().__init__() try: @@ -40,7 +41,7 @@ class ResourceServerAuthentication(OIDCAuthentication): def get_access_token(self, request): """Retrieve and decode the access token from the request. - This method overcharges the 'get_access_token' method from the parent class, + This method overrides the 'get_access_token' method from the parent class, to support service providers that would base64 encode the bearer token. """ diff --git a/src/backend/core/resource_server/backend.py b/src/backend/core/resource_server/backend.py index 87dbbc4..b7ce773 100644 --- a/src/backend/core/resource_server/backend.py +++ b/src/backend/core/resource_server/backend.py @@ -33,6 +33,7 @@ class ResourceServerBackend: # pylint: disable=too-many-instance-attributes def __init__(self, authorization_server_client): + """Require client_id, client_secret set and authorization_server_client provided.""" # pylint: disable=invalid-name self.UserModel = auth.get_user_model() diff --git a/src/backend/core/resource_server/clients.py b/src/backend/core/resource_server/clients.py index baa6c78..f2ca5aa 100644 --- a/src/backend/core/resource_server/clients.py +++ b/src/backend/core/resource_server/clients.py @@ -31,6 +31,8 @@ class AuthorizationServerClient: timeout, proxy, ): + """Require at a minimum url, url_jwks and url_introspection.""" + if not url or not url_jwks or not url_introspection: raise ImproperlyConfigured( "Could not instantiate AuthorizationServerClient, some parameters are missing." diff --git a/src/backend/core/templatetags/__init__.py b/src/backend/core/templatetags/__init__.py index e69de29..b0f0792 100644 --- a/src/backend/core/templatetags/__init__.py +++ b/src/backend/core/templatetags/__init__.py @@ -0,0 +1 @@ +"""Core template tags module.""" diff --git a/src/backend/core/tests/__init__.py b/src/backend/core/tests/__init__.py index e69de29..67ad1ef 100644 --- a/src/backend/core/tests/__init__.py +++ b/src/backend/core/tests/__init__.py @@ -0,0 +1 @@ +"""Core tests.""" diff --git a/src/backend/core/tests/authentication/__init__.py b/src/backend/core/tests/authentication/__init__.py index e69de29..576fb91 100644 --- a/src/backend/core/tests/authentication/__init__.py +++ b/src/backend/core/tests/authentication/__init__.py @@ -0,0 +1 @@ +"""Core authentication tests.""" diff --git a/src/backend/core/tests/resource_server/__init__.py b/src/backend/core/tests/resource_server/__init__.py index e69de29..9d0a5b0 100644 --- a/src/backend/core/tests/resource_server/__init__.py +++ b/src/backend/core/tests/resource_server/__init__.py @@ -0,0 +1 @@ +"""Core resource server tests.""" diff --git a/src/backend/core/tests/swagger/__init__.py b/src/backend/core/tests/swagger/__init__.py index e69de29..5d8dd9c 100644 --- a/src/backend/core/tests/swagger/__init__.py +++ b/src/backend/core/tests/swagger/__init__.py @@ -0,0 +1 @@ +"""Core Swagger tests.""" diff --git a/src/backend/core/utils/__init__.py b/src/backend/core/utils/__init__.py index e69de29..f5e54fc 100644 --- a/src/backend/core/utils/__init__.py +++ b/src/backend/core/utils/__init__.py @@ -0,0 +1 @@ +"""Core utils module.""" diff --git a/src/backend/debug/views.py b/src/backend/debug/views.py index 4ce629c..3904e7f 100644 --- a/src/backend/debug/views.py +++ b/src/backend/debug/views.py @@ -33,6 +33,7 @@ class DebugViewNewMailboxHtml(DebugBaseView): template_name = "mail/html/new_mailbox.html" def get_context_data(self, **kwargs): + """Hardcode user credentials for debug setting.""" context = super().get_context_data(**kwargs) context["mailbox_data"] = { "email": "john.doe@example.com", diff --git a/src/backend/demo/__init__.py b/src/backend/demo/__init__.py index e69de29..40c9117 100644 --- a/src/backend/demo/__init__.py +++ b/src/backend/demo/__init__.py @@ -0,0 +1 @@ +"""Demo module.""" diff --git a/src/backend/demo/management/__init__.py b/src/backend/demo/management/__init__.py index e69de29..4794a8a 100644 --- a/src/backend/demo/management/__init__.py +++ b/src/backend/demo/management/__init__.py @@ -0,0 +1 @@ +"""Demo management module.""" diff --git a/src/backend/demo/management/commands/__init__.py b/src/backend/demo/management/commands/__init__.py index e69de29..891ad79 100644 --- a/src/backend/demo/management/commands/__init__.py +++ b/src/backend/demo/management/commands/__init__.py @@ -0,0 +1 @@ +"Demo management commands module." diff --git a/src/backend/demo/tests/__init__.py b/src/backend/demo/tests/__init__.py index e69de29..bad6161 100644 --- a/src/backend/demo/tests/__init__.py +++ b/src/backend/demo/tests/__init__.py @@ -0,0 +1 @@ +"""Demo tests.""" diff --git a/src/backend/mailbox_manager/__init__.py b/src/backend/mailbox_manager/__init__.py index e69de29..8419d5d 100644 --- a/src/backend/mailbox_manager/__init__.py +++ b/src/backend/mailbox_manager/__init__.py @@ -0,0 +1 @@ +"""Mailbox manager module.""" diff --git a/src/backend/mailbox_manager/api/__init__.py b/src/backend/mailbox_manager/api/__init__.py index e69de29..c45f64f 100644 --- a/src/backend/mailbox_manager/api/__init__.py +++ b/src/backend/mailbox_manager/api/__init__.py @@ -0,0 +1 @@ +"""Mailbox manager API module.""" diff --git a/src/backend/mailbox_manager/api/permissions.py b/src/backend/mailbox_manager/api/permissions.py index b5c1c9d..2ed97f4 100644 --- a/src/backend/mailbox_manager/api/permissions.py +++ b/src/backend/mailbox_manager/api/permissions.py @@ -18,6 +18,7 @@ class MailBoxPermission(core_permissions.IsAuthenticated): """Permission class to manage mailboxes for a mail domain""" def has_permission(self, request, view): + """Check permission based on domain.""" domain = models.MailDomain.objects.get(slug=view.kwargs.get("domain_slug", "")) abilities = domain.get_abilities(request.user) return abilities.get(request.method.lower(), False) diff --git a/src/backend/mailbox_manager/api/viewsets.py b/src/backend/mailbox_manager/api/viewsets.py index c0e8a89..3756f16 100644 --- a/src/backend/mailbox_manager/api/viewsets.py +++ b/src/backend/mailbox_manager/api/viewsets.py @@ -40,6 +40,7 @@ class MailDomainViewSet( queryset = models.MailDomain.objects.all() def get_queryset(self): + """Restrict results to the current user's team.""" return self.queryset.filter(accesses__user=self.request.user) def perform_create(self, serializer): @@ -100,6 +101,7 @@ class MailDomainAccessViewSet( detail_serializer_class = serializers.MailDomainAccessSerializer def get_serializer_class(self): + """Chooses list or detail serializer according to the action.""" if self.action in {"list", "retrieve"}: return self.list_serializer_class return self.detail_serializer_class diff --git a/src/backend/mailbox_manager/management/__init__.py b/src/backend/mailbox_manager/management/__init__.py index e69de29..94adee9 100644 --- a/src/backend/mailbox_manager/management/__init__.py +++ b/src/backend/mailbox_manager/management/__init__.py @@ -0,0 +1 @@ +"Mailbox manager management module." diff --git a/src/backend/mailbox_manager/management/commands/__init__.py b/src/backend/mailbox_manager/management/commands/__init__.py index e69de29..0bdcde4 100644 --- a/src/backend/mailbox_manager/management/commands/__init__.py +++ b/src/backend/mailbox_manager/management/commands/__init__.py @@ -0,0 +1 @@ +"""Mailbox manager management commands module.""" diff --git a/src/backend/mailbox_manager/tests/__init__.py b/src/backend/mailbox_manager/tests/__init__.py index e69de29..20c42a7 100644 --- a/src/backend/mailbox_manager/tests/__init__.py +++ b/src/backend/mailbox_manager/tests/__init__.py @@ -0,0 +1 @@ +"""Mailbox manager tests.""" diff --git a/src/backend/mailbox_manager/utils/__init__.py b/src/backend/mailbox_manager/utils/__init__.py index e69de29..ece6eeb 100644 --- a/src/backend/mailbox_manager/utils/__init__.py +++ b/src/backend/mailbox_manager/utils/__init__.py @@ -0,0 +1 @@ +"""Mailbox manager utils.""" diff --git a/src/backend/people/__init__.py b/src/backend/people/__init__.py index e69de29..467db8f 100644 --- a/src/backend/people/__init__.py +++ b/src/backend/people/__init__.py @@ -0,0 +1 @@ +"""People module.""" diff --git a/src/backend/people/settings.py b/src/backend/people/settings.py index 4f719cb..45d7dfc 100755 --- a/src/backend/people/settings.py +++ b/src/backend/people/settings.py @@ -555,6 +555,7 @@ class Development(Base): ) def __init__(self): + """In dev, force installs needed for Swagger API.""" # pylint: disable=invalid-name self.INSTALLED_APPS += ["django_extensions", "drf_spectacular_sidecar"]