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()