auth_token = models.CharField('Authentication Token', max_length=32,
null=True, blank=True)
- auth_token_created = models.DateTimeField('Token creation date')
- auth_token_expires = models.DateTimeField('Token expiration date')
+ auth_token_created = models.DateTimeField('Token creation date',
+ null=True)
+ auth_token_expires = models.DateTimeField('Token expiration date',
+ null=True)
created = models.DateTimeField('Creation date')
updated = models.DateTimeField('Update date')
- def save(self, update_timestamps=True):
+ def save(self, update_timestamps=True, **kwargs):
if update_timestamps:
if not self.id:
self.created = datetime.now()
self.updated = datetime.now()
- super(User, self).save()
+ super(User, self).save(**kwargs)
def renew_token(self):
md5 = hashlib.md5()
from django.http import HttpResponseBadRequest
-from pithos.im.models import Invitation
-from pithos.im.target.util import get_user, prepare_response
+from pithos.im.models import User, Invitation
+from pithos.im.target.util import prepare_response
+
+
+INVITATIONS_PER_LEVEL = {
+ 0 : 10000,
+ 1 : 3,
+ 2 : 2,
+ 3 : 1,
+ 4 : 0}
def login(request):
invitation.save()
logging.info('Accepted invitation %s', invitation)
- return prepare_response(get_user(invitation.uniq, invitation.realname, 'Invitation'),
- request.GET.get('next'),
- 'renew' in request.GET)
+ user, created = User.objects.get_or_create(uniq=invitation.uniq)
+ if created:
+ user.realname = invitation.realname
+ user.affiliation = 'Invitation'
+ user.level = invitation.inviter.level + 1
+ user.invitations = INVITATIONS_PER_LEVEL.get(user.level, 0)
+ user.renew_token()
+ user.save()
+ logging.info('Created user %s', user)
+
+ next = request.GET.get('next')
+ return prepare_response(user, next, 'renew' in request.GET)
from django.http import HttpResponse
from django.utils.http import urlencode
-#from django.utils.cache import patch_vary_headers
from pithos.im.models import User
and issue a token for subsequent requests.
"""
- try:
- user = User.objects.get(uniq=uniq)
- except User.DoesNotExist:
- user = User()
- user.uniq = uniq
+ user, created = User.objects.get_or_create(uniq=uniq)
+ if created:
user.realname = realname
user.affiliation = affiliation
user.renew_token()