]> git.ozlabs.org Git - patchwork/commitdiff
Fix django-1.6 incompatibilities
authorJeremy Kerr <jk@ozlabs.org>
Tue, 22 Apr 2014 13:19:52 +0000 (21:19 +0800)
committerJeremy Kerr <jk@ozlabs.org>
Wed, 23 Apr 2014 12:40:29 +0000 (20:40 +0800)
We're seeing a couple of final quirks running the testsuite on django
1.6:

  Traceback (most recent call last):
    File "patchwork/apps/patchwork/tests/notifications.py", line 182, in testNotificationEscaping
      errors = send_notifications()
    File "patchwork/apps/patchwork/utils.py", line 227, in send_notifications
      delete_notifications()
    File "patchwork/apps/patchwork/utils.py", line 197, in delete_notifications
      pk__in = notifications).delete()
    File "/usr/lib/python2.7/dist-packages/django/db/models/manager.py", line 163, in filter
      return self.get_queryset().filter(*args, **kwargs)
    File "/usr/lib/python2.7/dist-packages/django/db/models/query.py", line 590, in filter
      return self._filter_or_exclude(False, *args, **kwargs)
    File "/usr/lib/python2.7/dist-packages/django/db/models/query.py", line 608, in _filter_or_exclude
      clone.query.add_q(Q(*args, **kwargs))
    File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py", line 1198, in add_q
      clause = self._add_q(where_part, used_aliases)
    File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py", line 1232, in _add_q
      current_negated=current_negated)
    File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py", line 1122, in build_filter
      lookup_type, value)
    File "/usr/lib/python2.7/dist-packages/django/db/models/fields/related.py", line 1107, in get_lookup_constraint
      values = [get_normalized_value(value) for value in raw_value]
    File "/usr/lib/python2.7/dist-packages/django/db/models/fields/related.py", line 1084, in get_normalized_value
      value_list.append(getattr(value, source.attname))
  AttributeError: 'PatchChangeNotification' object has no attribute 'id'

- we're specifying our own pk here, so the PatchChangeNotification has
no id attribute; it looks like the pk__in syntax is expecting IDs.

We also need a default value for BooleanField, as we're getting
integrity errors when creating rows with no explicit send_notifications
set.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
apps/patchwork/models.py
apps/patchwork/utils.py

index 9de2a22d7e3fca857b53420fa597b781fd5b1bfb..a5f60cb8f94268a4aed8cb0ab9da937a574e9614 100644 (file)
@@ -55,7 +55,7 @@ class Project(models.Model):
     web_url = models.CharField(max_length=2000, blank=True)
     scm_url = models.CharField(max_length=2000, blank=True)
     webscm_url = models.CharField(max_length=2000, blank=True)
-    send_notifications = models.BooleanField()
+    send_notifications = models.BooleanField(default=False)
 
     def __unicode__(self):
         return self.name
index 9e1702e647673c6295fbe36524946895be83392d..7e3346ef1f986518772599be4086a8370bab2f8e 100644 (file)
@@ -191,8 +191,8 @@ def send_notifications():
         projects = set([ n.patch.project.linkname for n in notifications ])
 
         def delete_notifications():
-            PatchChangeNotification.objects.filter(
-                                pk__in = notifications).delete()
+            pks = [ n.pk for n in notifications ]
+            PatchChangeNotification.objects.filter(pk__in = pks).delete()
 
         if EmailOptout.is_optout(recipient.email):
             delete_notifications()