63 lines
1.5 KiB
Python
63 lines
1.5 KiB
Python
from typing import Dict, Any
|
|
|
|
from vbv_lernwelt.core.models import User
|
|
from vbv_lernwelt.course.models import Course, CourseSession
|
|
|
|
|
|
def create_or_update_user(
|
|
email: str, first_name: str = "", last_name: str = "", sso_id: str = None
|
|
):
|
|
user = None
|
|
if sso_id:
|
|
user_qs = User.objects.filter(sso_id=sso_id)
|
|
if user_qs.exists():
|
|
user = user_qs.first()
|
|
|
|
if not user:
|
|
user_qs = User.objects.filter(email=email)
|
|
if user_qs.exists():
|
|
user = user_qs.first()
|
|
|
|
if not user:
|
|
# create user
|
|
user = User(sso_id=sso_id, email=email, username=email)
|
|
|
|
user.email = email
|
|
user.sso_id = sso_id
|
|
user.username = email
|
|
user.first_name = first_name
|
|
user.last_name = last_name
|
|
user.set_unusable_password()
|
|
user.save()
|
|
|
|
return user
|
|
|
|
|
|
def create_or_update_course_session(course: Course, data: Dict[str, Any]):
|
|
"""
|
|
:param data: the following keys are required to process the data: Generation, Region, Klasse
|
|
:return:
|
|
"""
|
|
|
|
# TODO: validation
|
|
generation = str(data["Generation"]).strip()
|
|
region = data["Region"].strip()
|
|
group = data["Klasse"].strip()
|
|
import_id = data["ID"].strip()
|
|
|
|
title = f"{region} {generation} {group}"
|
|
|
|
cs, _created = CourseSession.objects.get_or_create(
|
|
import_id=import_id, course=course
|
|
)
|
|
|
|
cs.generation = generation
|
|
cs.region = region
|
|
cs.group = group
|
|
cs.import_id = import_id
|
|
|
|
cs.additional_json_data["import_data"] = data
|
|
cs.save()
|
|
|
|
return cs
|