def UpdateSeriesStatus(cursor = None, num_updated = 0): query = Episode.all().filter('status =', Episode.status.NEW) if cursor: query.with_cursor(cursor) seriesMap = models.makeSeriesMap() episodes = [] resultCount = 0 for episode in query.fetch(limit=BATCH_SIZE): resultCount = resultCount + 1 if episode.seriesName in seriesMap: episodes.append(episode) if seriesMap[episode.seriesName]: episode.status = 'ignore' else: episode.status = 'download' if resultCount > 0: db.put(episodes) num_updated += len(episodes) logging.debug( 'Put %d Episode entities to Datastore for a total of %d', len(episodes), num_updated) deferred.defer( UpdateSeriesStatus, cursor = query.cursor(), num_updated = num_updated) else: logging.debug( 'UpdateSeriesStatus complete with %d updates!', num_updated)
def get_posts(limit=4): post_data = mget( key='_'.join([str(limit), 'posts']), namespace='posts' ) if post_data is not None: return post_data else: query = Episode.all() query.order('-number') results = query.fetch(limit) post_data = [{ 'key': str(r.key()), 'title': r.title, 'number': r.number, 'href': r.href, 'thumb': r.thumb, 'writeup': r.writeup, } for r in results] web.debug(post_data) if not madd( key='_'.join([str(limit), 'posts']), value=post_data, namespace="posts" ): logging.error('Memcache add failed!') return post_data
def AddStatusToEpisode(cursor = None, num_updated = 0): query = Episode.all() if cursor: query.with_cursor(cursor) episodes = [] for episode in query.fetch(limit=BATCH_SIZE): episode.status = 'new' episodes.append(episode) if episodes: # Default value for status is fine, so just write them out. db.put(episodes) num_updated += len(episodes) logging.debug( 'Put %d Episode entities to Datastore for a total of %d', len(episodes), num_updated) deferred.defer( AddStatusToEpisode, cursor = query.cursor(), num_updated = num_updated) else: logging.debug( 'AddStatusToEpisode complete with %d updates!', num_updated)