예제 #1
0
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)
예제 #2
0
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
예제 #3
0
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)