summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2020-03-11 11:40:00 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2020-03-11 11:40:00 +0100
commitc4f67d1b3a551ffe1cdf6f1982e551bd32c26ff7 (patch)
treef8b79924b3e7729f834c030d63e32d24f88b505f
parent0b47ccd2149ae923536d4d8a012af72c2b17c520 (diff)
downloadIshtar-c4f67d1b3a551ffe1cdf6f1982e551bd32c26ff7.tar.bz2
Ishtar-c4f67d1b3a551ffe1cdf6f1982e551bd32c26ff7.zip
Fix: include generic FileField in boolean search - empty string for FileField with multiple query level
-rw-r--r--ishtar_common/views_item.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index 431135e37..ba9a41f3d 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -20,7 +20,7 @@ from django.core.cache import cache
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse, NoReverseMatch
from django.db.models import Q, Count, Sum, ImageField, Func, \
- ExpressionWrapper, FloatField
+ ExpressionWrapper, FloatField, FileField
from django.db.models.fields import FieldDoesNotExist
from django.http import HttpResponse
from django.shortcuts import render
@@ -654,17 +654,22 @@ def _manage_bool_fields(model, bool_fields, reversed_bool_fields, dct, or_reqs):
if k in reversed_bool_fields:
dct[k] = not dct[k]
# check also for empty value with image field
- field_name = k.split('__')[0]
+ field_names = k.split('__')
# TODO: can be improved in later version of Django
try:
- c_field = model._meta.get_field(field_name)
+ c_field = model._meta.get_field(field_names[0])
+ for field_name in field_names[1:-1]:
+ if not hasattr(c_field, "related_model"):
+ return
+ c_field = c_field.related_model._meta.get_field(field_name)
if k.endswith('__isnull') and \
- isinstance(c_field, ImageField):
+ isinstance(c_field, (ImageField, FileField)):
+ key = "__".join(k.split('__')[:-1])
if dct[k]:
or_reqs.append(
- (k, {k.split('__')[0] + '__exact': ''}))
+ (k, {key + '__exact': ''}))
else:
- dct[k.split('__')[0] + '__regex'] = '.{1}.*'
+ dct[key + '__regex'] = '.{1}.*'
except FieldDoesNotExist:
pass