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