diff options
author | Leif Johansson <leifj@sunet.se> | 2010-07-06 21:55:44 +0200 |
---|---|---|
committer | Leif Johansson <leifj@sunet.se> | 2010-07-06 21:55:44 +0200 |
commit | 7921132788e55c0714af8b33ed2105ff6a1dba54 (patch) | |
tree | df995bce2c95830ccace570e3ec059232fef3ac4 /coip/apps/userprofile | |
parent | 7698ee1fe6bd40108fbe48bb641ea99a5b8f2bef (diff) |
cleanup and working membership list
Diffstat (limited to 'coip/apps/userprofile')
-rw-r--r-- | coip/apps/userprofile/__init__.py | 0 | ||||
-rw-r--r-- | coip/apps/userprofile/admin.py | 4 | ||||
-rw-r--r-- | coip/apps/userprofile/models.py | 30 | ||||
-rw-r--r-- | coip/apps/userprofile/utils.py | 29 | ||||
-rw-r--r-- | coip/apps/userprofile/views.py | 44 |
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}) + + |