def podcasts_for_tag(tag): """ Returns the podcasts with the current tag. Some podcasts might be returned twice """ if not tag: raise QueryParameterMissing('tag') res = multi_request_view(Podcast, 'podcasts/by_tag', wrap = False, startkey = [tag, None], endkey = [tag, {}], reduce = True, group = True, group_level = 2 ) for r in res: yield (r['key'][1], r['value']) udb = get_userdata_database() res = multi_request_view(udb, 'usertags/podcasts', wrap = False, startkey = [tag, None], endkey = [tag, {}], reduce = True, group = True, group_level = 2 ) for r in res: yield (r['key'][1], r['value'])
def all_tags(): """ Returns all tags Some tags might be returned twice """ db = get_main_database() res = multi_request_view(db, 'podcasts/by_tag', wrap = False, reduce = True, group = True, group_level = 1 ) for r in res: yield r['key'][0] udb = get_userdata_database() res = multi_request_view(udb, 'usertags/podcasts', wrap = False, reduce = True, group = True, group_level = 1 ) for r in res: yield r['key'][0]
def all_podcasts(): from mygpo.db.couchdb.utils import multi_request_view res = multi_request_view(Podcast,'podcasts/by_id', wrap = False, include_docs = True, stale = 'update_after', ) # TODO: this method is only used for maintenance purposes; should we # really send 'incomplete_obj' signals here? for r in res: obj = r['doc'] if obj['doc_type'] == 'Podcast': yield Podcast.wrap(obj) else: pid = r[u'key'] pg = PodcastGroup.wrap(obj) podcast = pg.get_podcast_by_id(pid) yield podcast
def missing_slugs(doc_type, start, end, wrapper, **kwargs): if not doc_type: raise QueryParameterMissing('doc_type') if not start: raise QueryParameterMissing('start') if not end: raise QueryParameterMissing('end') db = get_main_database() return multi_request_view(db, 'slugs/missing', startkey = [doc_type] + end, endkey = [doc_type] + start, descending = True, include_docs = True, reduce = False, wrapper = wrapper, auto_advance = False, **kwargs )