Skip to content

Commit

Permalink
Added automatic preparation of lookups.
Browse files Browse the repository at this point in the history
  • Loading branch information
versae committed Nov 7, 2010
1 parent fb0ed0d commit f52f076
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions django_qbe/forms.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from django import forms
from django.db import connection
from django.db.models.fields import Field
from django.core.urlresolvers import reverse
from django.conf import settings
from django.forms.formsets import BaseFormSet, formset_factory
Expand Down Expand Up @@ -135,7 +136,8 @@ def get_query_parts(self):
elif operator in OPERATORS:
# db_operator = OPERATORS[operator] % over
db_operator = OPERATORS[operator]
params.append(over)
lookup = self._get_lookup(operator, over)
params.append(lookup)
wheres.append(u"%s %s" % (db_field, db_operator))
if model not in froms and model in TABLE_NAMES:
froms.append(model)
Expand Down Expand Up @@ -180,7 +182,7 @@ def get_raw_query(self, limit=None, offset=None, count=False,
limits,
offsets)
if add_params:
return u"%s # %s" % (sql, ", ".join(self._params))
return u"%s /* %s */" % (sql, ", ".join(self._params))
else:
return sql

Expand All @@ -198,7 +200,7 @@ def get_results(self, limit=None, offset=None, query=None, admin_name=None,
if settings.DEBUG:
print sql
cursor = connection.cursor()
cursor.execute(sql, self._params)
cursor.execute(sql, tuple(self._params))
query_results = cursor.fetchall()
if admin_name:
selects = self._get_selects_with_extra_ids()
Expand Down Expand Up @@ -261,6 +263,17 @@ def get_labels(self, add_extra_ids=False, row_number=False):
labels.append(label)
return labels

def _get_lookup(self, operator, over):
lookup = Field().get_db_prep_lookup(operator, over,
connection=connection,
prepared=True)
string_related_operators = ('exact', 'contains', 'regex', 'startswith',
'endswith', 'iexact', 'endswith', 'iregex',
'istartswith','icontains')
if isinstance(lookup, (tuple, list)):
return lookup[0]
return lookup

def _get_selects_with_extra_ids(self):
selects = []
for select in self._selects:
Expand Down

0 comments on commit f52f076

Please sign in to comment.