Skip to content

Instantly share code, notes, and snippets.

@Wilfred
Created December 12, 2011 15:10
Show Gist options
  • Save Wilfred/1467740 to your computer and use it in GitHub Desktop.
Save Wilfred/1467740 to your computer and use it in GitHub Desktop.
Patch for django-dbindexer issue #3
diff -r ae5f7638827e dbindexer/lookups.py
--- a/dbindexer/lookups.py Tue Sep 06 11:07:55 2011 +0200
+++ b/dbindexer/lookups.py Tue Nov 15 17:48:56 2011 +0000
@@ -48,10 +48,11 @@
return lookup_type, value
def convert_value(self, value):
- if isinstance(value, (tuple, list)):
- value = [self._convert_value(val) for val in value]
- else:
- value = self._convert_value(value)
+ if value is not None:
+ if isinstance(value, (tuple, list)):
+ value = [self._convert_value(val) for val in value]
+ else:
+ value = self._convert_value(value)
return value
def _convert_value(self, value):
@@ -258,4 +259,4 @@
if isinstance(field_to_add, (models.DateTimeField,
models.DateField, models.TimeField)):
field_to_add.auto_now_add = field_to_add.auto_now = False
- return field_to_add
\ No newline at end of file
+ return field_to_add
diff -r ae5f7638827e dbindexer/tests.py
--- a/dbindexer/tests.py Tue Sep 06 11:07:55 2011 +0200
+++ b/dbindexer/tests.py Tue Nov 15 17:48:56 2011 +0000
@@ -23,6 +23,9 @@
foreignkey2 = models.ForeignKey(ForeignIndexed2, related_name='idx_set', null=True)
tags = ListField(models.CharField(max_length=500, null=True))
+class StartsWith(models.Model):
+ name = models.CharField(max_length=500, null=True)
+
# TODO: add test for foreign key with multiple filters via different and equal paths
# to do so we have to create some entities matching equal paths but not matching
# different paths
@@ -80,6 +83,8 @@
'fk__name_fi2': ('iexact', 'endswith'),
'fk__age': (StandardLookup()),
})
+
+ register_index(StartsWith, {'name': 'istartswith'})
# TODO: add tests for created indexes for all backends!
# def test_model_fields(self):
@@ -202,6 +207,11 @@
self.assertEqual(4, len(Indexed.objects.all().filter(
published__week_day=now.isoweekday())))
+ def test_none_values(self):
+ """Regression test for #6"""
+ StartsWith.objects.create()
+
+
# def test_contains(self):
# # passes on production but not on gae-sdk (development)
# self.assertEqual(1, len(Indexed.objects.all().filter(name__contains='Aim')))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment