from drf_spectacular.extensions import OpenApiAuthenticationExtension from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import OpenApiParameter from drf_spectacular.utils import extend_schema class AngularApiAuthenticationOverrideScheme(OpenApiAuthenticationExtension): target_class = "paperless.auth.AngularApiAuthenticationOverride" name = "AngularApiAuthenticationOverride" def get_security_definition(self, auto_schema): # pragma: no cover return { "type": "http", "scheme": "basic", } class PaperelessBasicAuthenticationScheme(OpenApiAuthenticationExtension): target_class = "paperless.auth.PaperlessBasicAuthentication" name = "PaperelessBasicAuthentication" def get_security_definition(self, auto_schema): return { "type": "http", "scheme": "basic", } def generate_object_with_permissions_schema(serializer_class): return { operation: extend_schema( parameters=[ OpenApiParameter( name="full_perms", type=OpenApiTypes.BOOL, location=OpenApiParameter.QUERY, ), ], responses={ 200: serializer_class(many=operation == "list", all_fields=True), }, ) for operation in ["list", "retrieve"] }