Versión 0.0.6

This commit is contained in:
2014-11-29 21:06:29 +01:00
parent 3d42fd1fa6
commit 0bc5bbbad4
2 changed files with 25 additions and 6 deletions

View File

@@ -2,7 +2,7 @@ from __future__ import unicode_literals
import datetime
import copy
VERSION = "0.0.5"
VERSION = "0.0.6"
class classproperty(object):
@@ -78,6 +78,7 @@ class F(object):
class Q(QMixin):
lookup_types = [
'icontains', 'istartswith', 'iendswith',
'contains', 'startswith', 'endswith',
'year', 'month', 'day', 'week_day', 'hour', 'minute', 'second',
'isnull', 'in']
@@ -127,13 +128,22 @@ class Q(QMixin):
if lookup in self.lookup_types:
if lookup == "icontains":
return "{0} like '%{1}%'".format(column, value)
return "{0} LIKE '%{1}%'".format(column, value)
if lookup == "iendswith":
return "{0} like '%{1}'".format(column, value)
return "{0} LIKE '%{1}'".format(column, value)
if lookup == "istartwith":
return "{0} like '{1}%'".format(column, value)
if lookup == "istartswith":
return "{0} LIKE '{1}%'".format(column, value)
if lookup == "contains":
return "{0} LIKE BINARY '%{1}%'".format(column, value)
if lookup == "endswith":
return "{0} LIKE BINARY '%{1}'".format(column, value)
if lookup == "startswith":
return "{0} LIKE BINARY '{1}%'".format(column, value)
if lookup == "in":
return "{0} in ({1})".format(column, self._get_value(value))

View File

@@ -1,6 +1,6 @@
import unittest
import datetime
from . import Q, Queryset, F
from sqlquerybuilder import Q, Queryset, F
class TestSqlBuilder(unittest.TestCase):
@@ -12,6 +12,15 @@ class TestSqlBuilder(unittest.TestCase):
self.assertEqual(str(Q(a__isnull=True)), "(a is NULL)")
self.assertEqual(str(Q(a__isnull=False)), "(a is NOT NULL)")
self.assertEqual(str(Q(a__startswith="a")), "(a LIKE BINARY 'a%')")
self.assertEqual(str(Q(a__istartswith="a")), "(a LIKE 'a%')")
self.assertEqual(str(Q(a__endswith="a")), "(a LIKE BINARY '%a')")
self.assertEqual(str(Q(a__iendswith="a")), "(a LIKE '%a')")
self.assertEqual(str(Q(a__contains="a")), "(a LIKE BINARY '%a%')")
self.assertEqual(str(Q(a__icontains="a")), "(a LIKE '%a%')")
def test_dates(self):
date = datetime.date(2010, 1, 15)
self.assertEqual(str(Q(fecha=date)), "(fecha='2010-01-15')")