summaryrefslogtreecommitdiff
path: root/coip/apps/activitystreams/views.py
blob: 91ba957b8925c9b704359d87126613d7120810bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
'''
Created on Nov 8, 2011

@author: leifj
'''
from django.shortcuts import get_object_or_404
from coip.apps.name.models import Name
from coip.multiresponse import json_response
from django_oauth2_lite.decorators import oauth2_required
from actstream.models import Action
from django.http import HttpResponseNotFound
from coip.extensions.templatetags.userdisplay import userdisplay

def user_to_json(o):
    return {
        'objectType': 'person',
        'id': o.username,
        'displayName': userdisplay(o)
    }

def name_to_json(o):
    return {
         'objectType': 'group',
         'id': o.id,
         'url': o.url(),
         'displayName': o.shortname()
    }

def object_to_json(o):
    if o:
        n = o.__class__.__name__
        if n == 'User':
            return user_to_json(o)
        if n == 'Name':
            return name_to_json(o)
    else:
        return "none"

def activity_to_json(activity):
    r = {
        "published": activity.timestamp.isoformat(),
        "actor": object_to_json(activity.actor),
        "verb": activity.verb,
        "object": object_to_json(activity.action_object),
        "target": object_to_json(activity.target)
     }
    return r

@oauth2_required(scope='memberships')
def name(request,id):
    name = get_object_or_404(Name,pk=id)
    # check ownership
    stream = Action.objects.stream_for_object_as_target(name)
    if stream:
        return json_response([activity_to_json(activity) for activity in stream])
    else:
        return HttpResponseNotFound()