authentik.enterprise.search.schema

 1from djangoql.serializers import DjangoQLSchemaSerializer
 2from drf_spectacular.generators import SchemaGenerator
 3
 4from authentik.enterprise.search.fields import JSONSearchField
 5from authentik.enterprise.search.ql import AUTOCOMPLETE_SCHEMA
 6
 7
 8class AKQLSchemaSerializer(DjangoQLSchemaSerializer):
 9    def serialize(self, schema):
10        serialization = super().serialize(schema)
11        for _, fields in schema.models.items():
12            for _, field in fields.items():
13                if not isinstance(field, JSONSearchField):
14                    continue
15                serialization["models"].update(field.get_nested_options(self))
16        return serialization
17
18    def serialize_field(self, field):
19        result = super().serialize_field(field)
20        if isinstance(field, JSONSearchField):
21            result["relation"] = field.relation()
22        return result
23
24
25def postprocess_schema_search_autocomplete(result, generator: SchemaGenerator, **kwargs):
26    generator.registry.register_on_missing(AUTOCOMPLETE_SCHEMA)
27
28    return result
class AKQLSchemaSerializer(djangoql.serializers.DjangoQLSchemaSerializer):
 9class AKQLSchemaSerializer(DjangoQLSchemaSerializer):
10    def serialize(self, schema):
11        serialization = super().serialize(schema)
12        for _, fields in schema.models.items():
13            for _, field in fields.items():
14                if not isinstance(field, JSONSearchField):
15                    continue
16                serialization["models"].update(field.get_nested_options(self))
17        return serialization
18
19    def serialize_field(self, field):
20        result = super().serialize_field(field)
21        if isinstance(field, JSONSearchField):
22            result["relation"] = field.relation()
23        return result
def serialize(self, schema):
10    def serialize(self, schema):
11        serialization = super().serialize(schema)
12        for _, fields in schema.models.items():
13            for _, field in fields.items():
14                if not isinstance(field, JSONSearchField):
15                    continue
16                serialization["models"].update(field.get_nested_options(self))
17        return serialization
def serialize_field(self, field):
19    def serialize_field(self, field):
20        result = super().serialize_field(field)
21        if isinstance(field, JSONSearchField):
22            result["relation"] = field.relation()
23        return result
def postprocess_schema_search_autocomplete( result, generator: drf_spectacular.generators.SchemaGenerator, **kwargs):
26def postprocess_schema_search_autocomplete(result, generator: SchemaGenerator, **kwargs):
27    generator.registry.register_on_missing(AUTOCOMPLETE_SCHEMA)
28
29    return result