Skip to content

Commit a186715

Browse files
committed
first steps
1 parent 1e44189 commit a186715

File tree

4 files changed

+31
-12
lines changed

4 files changed

+31
-12
lines changed

server/views.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from django.views.decorators.csrf import csrf_exempt
1313
#Get a DjangoidUser object, based on a delegate URI
1414
def getDjangoidUserFromIdentity(identity):
15-
s = settings.BASE_URL[:-1] + (urlreverse("users.views.userpage", kwargs = {"uid": "@blah@"})[:-1].replace("@blah@", "(?P<uid>[^/]+)/"))
15+
s = settings.BASE_URL[:-1] + (urlreverse("user_entrypoint", kwargs = {"uid": "@blah@"})[:-1].replace("@blah@", "(?P<uid>[^/]+)/"))
1616
print s
1717
_identityRe = re.compile(s)
1818
uid = _identityRe.match(identity).groupdict()["uid"]

urls.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
url(r'^accept/$', 'users.views.accept'),
1010
url(r'^(?P<uid>[^/]+)/yadis/$', 'users.views.useryadis'),
1111
url(r'^(?P<uid>[^/]+)/foaf/$', 'users.views.userfoaf'),
12-
url(r'^(?P<uid>[^/]+)/$', 'users.views.userpage'),
12+
13+
url(r'^(?P<uid>[^/]+)/profile$', 'users.views.userpage'),
14+
url(r'^(?P<uid>[^/]+)/$', 'users.views.userpage_short', name="user_entrypoint"),
1315
url(r'^$', 'server.views.endpoint'),
1416
)

users/models.py

+15-2
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ def get_name(self):
7272
return l
7373
return f + " " + l
7474

75-
def get_attributes(self, public = False):
75+
def get_attributes(self, public = False, area = "FOAF"):
7676
attributes = {}
77-
for a in UserAttribute.objects.filter(user = self, public = public):
77+
for a in UserAttribute.objects.filter(user = self, public = public, foaf_name__not= None):
7878
attributes[a.attribute.name] = a.value
7979
return attributes
8080

@@ -116,14 +116,27 @@ def createDJIDUser(sender, instance, **kwargs):
116116
#Identities can have attributes. These items represent one possible attribute.
117117
class IdentityAttribute(models.Model):
118118
name = models.CharField("Name", max_length = 128, help_text = "Internal name of the attribute.", primary_key = True)
119+
120+
ax_name = models.TextField(blank = True, null=True)
121+
foaf_name = models.TextField(blank = True, null=True)
122+
namespace = models.TextField(blank=True, null=True)
123+
124+
openid_attribute = models.BooleanField(default=False)
125+
foaf_attribute = models.BooleanField(default=False)
126+
119127
title = models.CharField("Title", max_length = 128, help_text = "Title of the attribute, as displayed to the user")
120128
description = models.TextField("Description", blank = True, help_text = "Longer description of the attribute, as displayed to the user")
129+
protocol = models.TextField(null=True, blank=True)
121130
regex = models.CharField("Validation regex", max_length = 128, blank = True, help_text = "Regex the value of this field is validated upon on updates")
122131

123132
def __str__(self):
124133
return self.title
125134

126135

136+
137+
138+
139+
127140
#This maps an attribute to a user, including a value, obviously
128141
class UserAttribute(models.Model):
129142
user = models.ForeignKey(DjangoidUser, help_text = "DjangoidUser this attribute value belongs to")

users/views.py

+12-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from django.shortcuts import render_to_response
2-
from django.http import HttpResponse
2+
from django.http import HttpResponse, HttpResponseForbidden
33
from django.conf import settings
44
from django.core.urlresolvers import reverse as urlreverse
55
from openid.server import server
@@ -32,13 +32,17 @@ def userpage_short(request, uid):
3232
return res
3333
@login_required
3434
def userpage(request, uid):
35-
uid = User.objects.get(username = uid)
36-
user = DjangoidUser.objects.get(djangouser = uid)
37-
user.attributes = user.get_attributes(True)
38-
mid = microid(user.get_user_page(), user.get_user_page())
39-
res = render_to_response("users/userpage.html", {"server_url": settings.BASE_URL[:-1] + urlreverse("server.views.endpoint"), "user": user, "microid": mid})
40-
res["X-XRDS-Location"] = user.get_yadis_uri()
41-
return res
35+
if request.user.username == uid:
36+
uid = User.objects.get(username = uid)
37+
user = DjangoidUser.objects.get(djangouser = uid)
38+
user.attributes = user.get_attributes(True)
39+
mid = microid(user.get_user_page(), user.get_user_page())
40+
res = render_to_response("users/userpage.html", {"server_url": settings.BASE_URL[:-1] + urlreverse("server.views.endpoint"), "user": user, "microid": mid})
41+
res["X-XRDS-Location"] = user.get_yadis_uri()
42+
return res
43+
else:
44+
#return only public data, but as a demo it still works
45+
return HttpResponseForbidden()
4246

4347

4448
@csrf_exempt

0 commit comments

Comments
 (0)