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