From ccee9774d0ff6f7f327d648439b076dba8a86ccc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20K=C3=B6gl?= Date: Wed, 18 Jun 2014 19:56:55 +0200 Subject: [PATCH] [Migration] remove podcasts_by_id --- mygpo/administration/tasks.py | 4 ++-- mygpo/api/advanced/lists.py | 3 +-- mygpo/api/simple.py | 5 ++--- mygpo/db/couchdb/podcast.py | 26 ++------------------------ mygpo/directory/models.py | 4 ++-- mygpo/directory/views.py | 4 ++-- mygpo/publisher/views.py | 6 +++--- mygpo/users/models.py | 4 ++-- 8 files changed, 16 insertions(+), 40 deletions(-) diff --git a/mygpo/administration/tasks.py b/mygpo/administration/tasks.py index e84f4c9e..ae8b511f 100644 --- a/mygpo/administration/tasks.py +++ b/mygpo/administration/tasks.py @@ -1,9 +1,9 @@ from collections import Counter +from mygpo.podcasts.models import Podcast from mygpo.cel import celery from mygpo.core.slugs import get_duplicate_slugs, EpisodeSlug from mygpo.maintenance.merge import PodcastMerger -from mygpo.db.couchdb.podcast import podcasts_by_id from mygpo.db.couchdb.episode import episodes_for_podcast_uncached from celery.utils.log import get_task_logger @@ -16,7 +16,7 @@ def merge_podcasts(podcast_ids, num_groups): logger.info('merging podcast ids %s', podcast_ids) - podcasts = podcasts_by_id(podcast_ids) + podcasts = Podcast.objects.filter(id__in=podcast_ids) logger.info('merging podcasts %s', podcasts) diff --git a/mygpo/api/advanced/lists.py b/mygpo/api/advanced/lists.py index e2409f87..0a1b5ef6 100644 --- a/mygpo/api/advanced/lists.py +++ b/mygpo/api/advanced/lists.py @@ -40,7 +40,6 @@ from mygpo.api.simple import parse_subscription, format_podcast_list, \ check_format from mygpo.share.views import list_decorator from mygpo.users.models import User -from mygpo.db.couchdb.podcast import podcasts_by_id from mygpo.db.couchdb.podcastlist import podcastlist_for_user_slug, \ podcastlists_for_user @@ -149,7 +148,7 @@ def get_list(request, plist, owner, format): except (TypeError, ValueError): return HttpResponseBadRequest('scale_logo has to be a numeric value') - podcasts = podcasts_by_id(plist.podcasts) + podcasts = Podcast.objects.filter(id__in=plist.podcasts) domain = RequestSite(request).domain p_data = lambda p: podcast_data(p, domain, scale) diff --git a/mygpo/api/simple.py b/mygpo/api/simple.py index d929c1de..5d93329d 100644 --- a/mygpo/api/simple.py +++ b/mygpo/api/simple.py @@ -33,7 +33,7 @@ from django.utils.translation import ugettext as _ from mygpo.api.basic_auth import require_valid_user, check_username from mygpo.api.backend import get_device, BulkSubscribe from mygpo.core import models -from mygpo.core.models import Podcast +from mygpo.podcasts.models import Podcast from mygpo.api.opml import Exporter, Importer from mygpo.api.httpresponse import JsonResponse from mygpo.directory.toplist import PodcastToplist @@ -44,7 +44,6 @@ from mygpo.decorators import allowed_methods, cors_origin from mygpo.utils import parse_range, normalize_feed_url from mygpo.core.json import json, JSONDecodeError from mygpo.db.couchdb import BulkException -from mygpo.db.couchdb.podcast import podcasts_by_id from mygpo.db.couchdb.user import suggestions_for_user import logging @@ -353,7 +352,7 @@ def example_podcasts(request, format): try: examples = ExamplePodcasts.get('example_podcasts') ids = examples.podcast_ids - podcasts = podcasts_by_id(ids) + podcasts = Podcasts.objects.filter(id__in=ids) cache.set('example-podcasts', podcasts) except ResourceNotFound: diff --git a/mygpo/db/couchdb/podcast.py b/mygpo/db/couchdb/podcast.py index 57992a19..9a16fddb 100644 --- a/mygpo/db/couchdb/podcast.py +++ b/mygpo/db/couchdb/podcast.py @@ -21,29 +21,6 @@ import logging logger = logging.getLogger(__name__) -def podcasts_by_id(ids): - - if ids is None: - raise QueryParameterMissing('ids') - - if not ids: - return [] - - r = Podcast.view('podcasts/by_id', - keys = ids, - include_docs = True, - wrap_doc = False - ) - - podcasts = map(_wrap_podcast_group, r) - - for podcast in podcasts: - if podcast.needs_update: - incomplete_obj.send_robust(sender=podcast) - - return podcasts - - def podcasts_groups_by_id(ids): """ gets podcast groups and top-level podcasts for the given ids """ @@ -107,7 +84,8 @@ def podcasts_to_dict(ids, use_cache=False): cache_objs.extend(res.values()) ids = [x for x in ids if x not in res.keys()] - db_objs = podcasts_by_id(ids) + from mygpo.podcasts.models import Podcast + db_objs = Podcast.objects.filter(id__in=ids) for obj in (cache_objs + db_objs): diff --git a/mygpo/directory/models.py b/mygpo/directory/models.py index 7b5a7f3e..b2b5091a 100644 --- a/mygpo/directory/models.py +++ b/mygpo/directory/models.py @@ -2,9 +2,9 @@ from django.core.cache import cache from couchdbkit.ext.django.schema import * +from mygpo.podcasts.models import Podcast from mygpo.utils import iterate_together from mygpo.core.proxy import DocumentABCMeta -from mygpo.db.couchdb.podcast import podcasts_by_id class Category(Document): @@ -55,7 +55,7 @@ class Category(Document): return podcasts ids = self.podcasts[start:end] - podcasts = podcasts_by_id(ids) + podcasts = Podcast.objects.filter(id__in=ids) cache.set(cache_id, podcasts) return podcasts diff --git a/mygpo/directory/views.py b/mygpo/directory/views.py index 43486c05..4dcd616f 100644 --- a/mygpo/directory/views.py +++ b/mygpo/directory/views.py @@ -33,7 +33,7 @@ from mygpo.users.settings import FLATTR_TOKEN from mygpo.data.feeddownloader import PodcastUpdater, NoEpisodesException from mygpo.data.tasks import update_podcasts from mygpo.db.couchdb.user import get_user_by_id -from mygpo.db.couchdb.podcast import podcasts_by_id, podcasts_to_dict +from mygpo.db.couchdb.podcast import podcasts_to_dict from mygpo.db.couchdb.directory import category_for_tag from mygpo.db.couchdb.podcastlist import random_podcastlists, \ podcastlist_count, podcastlists_by_rating @@ -149,7 +149,7 @@ class Directory(View): if random_list: random_list = proxy_object(random_list) random_list.more_podcasts = max(0, len(random_list.podcasts) - podcasts_per_list) - random_list.podcasts = podcasts_by_id(random_list.podcasts[:podcasts_per_list]) + random_list.podcasts = Podcast.objects.filter(id__in=random_list.podcasts[:podcasts_per_list]) random_list.user = get_user_by_id(random_list.user) yield random_list diff --git a/mygpo/publisher/views.py b/mygpo/publisher/views.py index 3d63e1ac..032a6f8c 100644 --- a/mygpo/publisher/views.py +++ b/mygpo/publisher/views.py @@ -29,7 +29,7 @@ from mygpo.decorators import requires_token, allowed_methods from mygpo.users.models import User from mygpo.db.couchdb.episode import episodes_for_podcast, \ set_episode_slug, remove_episode_slug -from mygpo.db.couchdb.podcast import podcasts_by_id, update_additional_data +from mygpo.db.couchdb.podcast import update_additional_data from mygpo.db.couchdb.episode_state import episode_listener_counts from mygpo.db.couchdb.pubsub import subscription_for_topic @@ -38,7 +38,7 @@ from mygpo.db.couchdb.pubsub import subscription_for_topic @cache_control(private=True) def home(request): if is_publisher(request.user): - podcasts = podcasts_by_id(request.user.published_objects) + podcasts = Podcasts.objects.filter(id__in=request.user.published_objects) site = RequestSite(request) update_token = request.user.get_token('publisher_update_token') form = SearchPodcastForm() @@ -170,7 +170,7 @@ def update_published_podcasts(request, username): if not user: raise Http404 - published_podcasts = podcasts_by_id(user.published_objects) + published_podcasts = Podcast.objects.filter(id__in=user.published_objects) update_podcasts.delay([podcast.url for podcast in published_podcasts]) return HttpResponse('Updated:\n' + '\n'.join([p.url for p in published_podcasts]), mimetype='text/plain') diff --git a/mygpo/users/models.py b/mygpo/users/models.py index dde5f101..723f0bea 100644 --- a/mygpo/users/models.py +++ b/mygpo/users/models.py @@ -21,7 +21,7 @@ from mygpo.users.ratings import RatingMixin from mygpo.users.sync import SyncedDevicesMixin from mygpo.users.subscriptions import subscription_changes, podcasts_for_states from mygpo.users.settings import FAV_FLAG, PUBLIC_SUB_PODCAST, SettingsMixin -from mygpo.db.couchdb.podcast import podcasts_by_id, podcasts_to_dict +from mygpo.db.couchdb.podcast import podcasts_to_dict from mygpo.db.couchdb.user import user_history, device_history, \ create_missing_user_tokens @@ -62,7 +62,7 @@ class Suggestions(Document, RatingMixin): ids = filter(lambda x: not x in self.blacklist + subscriptions, self.podcasts) if count: ids = ids[:count] - return filter(lambda x: x and x.title, podcasts_by_id(ids)) + return filter(lambda x: x and x.title, Podcast.objects.filter(id__in=ids)) def __repr__(self): -- 2.11.4.GIT