blueprints: fix check for file path not being run on worker (#5703)

This commit is contained in:
Jens L 2023-05-21 15:29:55 +02:00 committed by Jens Langhammer
parent 8029a13be1
commit 2cd68dfa87
No known key found for this signature in database

View file

@ -11,7 +11,7 @@ from rest_framework.serializers import ListSerializer, ModelSerializer
from rest_framework.viewsets import ModelViewSet from rest_framework.viewsets import ModelViewSet
from authentik.api.decorators import permission_required from authentik.api.decorators import permission_required
from authentik.blueprints.models import BlueprintInstance, BlueprintRetrievalFailed from authentik.blueprints.models import BlueprintInstance
from authentik.blueprints.v1.importer import Importer from authentik.blueprints.v1.importer import Importer
from authentik.blueprints.v1.tasks import apply_blueprint, blueprints_find_dict from authentik.blueprints.v1.tasks import apply_blueprint, blueprints_find_dict
from authentik.core.api.used_by import UsedByMixin from authentik.core.api.used_by import UsedByMixin
@ -35,11 +35,12 @@ class BlueprintInstanceSerializer(ModelSerializer):
"""Info about a single blueprint instance file""" """Info about a single blueprint instance file"""
def validate_path(self, path: str) -> str: def validate_path(self, path: str) -> str:
"""Ensure the path specified is retrievable""" """Ensure the path (if set) specified is retrievable"""
try: if path == "":
BlueprintInstance(path=path).retrieve() return path
except BlueprintRetrievalFailed as exc: files: list[dict] = blueprints_find_dict.delay().get()
raise ValidationError(exc) from exc if path not in [file["path"] for file in files]:
raise ValidationError(_("Blueprint file does not exist"))
return path return path
def validate_content(self, content: str) -> str: def validate_content(self, content: str) -> str: