61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
# ITerativ GmbH
|
|
# http://www.iterativ.ch/
|
|
#
|
|
# Copyright (c) 2020 ITerativ GmbH. All rights reserved.
|
|
#
|
|
# Created on 30.01.20
|
|
# @author: chrigu <christian.cueni@iterativ.ch>
|
|
from django.conf import settings
|
|
|
|
from core.hep_client import HepClient, HepClientException
|
|
from core.models import AdminData
|
|
from registration.models import License
|
|
from users.models import User, UserRole, Role, SchoolClass
|
|
|
|
|
|
def handle_user_and_verify_products(user_data):
|
|
|
|
hep_client = HepClient()
|
|
|
|
try:
|
|
user = User.objects.get(hep_id=user_data['id'])
|
|
except User.DoesNotExist:
|
|
user = User.objects.create_user_from_hep(user_data)
|
|
|
|
# todo check if email has changed, any impact on our system?
|
|
|
|
try:
|
|
if not hep_client.is_email_verified(user_data):
|
|
return user, 'email_not_verified'
|
|
except HepClientException:
|
|
return user, 'unknown_error'
|
|
|
|
try:
|
|
license = License.objects.get(licensee=user)
|
|
# Todo how handle invalid license? Cron Job? How to select correct license? Save all licenses? History?
|
|
except License.DoesNotExist:
|
|
try:
|
|
admin_token = AdminData.objects.get_admin_token()
|
|
product = hep_client.myskillbox_product_for_customer(admin_token, user.hep_id)
|
|
except HepClientException:
|
|
return user, 'unknown_error'
|
|
|
|
if product:
|
|
license = License.objects.create_license_for_role(user, product['activated'],
|
|
product['raw'], product['edition'])
|
|
# todo handle no license case
|
|
else:
|
|
return user, 'no_valid_license'
|
|
|
|
UserRole.objects.create_role_for_user(user, license.for_role.key)
|
|
|
|
if license.for_role.key == Role.objects.TEACHER_KEY:
|
|
SchoolClass.create_default_group_for_teacher(user)
|
|
|
|
if not license.is_valid():
|
|
return user, 'no_valid_license'
|
|
|
|
return user, None
|