diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-09-04 20:05:24 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-09-04 20:05:24 +0200 | 
| commit | 1f16014274a2ad16fcd635fc9b506ef429a33677 (patch) | |
| tree | d7e4c7b4121f09210b398aa4d6bc3830e6e1858e /ishtar_common/views.py | |
| parent | 4aa9cda8b8bd1c9f51e467541a97d30669130243 (diff) | |
| download | Ishtar-1f16014274a2ad16fcd635fc9b506ef429a33677.tar.bz2 Ishtar-1f16014274a2ad16fcd635fc9b506ef429a33677.zip | |
Improve Image field management (refs #1365)
* add a custom widget to allow display via prettyPhoto on forms
* disable resizing when the image is deleted
* fix "has image" search request to manage empty and null field for images
* fix deletion of files by the wizard
* fix initialization of instancied form for files and images
Diffstat (limited to 'ishtar_common/views.py')
| -rw-r--r-- | ishtar_common/views.py | 26 | 
1 files changed, 19 insertions, 7 deletions
| diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 3ebb20569..cf93ba2a4 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -36,7 +36,7 @@ from django.contrib.auth import logout  from django.core import serializers  from django.core.exceptions import ObjectDoesNotExist  from django.core.urlresolvers import reverse, NoReverseMatch -from django.db.models import Q +from django.db.models import Q, ImageField  from django.http import HttpResponse, Http404  from django.shortcuts import render_to_response, redirect  from django.template import RequestContext, loader @@ -191,6 +191,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],          request_keys.update(extra_request_keys)          request_items = request.method == 'POST' and request.POST or request.GET          dct = base_request.copy() +        and_reqs, or_reqs = [], []          try:              old = 'old' in request_items and int(request_items['old'])          except ValueError: @@ -216,6 +217,14 @@ def get_item(model, func_name, default_name, extra_request_keys=[],                      dct[k] = dct[k] == u"2" and True or False                      if k in reversed_bool_fields:                          dct[k] = not dct[k] +                    # check also for empty value with image field +                    c_field = model._meta.get_field(k.split('__')[0]) +                    if k.endswith('__isnull') and \ +                       isinstance(c_field, ImageField): +                        if dct[k]: +                            or_reqs.append((k, {k.split('__')[0]+'__exact':''})) +                        else: +                            dct[k.split('__')[0]+'__regex'] = '.{1}.*'          for k in dated_fields:              if k in dct:                  if not dct[k]: @@ -229,7 +238,6 @@ def get_item(model, func_name, default_name, extra_request_keys=[],                  except AssertionError:                      dct.pop(k)          # manage hierarchic conditions -        or_reqs = []          for req in dct.copy():              for k_hr in HIERARCHIC_FIELDS:                  if type(req) in (list, tuple): @@ -240,7 +248,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],                              q = Q(**{r:val})                          else:                              q = q | Q(**{r:val}) -                    or_reqs.append(q) +                    and_reqs.append(q)                      break                  elif req.endswith(k_hr + '__pk'):                      val = dct.pop(req) @@ -250,11 +258,16 @@ def get_item(model, func_name, default_name, extra_request_keys=[],                          req = req[:-2] + 'parent__pk'                          q = Q(**{req:val})                          reqs = reqs | q -                    or_reqs.append(reqs) +                    and_reqs.append(reqs)                      break          query = Q(**dct) -        for or_req in or_reqs: -            query = query & or_req +        for k, or_req in or_reqs: +            alt_dct = dct.copy() +            alt_dct.pop(k) +            alt_dct.update(or_req) +            query = query | Q(**alt_dct) +        for and_req in and_reqs: +            query = query & and_req          items = model.objects.filter(query).distinct()          q = request_items.get('sidx') @@ -571,7 +584,6 @@ def action(request, action_slug, obj_id=None, *args, **kwargs):      associated_wizard = action_slug + '_wizard'      dct = {}      globals_dct = globals() -    print action_slug      if action_slug in globals_dct:          return globals_dct[action_slug](request, dct, obj_id, *args, **kwargs)      elif hasattr(ishtar_forms, action_slug + "_wizard"): | 
