utils/scripts/course_template_mapping.py (51 lines of code) (raw):
"""
Script to create teacher course template enrollment mapping
from instructional designer
"""
# disabling for linting to pass
# pylint: disable = broad-exception-raised, broad-except
import os
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
from common.models import CourseTemplateEnrollmentMapping, CourseTemplate, User
from common.utils.errors import ResourceNotFoundException
DATABASE_PREFIX = os.getenv("DATABASE_PREFIX", "")
def create_course_template_enrollment_mapping(teacher, course_template):
"""save course template enrollment mapping"""
user = User.find_by_email(teacher.lower())
if user:
if not CourseTemplateEnrollmentMapping.find_enrolled_active_record(
course_template.key, user.id):
try:
course_enrollment_mapping = CourseTemplateEnrollmentMapping()
course_enrollment_mapping.course_template = course_template
course_enrollment_mapping.role = "faculty"
course_enrollment_mapping.user = User.find_by_user_id(user.user_id)
course_enrollment_mapping.status = "active"
course_enrollment_mapping.save()
print(f"Instructional designer {teacher} is enrrolled in" +
f" {course_template.id} course template using" +
f" this {course_enrollment_mapping.id} mapping")
except ResourceNotFoundException as re:
print(str(re))
except Exception as e:
print(str(e))
else:
print("Mapping already exsists for this user" +
f" {teacher} in this course template {course_template.id}")
else:
print(f"User not found by this {teacher} email." +
f" Course Template {course_template.id}")
def main():
print("Started Script")
# Use a service account.
cred = credentials.Certificate("service_creds.json")
firebase_admin.initialize_app(cred)
db = firestore.client()
collection_name = CourseTemplate.collection_name
enrollment_ref = db.collection(collection_name)
docs = enrollment_ref.stream()
for doc in docs:
course_template_dict = doc.to_dict()
if "instructional_designer" in course_template_dict.keys():
try:
course_template = CourseTemplate.find_by_id(doc.id)
create_course_template_enrollment_mapping(
course_template_dict["instructional_designer"], course_template)
except Exception as e:
print(e)
if __name__ == "__main__":
main()