in microservices/lms/src/routes/course_template.py [0:0]
def add_instructional_designer(
course_template_id: str, request: Request,
instructional_designer: AddInstructionalDesigner):
"""_summary_
Args:
course_template_id (str): _description_
request (Request): _description_
instructional_designer (AddInstructionalDesigner): _description_
Returns:
_type_: _description_
"""
try:
headers = {"Authorization": request.headers.get("Authorization")}
course_template = CourseTemplate.find_by_id(course_template_id)
instructional_designer = instructional_designer.email
if not check_instructional_designer_can_enroll(instructional_designer,
headers, course_template):
raise Conflict(
f"Instructional Designer {instructional_designer} is already" +
f" exists in this Course template {course_template.id}")
invitation_object = classroom_crud.invite_user(
course_template.classroom_id, instructional_designer, "TEACHER")
classroom_crud.acceept_invite(invitation_object["id"],
instructional_designer)
user_profile = classroom_crud.\
get_user_profile_information(instructional_designer)
data = {
"first_name": user_profile["name"]["givenName"],
"last_name": user_profile["name"]["familyName"],
"email": instructional_designer,
"user_type": "faculty",
"user_groups": [],
"status": "active",
"is_registered": True,
"failed_login_attempts_count": 0,
"access_api_docs": False,
"gaia_id": user_profile["id"],
"photo_url": user_profile["photoUrl"]
}
status = "active"
user_dict = common_service.create_teacher(headers, data)
course_template_enrollment = CourseTemplateEnrollmentMapping()
course_template_enrollment.course_template = course_template
course_template_enrollment.user = User.find_by_user_id(
user_dict["user_id"])
course_template_enrollment.status = status
course_template_enrollment.role = "faculty"
course_template_enrollment.save()
list_enrollment_mapping = CourseTemplateEnrollmentMapping\
.fetch_all_by_course_template(course_template.key)
list_instructional_designers = [
i.user.email for i in list_enrollment_mapping
]
print("list of instructional designer")
rows = [{
"courseTemplateId": course_template_id,
"classroomId": course_template.classroom_id,
"name": course_template.name,
"description": course_template.description,
"timestamp": datetime.datetime.utcnow(),
"instructionalDesigners": list_instructional_designers
}]
insert_rows_to_bq(rows=rows,
dataset=BQ_DATASET,
table_name=BQ_TABLE_DICT["BQ_COLL_COURSETEMPLATE_TABLE"])
return {
"message": ("Successfully Added the Instructional " +
f"Designer with email {instructional_designer}"),
"data":
course_template_enrollment_instructional_designer_model(
course_template_enrollment)
}
except HttpError as hte:
Logger.error(hte)
raise ClassroomHttpException(status_code=hte.resp.status,
message=str(hte)) from hte
except Conflict as conflict:
Logger.error(conflict)
err = traceback.format_exc().replace("\n", " ")
Logger.error(err)
raise Conflict(str(conflict)) from conflict
except ResourceNotFoundException as re:
raise ResourceNotFound(str(re)) from re
except Exception as e:
Logger.error(e)
raise InternalServerError(str(e)) from e