mirror of
https://github.com/ansible/awx.git
synced 2026-01-18 05:01:19 -03:30
400 on invalid host filter query instead of 500
This commit is contained in:
parent
1a2cbaf5e1
commit
bd1f8b088f
@ -1710,6 +1710,13 @@ class HostList(ListCreateAPIView):
|
||||
qs = qs.filter(filter_q)
|
||||
return qs
|
||||
|
||||
def list(self, *args, **kwargs):
|
||||
try:
|
||||
queryset = self.get_queryset()
|
||||
except Exception as e:
|
||||
return Response(dict(error=_(unicode(e))), status=status.HTTP_400_BAD_REQUEST)
|
||||
return Response(dict(results=self.serializer_class(queryset, many=True).data))
|
||||
|
||||
|
||||
class HostDetail(RetrieveUpdateDestroyAPIView):
|
||||
|
||||
|
||||
@ -488,13 +488,8 @@ class DynamicFilterField(models.TextField):
|
||||
* handle keys with " via: a.\"b.c="yeah"
|
||||
* handle key with __ in it
|
||||
|
||||
* add not support
|
||||
|
||||
* transform [] into contains via: a.b.c[].d[].e.f[]="blah"
|
||||
|
||||
* handle optional value quoted: a.b.c=""
|
||||
|
||||
'''
|
||||
filter_string_raw = filter_string
|
||||
filter_string = unicode(filter_string)
|
||||
|
||||
atom = CharsNotIn(unicode_spaces_other)
|
||||
@ -511,7 +506,11 @@ class DynamicFilterField(models.TextField):
|
||||
("or", 2, opAssoc.LEFT, cls.BoolOr),
|
||||
])
|
||||
|
||||
res = boolExpr.parseString('(' + filter_string + ')')
|
||||
try:
|
||||
res = boolExpr.parseString('(' + filter_string + ')')
|
||||
except:
|
||||
raise RuntimeError(u"Invalid query %s" % filter_string_raw)
|
||||
|
||||
if len(res) > 0:
|
||||
return res[0].result
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user