Découpler un peu les chercheurs et l'authentification Django
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / chercheurs / utils.py
1 # coding: utf-8
2
3 import re
4 from django.contrib.auth.models import User
5
6 def get_django_user_for_email(email):
7 """Retourne un utilisateur Django avec le courriel donné.
8
9 S'il y a déjà un utilisateur avec ce courriel, on s'assure qu'il est activé.
10
11 Sinon, on crée un nouvel utilisateur."""
12 candidates = User.objects.filter(email=email)
13 if candidates.count() > 0:
14 user = candidates[0]
15 if not user.is_active:
16 user.is_active = True
17 user.save()
18 else:
19 username = email.split('@')[0]
20 username = re.sub('\W', '_', username)[:30]
21 i = 1
22 while User.objects.filter(username=username).count() > 0:
23 suffix = '_' + str(i)
24 username = username[:30-len(suffix)] + suffix
25 i += 1
26 # XXX: possible race condition here...
27 user = User.objects.create_user(username, email)
28 user.save()
29 return user