Skip to content

Commit f396b66

Browse files
committed
test
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
1 parent cf19321 commit f396b66

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

authentik/api/search.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,26 @@ def get_lookup(self, path, operator, value):
3737
def get_nested_options(self):
3838
"""Get keys of all nested objects to show autocomplete"""
3939
keys = (
40-
self.model.objects.annotate(
41-
keys=models.Func(models.F(self.name), function="jsonb_object_keys")
40+
# self.model.objects.annotate(
41+
# keys=models.Func(models.F("user"), function="jsonb_object_keys"),
42+
# values=models.Func(models.Expression(), function="jsonb_each"),
43+
# )
44+
# .values("keys")
45+
# .distinct("keys")
46+
# .order_by("keys")
47+
# .values_list("keys", flat=True)
48+
self.model.objects.raw(
49+
'SELECT event_uuid, key, context->key AS value FROM authentik_events_event, jsonb_object_keys("context") as key;'
4250
)
43-
.values("keys")
44-
.distinct("keys")
45-
.order_by("keys")
46-
.values_list("keys", flat=True)
4751
)
48-
return list(keys)
52+
fields = {}
53+
for evt in keys:
54+
fields[evt.key] = {
55+
"type": "str",
56+
"nullable": False,
57+
"options": evt.value,
58+
}
59+
return fields
4960

5061
def relation(self) -> str:
5162
return f"{self.model._meta.app_label}.{self.model._meta.model_name}_{self.name}"
@@ -96,14 +107,10 @@ def serialize(self, schema):
96107
if not isinstance(field, JSONSearchField):
97108
continue
98109
nested_model = OrderedDict()
99-
for nested_field in field.get_nested_options():
110+
for nested_field_name, nested_field in field.get_nested_options().items():
100111
# Can't generate a temporary StrField instance here as that requires a
101112
# model, and we're only pretending there's a model
102-
nested_model[nested_field] = {
103-
"type": "str",
104-
"nullable": True,
105-
"options": [],
106-
}
113+
nested_model[nested_field_name] = nested_field
107114
serialization["models"][field.relation()] = nested_model
108115
return serialization
109116

0 commit comments

Comments
 (0)