Revision 0905ccd2 astakos/im/util.py

b/astakos/im/util.py
31 31
# interpreted as representing official policies, either expressed
32 32
# or implied, of GRNET S.A.
33 33

  
34
import logging
35

  
34 36
from datetime import tzinfo, timedelta
37
from django.conf import settings
38
from django.template import RequestContext
35 39

  
40
from astakos.im.models import AstakosUser
36 41

  
37 42
class UTC(tzinfo):
38 43
   def utcoffset(self, dt):
......
48 53
   """Return an ISO8601 date string that includes a timezone."""
49 54

  
50 55
   return d.replace(tzinfo=UTC()).isoformat()
56

  
57
def get_or_create_user(username, realname=None, first_name=None, last_name=None, affiliation=None, level=0, provider='local', password=None, email=None):
58
    """Find or register a user into the internal database
59
       and issue a token for subsequent requests.
60
    """
61
    
62
    user, created = AstakosUser.objects.get_or_create(username=username,
63
        defaults={
64
            'is_active': False,
65
            'password':password,
66
            'email':email,
67
            'affiliation':affiliation,
68
            'level':level,
69
            'invitations':settings.INVITATIONS_PER_LEVEL[level],
70
            'provider':provider,
71
            'realname':realname,
72
            'first_name':first_name,
73
            'last_name':last_name
74
        })
75
    if created:
76
        user.renew_token()
77
        user.save()
78
        logging.info('Created user %s', user)
79
    
80
    return user
81

  
82
def get_context(request, extra_context={}, **kwargs):
83
    if not extra_context:
84
        extra_context = {}
85
    extra_context.update(kwargs)
86
    return RequestContext(request, extra_context)

Also available in: Unified diff