def _instance_to_news(activity, pages_cache=None): item_data = simple_read(activity) if isinstance(activity, Item): item_data['get_absolute_url'] = activity.get_absolute_url() # Figure out who the user is based on the activity type user = _get_user_from_activity(activity) page = _get_page_from_activity(activity) username = user.username if user else None timestamp = activity.published_at if hasattr(activity, 'published_at') else activity.created_at if page: if pages_cache: pageDct = pages_cache.get(page.id) else: pageDct = _nf_page_to_dict(page) else: pageDct = None news = { 'type': activity.SHORTNAME, 'page': pageDct, 'timestamp': timestamp, 'data': item_data, 'user': username, } return news
def get_follows(request): from main.api2 import simple_read user_id = request.POST['user_id'] follows = (Follow.objects.filter(user=user_id) | Follow.objects.filter(target=user_id)).select_related() users = set() for f in follows: users.add(f.user) users.add(f.target) models = {} models['follow'] = map(simple_read, follows) models['user'] = [simple_read(u) for u in users] return models
def xhr_get_page(request): # NB for now we are tracking the PageView here, but when the client starts # using cached Page objects, we need to find another way to make sure # they get created. if request.method != 'POST': return _new_api_403() from main import permissions, pageviews from main.api2 import APIEncoder from main.helpers import simple_read if 'page_id' in request.POST: page_id = request.POST['page_id'] try: page = Page.objects.get(id=page_id) except Page.DoesNotExist: return _new_api_404() else: username = request.POST['username'] page_identifier = request.POST['page_identifier'] try: page = _get_page_by_identifier(username, page_identifier) except Http404: return _new_api_404() if not permissions.request_can_view(request, page): return _new_api_403() PageView.objects.create( user = request.user if request.user.is_authenticated() else None, page = page, ip_address = request.META['REMOTE_ADDR'], sessionid = request.session.session_key, ) pageviews.increment_count(page) response = { 'page': simple_read(page), 'textitems': permissions.get_textitems(page), 'imageitems': permissions.get_imageitems(page), 'embeditems': permissions.get_embeditems(page), 'memberships': permissions.get_memberships(page), 'owner': permissions.get_owner(page), } # fixme: response = json.loads(json.dumps(response, cls=APIEncoder)) return _new_api_success(response)