summaryrefslogtreecommitdiff
path: root/coip/apps/userprofile
diff options
context:
space:
mode:
authorLeif Johansson <leifj@sunet.se>2010-07-06 21:55:44 +0200
committerLeif Johansson <leifj@sunet.se>2010-07-06 21:55:44 +0200
commit7921132788e55c0714af8b33ed2105ff6a1dba54 (patch)
treedf995bce2c95830ccace570e3ec059232fef3ac4 /coip/apps/userprofile
parent7698ee1fe6bd40108fbe48bb641ea99a5b8f2bef (diff)
cleanup and working membership list
Diffstat (limited to 'coip/apps/userprofile')
-rw-r--r--coip/apps/userprofile/__init__.py0
-rw-r--r--coip/apps/userprofile/admin.py4
-rw-r--r--coip/apps/userprofile/models.py30
-rw-r--r--coip/apps/userprofile/utils.py29
-rw-r--r--coip/apps/userprofile/views.py44
5 files changed, 107 insertions, 0 deletions
diff --git a/coip/apps/userprofile/__init__.py b/coip/apps/userprofile/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/coip/apps/userprofile/__init__.py
diff --git a/coip/apps/userprofile/admin.py b/coip/apps/userprofile/admin.py
new file mode 100644
index 0000000..32c1ad8
--- /dev/null
+++ b/coip/apps/userprofile/admin.py
@@ -0,0 +1,4 @@
+from django.contrib import admin
+from coip.apps.userprofile.models import UserProfile
+
+admin.site.register(UserProfile) \ No newline at end of file
diff --git a/coip/apps/userprofile/models.py b/coip/apps/userprofile/models.py
new file mode 100644
index 0000000..2387e36
--- /dev/null
+++ b/coip/apps/userprofile/models.py
@@ -0,0 +1,30 @@
+'''
+Created on Jul 5, 2010
+
+@author: leifj
+'''
+from django.db import models
+from django.contrib.auth.models import User
+
+class UserProfile(models.Model):
+ user = models.ForeignKey(User,blank=True,null=True,related_name='profiles')
+ display_name = models.CharField(max_length=255,blank=True,null=True)
+ email = models.EmailField(blank=True,null=True)
+ idp = models.CharField(max_length=255,blank=True,null=True)
+ identifier = models.CharField(max_length=1023,unique=True)
+ timecreated = models.DateTimeField(auto_now_add=True)
+ lastupdated = models.DateTimeField(auto_now=True)
+
+ def __unicode__(self):
+ return "%s [%s] - %s" % (self.identifier,self.user.username,self.display_name)
+
+class PKey(models.Model):
+ user_profile = models.ForeignKey(UserProfile,related_name='keys')
+ key = models.CharField(max_length=1023,unique=True)
+ timecreated = models.DateTimeField(auto_now_add=True)
+ lastupdated = models.DateTimeField(auto_now=True)
+
+ def __unicode__(self):
+ return "A merge-key for "+self.user_profile
+
+ \ No newline at end of file
diff --git a/coip/apps/userprofile/utils.py b/coip/apps/userprofile/utils.py
new file mode 100644
index 0000000..ecbc21a
--- /dev/null
+++ b/coip/apps/userprofile/utils.py
@@ -0,0 +1,29 @@
+'''
+Created on Jul 6, 2010
+
+@author: leifj
+'''
+from coip.apps.userprofile.models import UserProfile, PKey
+from django.core.exceptions import ObjectDoesNotExist
+
+def request_profile(request):
+ if request.user.is_authenticated():
+ if request.META.has_key('REMOTE_USER'):
+ return UserProfile.objects.get(identifier=request.META['REMOTE_USER'])
+ else:
+ return UserProfile.objects.get(user=request.user.id)
+ else:
+ return None
+
+def user_profile(request,key=None):
+ if key:
+ try:
+ k = PKey.objects.get(key=key)
+ return k.profile,k
+ except ObjectDoesNotExist:
+ return None
+ else:
+ return request_profile(request)
+ #if not request.session.has_key('_profile'):
+ # request.session['_profile'] = request_profile(request)
+ #return request.session['_profile'] \ No newline at end of file
diff --git a/coip/apps/userprofile/views.py b/coip/apps/userprofile/views.py
new file mode 100644
index 0000000..36f6a48
--- /dev/null
+++ b/coip/apps/userprofile/views.py
@@ -0,0 +1,44 @@
+'''
+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 uuid import uuid4
+from coip.multiresponse import respond_to
+from coip.apps.membership.models import Membership
+from coip.apps.userprofile.utils import user_profile
+from django.core.exceptions import ObjectDoesNotExist
+from pprint import pprint
+
+@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=uuid4().hex)
+ 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)
+ except ObjectDoesNotExist:
+ pass
+
+ pprint(memberships)
+ return respond_to(request, {'text/html': 'apps/userprofile/home.html'},{'memberships': memberships})
+
+