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
58
59
60
61
62
63
64
65
66
67
68
69
70
|
'''
Created on Jul 6, 2010
@author: leifj
'''
from django.contrib.auth.decorators import login_required
from coip.apps.userprofile.models import PKey
from django.http import HttpResponseRedirect
from coip.multiresponse import respond_to, json_response
from coip.apps.membership.models import Membership, add_member
from coip.apps.userprofile.utils import user_profile
from django.core.exceptions import ObjectDoesNotExist
from pprint import pformat
from coip.apps.auth.utils import nonce
from coip.apps.name.models import Name, NameLink, lookup
from django.contrib.auth.models import User
from django.shortcuts import get_object_or_404
@login_required
def merge(request,pkey=None):
if pkey:
profile = user_profile(request)
merge_profile,pkey = profile(request,pkey)
if merge_profile:
merge_profile.user.delete()
merge_profile.user = request.user
merge_profile.save()
pkey.delete()
return HttpResponseRedirect("/user/home")
else:
profile = profile(request)
k = PKey(profile=profile,key=nonce())
k.save()
return HttpResponseRedirect("/accounts/login?next=/user/merge/"+k.key)
@login_required
def home(request):
memberships = []
try:
memberships = Membership.objects.filter(user=request.user,hidden=False)
except ObjectDoesNotExist:
pass
urn = lookup("urn",True)
anyuser = lookup("system:anyuser",True)
urn.setacl(anyuser,'rl')
profile = user_profile(request)
home = lookup('user:'+request.user.username,autocreate=True)
home.short = "%s (%s)" % (profile.display_name,profile.identifier)
home.save()
add_member(home,profile.user,hidden=True)
home.setacl(home,"rwlda") #don't allow users to delete or reset acls on their home, nor invite members - that would be confusing as hell
names = [(link.src,link.data) for link in NameLink.objects.filter(dst__memberships__user=request.user,type=NameLink.access_control,data__contains='i').all()]
return respond_to(request, {'text/html': 'apps/userprofile/home.html'},{'memberships': memberships,'names': names})
@login_required
def search(request):
list = []
if request.REQUEST.has_key('term'):
term = request.REQUEST['term']
list = [{'label': user.username,'value': user.id} for user in User.objects.filter(username__contains=term)]
return json_response(list)
@login_required
def info(request,username):
user = get_object_or_404(User,username=username)
return json_response({'username': user.username});
|