Ejemplo n.º 1
0
def asset_meta(request, fresh=False):
    if not request.user.is_authenticated():
        return HttpResponse('silly rabbit, asset_meta is for authenticated users',
            status=400, content_type='text/plain')

    user_id = request.user.xid
    cache_key = 'favorites:%s' % user_id
    favs = None if fresh else cache.get(cache_key)

    if favs is None:
        log.debug("Oops, going to server for %s's asset_meta", request.user.xid)

        fav_objs = {}
        html_ids = request.POST.getlist('asset_id')
        with typepad.client.batch_request():
            for html_id in html_ids:
                assert html_id.startswith('asset-')
                xid = html_id[6:]
                fav_objs[html_id] = Favorite.head_by_user_asset(user_id, xid)

        favs = list(html_id for html_id, fav_obj in fav_objs.items()
            if fav_obj.found())
        if not fresh:
            cache.set(cache_key, favs, ONE_DAY)
    else:
        log.debug('Yay, returning asset_meta for %s from cache', request.user.xid)

    favs = dict((html_id, {"favorite": True}) for html_id in favs)
    return HttpResponse(json.dumps(favs), content_type='application/json')