From: Antony Chazapis Date: Mon, 7 Nov 2011 09:35:22 +0000 (+0200) Subject: Users that log in, are at invitations level 0. X-Git-Tag: pithos/v0.7.9.1~8 X-Git-Url: https://code.grnet.gr/git/pithos/commitdiff_plain/26986f1cca287d2acc10ad0580be140918332f10 Users that log in, are at invitations level 0. --- diff --git a/pithos/im/target/invitation.py b/pithos/im/target/invitation.py index 5c44e63..d8b9775 100644 --- a/pithos/im/target/invitation.py +++ b/pithos/im/target/invitation.py @@ -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) diff --git a/pithos/im/target/shibboleth.py b/pithos/im/target/shibboleth.py index ec7bc41..65d0ee9 100644 --- a/pithos/im/target/shibboleth.py +++ b/pithos/im/target/shibboleth.py @@ -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) diff --git a/pithos/im/target/twitter.py b/pithos/im/target/twitter.py index 4411e2a..33f213d 100644 --- a/pithos/im/target/twitter.py +++ b/pithos/im/target/twitter.py @@ -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')) diff --git a/pithos/im/target/util.py b/pithos/im/target/util.py index 5dca845..843a57b 100644 --- a/pithos/im/target/util.py +++ b/pithos/im/target/util.py @@ -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 diff --git a/pithos/settings.py.dist b/pithos/settings.py.dist index ef24bae..625cec1 100644 --- a/pithos/settings.py.dist +++ b/pithos/settings.py.dist @@ -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,