From: Stefan Kögl Date: Sat, 27 Apr 2013 17:06:35 +0000 (+0200) Subject: fix cmd update-related-podcasts X-Git-Url: https://repo.or.cz/w/mygpo.git/commitdiff_plain/ed528dd36a08c7fe1af3c58263696890498a7ddb fix cmd update-related-podcasts --- diff --git a/mygpo/data/management/commands/update-related-podcasts.py b/mygpo/data/management/commands/update-related-podcasts.py index c7641544..b128e5b7 100644 --- a/mygpo/data/management/commands/update-related-podcasts.py +++ b/mygpo/data/management/commands/update-related-podcasts.py @@ -7,7 +7,8 @@ from mygpo.decorators import repeat_on_conflict from mygpo.core.models import Podcast from mygpo.data.podcast import calc_similar_podcasts from mygpo.utils import progress -from mygpo.db.couchdb.podcast import podcast_count, all_podcasts +from mygpo.db.couchdb.podcast import podcast_count, all_podcasts, \ + update_related_podcasts class Command(BaseCommand): @@ -32,11 +33,6 @@ class Command(BaseCommand): related = map(get_podcast, l) - @repeat_on_conflict(['podcast']) - def _update(podcast, related): - podcast.related_podcasts = related - podcast.save() - - _update(podcast=podcast, related=related) + update_related_podcasts(podcast, related) progress(n+1, total) diff --git a/mygpo/db/couchdb/podcast.py b/mygpo/db/couchdb/podcast.py index dc968347..6336301a 100644 --- a/mygpo/db/couchdb/podcast.py +++ b/mygpo/db/couchdb/podcast.py @@ -549,3 +549,12 @@ def update_additional_data(podcast, twitter): # clear the whole cache until we have a better invalidation mechanism cache.clear() + + +@repeat_on_conflict(['podcast']) +def update_related_podcasts(podcast, related): + if podcast.related_podcasts == related: + return + + podcast.related_podcasts = related + podcast.save() diff --git a/mygpo/db/couchdb/podcast_state.py b/mygpo/db/couchdb/podcast_state.py index 0ffdea26..ed3ba7e6 100644 --- a/mygpo/db/couchdb/podcast_state.py +++ b/mygpo/db/couchdb/podcast_state.py @@ -35,6 +35,7 @@ def subscribed_users(podcast): ) users = (r['key'][1] for r in res) + return users def subscribed_podcast_ids_by_user_id(user_id): @@ -42,6 +43,8 @@ def subscribed_podcast_ids_by_user_id(user_id): if not user_id: raise QueryParameterMissing('user_id') + db = get_main_database() + subscribed = db.view('subscriptions/by_user', startkey = [user_id, True, None, None], endkey = [user_id, True, {}, {}],