vbv/server/vbv_lernwelt/importer/services.py

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