From 313935f85785e7e6e12a2f65d8785422737cdd9a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20K=C3=B6gl?= Date: Tue, 17 Mar 2015 20:47:13 +0100 Subject: [PATCH] [Subscriptions] speed up get_subscribe_targets() --- mygpo/subscriptions/__init__.py | 3 ++- .../migrations/0004_subscription_index.py | 18 ++++++++++++++++++ mygpo/subscriptions/models.py | 3 ++- 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 mygpo/subscriptions/migrations/0004_subscription_index.py diff --git a/mygpo/subscriptions/__init__.py b/mygpo/subscriptions/__init__.py index c515436f..e9ea5a04 100644 --- a/mygpo/subscriptions/__init__.py +++ b/mygpo/subscriptions/__init__.py @@ -143,7 +143,8 @@ def get_subscribe_targets(podcast, user): subscribed """ clients = Client.objects.filter(user=user)\ - .exclude(subscription__podcast=podcast)\ + .exclude(subscription__podcast=podcast, + subscription__user=user)\ .select_related('sync_group') targets = set() diff --git a/mygpo/subscriptions/migrations/0004_subscription_index.py b/mygpo/subscriptions/migrations/0004_subscription_index.py new file mode 100644 index 00000000..5875c412 --- /dev/null +++ b/mygpo/subscriptions/migrations/0004_subscription_index.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('subscriptions', '0003_remove_podcastconfig'), + ] + + operations = [ + migrations.AlterIndexTogether( + name='subscription', + index_together=set([('podcast', 'user'), ('user', 'client')]), + ), + ] diff --git a/mygpo/subscriptions/models.py b/mygpo/subscriptions/models.py index 72a8a94c..6b283054 100644 --- a/mygpo/subscriptions/models.py +++ b/mygpo/subscriptions/models.py @@ -56,7 +56,8 @@ class Subscription(DeleteableModel): ] index_together = [ - ['user', 'client'] + ['user', 'client'], + ['podcast', 'user'], ] def __str__(self): -- 2.11.4.GIT