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):
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)
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:
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)
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.
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'))
# interpreted as representing official policies, either expressed
# or implied, of GRNET S.A.
+import logging
import datetime
from urlparse import urlsplit, urlunsplit
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
FEEDBACK_CONTACT_EMAIL = 'support@pithos.grnet.gr'
INVITATIONS_PER_LEVEL = {
- 0 : 1000,
+ 0 : 3,
1 : 0,
2 : 0,
3 : 0,