Users that log in, are at invitations level 0.
authorAntony Chazapis <chazapis@gmail.com>
Mon, 7 Nov 2011 09:35:22 +0000 (11:35 +0200)
committerAntony Chazapis <chazapis@gmail.com>
Mon, 7 Nov 2011 09:35:22 +0000 (11:35 +0200)
pithos/im/target/invitation.py
pithos/im/target/shibboleth.py
pithos/im/target/twitter.py
pithos/im/target/util.py
pithos/settings.py.dist

index 5c44e63..d8b9775 100644 (file)
@@ -38,8 +38,8 @@ from datetime import datetime
 from django.conf import settings
 from django.http import HttpResponseBadRequest
 
-from pithos.im.models import User, Invitation
-from pithos.im.target.util import prepare_response
+from pithos.im.models import Invitation
+from pithos.im.target.util import get_or_create_user, prepare_response
 
 
 def login(request):
@@ -55,16 +55,9 @@ def login(request):
         invitation.save()
         logging.info('Accepted invitation %s', invitation)
     
-    user, created = User.objects.get_or_create(uniq=invitation.uniq,
-        defaults={
-            'realname': invitation.realname,
-            'affiliation': 'Invitation',
-            'level': invitation.inviter.level + 1
-        })
-    if created:
-        user.renew_token()
-        user.save()
-        logging.info('Created user %s', user)
-    
+    user = get_or_create_user(invitation.uniq,
+                                invitation.realname,
+                                'Invitation',
+                                invitation.inviter.level + 1)
     next = request.GET.get('next')
     return prepare_response(user, next, 'renew' in request.GET)
index ec7bc41..65d0ee9 100644 (file)
@@ -33,7 +33,7 @@
 
 from django.http import HttpResponseBadRequest
 
-from pithos.im.target.util import get_user, prepare_response
+from pithos.im.target.util import get_or_create_user, prepare_response
 
 
 class Tokens:
@@ -66,6 +66,6 @@ def login(request):
     
     affiliation = tokens.get(Tokens.SHIB_EP_AFFILIATION, '')
     
-    return prepare_response(get_user(eppn, realname, affiliation),
+    return prepare_response(get_or_create_user(eppn, realname, affiliation, 0),
                             request.GET.get('next'),
                             'renew' in request.GET)
index 4411e2a..33f213d 100644 (file)
@@ -40,7 +40,7 @@ from django.conf import settings
 from django.http import HttpResponse
 from django.utils import simplejson as json
 
-from pithos.im.target.util import get_user, prepare_response
+from pithos.im.target.util import get_or_create_user, prepare_response
 
 # It's probably a good idea to put your consumer's OAuth token and
 # OAuth secret into your project's settings. 
@@ -115,5 +115,5 @@ def authenticated(request):
     uniq = '%s@twitter.com' % access_token['screen_name']
     realname = access_token['user_id']
     
-    return prepare_response(get_user(uniq, realname, 'Twitter'),
+    return prepare_response(get_or_create_user(uniq, realname, 'Twitter', 0),
                             request_token.get('next'))
index 5dca845..843a57b 100644 (file)
@@ -31,6 +31,7 @@
 # interpreted as representing official policies, either expressed
 # or implied, of GRNET S.A.
 
+import logging
 import datetime
 
 from urlparse import urlsplit, urlunsplit
@@ -41,17 +42,22 @@ from django.utils.http import urlencode
 from pithos.im.models import User
 
 
-def get_user(uniq, realname, affiliation):
+def get_or_create_user(uniq, realname, affiliation, level):
     """Find or register a user into the internal database
        and issue a token for subsequent requests.
     """
     
-    user, created = User.objects.get_or_create(uniq=uniq)
+    user, created = User.objects.get_or_create(uniq=uniq,
+        defaults={
+            'realname': realname,
+            'affiliation': affiliation,
+            'level': level,
+            'invitations': settings.INVITATIONS_PER_LEVEL[level]
+        })
     if created:
-        user.realname = realname
-        user.affiliation = affiliation
         user.renew_token()
         user.save()
+        logging.info('Created user %s', user)
     
     return user
 
index ef24bae..625cec1 100644 (file)
@@ -172,7 +172,7 @@ FEEDBACK_FROM_EMAIL = DEFAULT_FROM_EMAIL
 FEEDBACK_CONTACT_EMAIL = 'support@pithos.grnet.gr'
 
 INVITATIONS_PER_LEVEL = {
-    0   :   1000,
+    0   :   3,
     1   :   0,
     2   :   0,
     3   :   0,