diff --git a/netbox/extras/lookups.py b/netbox/extras/lookups.py index 7197efcfc..706a01119 100644 --- a/netbox/extras/lookups.py +++ b/netbox/extras/lookups.py @@ -1,3 +1,4 @@ +from distutils.util import strtobool from django.db.models import CharField, Lookup @@ -7,11 +8,21 @@ class Empty(Lookup): """ lookup_name = 'empty' + def convert_parm_to_bool(self, param): + try: + ret = str(strtobool(param)) + except ValueError: + ret = "false" + + return ret + def as_sql(self, qn, connection): lhs, lhs_params = self.process_lhs(qn, connection) rhs, rhs_params = self.process_rhs(qn, connection) + rhs_params = [str(self.convert_parm_to_bool(param)) for param in rhs_params] params = lhs_params + rhs_params - return 'CAST(LENGTH(%s) AS BOOLEAN) != %s' % (lhs, rhs), params + s = f'CAST(LENGTH({lhs}) AS BOOLEAN) != {rhs}' + return (s, params) CharField.register_lookup(Empty)