Allow beta users to keep data after hep registration

This commit is contained in:
Christian Cueni 2020-05-06 08:03:51 +02:00
parent 490ce15db2
commit 9e940e31d8
2 changed files with 18 additions and 7 deletions

View File

@ -72,14 +72,18 @@ class RoleManager(models.Manager):
class UserRoleManager(models.Manager): class UserRoleManager(models.Manager):
def create_role_for_user(self, user, role_key): def get_or_create_role_for_user(self, user, role_key):
from users.models import Role from users.models import Role
try: try:
role = Role.objects.get(key=role_key) role = Role.objects.get(key=role_key)
except Role.DoesNotExist: except Role.DoesNotExist:
return None return None
return self._create_user_role(user, role) try:
user_role = self.model.objects.get(role=role, user=user)
return user_role
except self.model.DoesNotExist:
return self._create_user_role(user, role)
def _create_user_role(self, user, role): def _create_user_role(self, user, role):
user_role = self.model(user=user, role=role) user_role = self.model(user=user, role=role)
@ -104,8 +108,13 @@ class UserManager(DjangoUserManager):
return user return user
def create_user_from_hep(self, user_data): def create_user_from_hep(self, user_data):
user = self._create_user_with_random_password_no_save( try:
user_data['firstname'], user_data['lastname'], user_data['email']) user = self.model.objects.get(email=user_data['email'])
user.set_unusable_password()
except self.model.DoesNotExist:
user = self._create_user_with_random_password_no_save( user_data['firstname'],
user_data['lastname'],
user_data['email'])
user.hep_id = user_data['id'] user.hep_id = user_data['id']
user.hep_group_id = user_data['group_id'] user.hep_group_id = user_data['group_id']

View File

@ -30,7 +30,6 @@ def handle_user_and_verify_products(user_data):
user = User.objects.create_user_from_hep(user_data) user = User.objects.create_user_from_hep(user_data)
# todo check if email has changed, any impact on our system? # todo check if email has changed, any impact on our system?
# todo handle local logins that are not local anymore
try: try:
if not hep_client.is_email_verified(user_data): if not hep_client.is_email_verified(user_data):
@ -72,8 +71,11 @@ def check_and_create_licenses(hep_client, user):
def create_role_for_user(user, role_key): def create_role_for_user(user, role_key):
UserRole.objects.create_role_for_user(user, role_key) UserRole.objects.get_or_create_role_for_user(user, role_key)
if role_key == Role.objects.TEACHER_KEY: if role_key == Role.objects.STUDENT_KEY:
return
if SchoolClass.objects.filter(users__in=[user]).count() == 0:
SchoolClass.create_default_group_for_teacher(user) SchoolClass.create_default_group_for_teacher(user)