def add_user_project(uid: str, project_name: str): try: user = User.objects(uid=uid).get() project_key = get_project_pKey(uid, project_name) if project_key not in user.projects: user.projects.append(project_key) user.save() except Exception as e: logging.error(e) raise DbError("user not found")
def update_project(project_data: dict, user_id: str): project_type = project_data.get(TYPE_AND_PORT).get(PROJECT_TYPE) encoded_zip = project_data.get(DATA_OF_ENCODED_PROJECT).get( ENCODED_PROJECT) project_root = project_data.get(DATA_OF_ENCODED_PROJECT).get(PROJECT_NAME) project_name = project_data.get(HEADER_DATA).get(TITLE) if project_type not in SUPPORTED_LANGUAGES: if project_type is None: project_type = 'None type' logging.error(project_type + " not supported") raise NotImplementedError(project_type + " not supported") if not is_user_exist(user_id): logging.error("user doesnt exist") raise DbError("User doesnt exist") try: zip_handler.base64_to_zip(encoded_zip, project_root + ".zip") zip_handler.unzip_file( os.path.join(os.path.sep, 'tmp', f"{project_root}.zip"), project_type) image = docker_client.create_image(project_name, project_type, user_id, project_root) _update_project_db(project_data, user_id) except BuildError or APIError as e: logging.error(e) raise ContainerError( " couldn't build image for project: " + project_name, e) except NameError as e: logging.error(e) raise ContainerError("title must not contain spaces") except DbError as e: logging.error(e) docker_client.remove_image(image.id) raise e except Exception as e: logging.error(e) raise e finally: zip_handler.remove_zip(project_root + ".zip") zip_handler.remove_unzipped_folder(project_type, project_root)
def get_project(pKey: str): try: return Project.objects(pKey=pKey).get() except Exception as e: logging.error(e) raise DbError("project not found")
def save_project(project: Project): try: project.save() except Exception as e: logging.error(e) raise DbError("Could'nt save project")
def delete_user(email: str): try: User.objects(email=email).get().delete() except DoesNotExist as e: raise DbError("user not found")
def get_user_by_email(email: str): try: return User.objects(email=email).get() except DoesNotExist as e: raise DbError("user with email address " + email + " does not exist")
def get_user_by_id(user_id: str): try: user_result = User.objects(uid=user_id).get() return user_result except DoesNotExist as e: raise DbError("user with id address " + user_id + " does not exist")
def save_user(user: User): try: return user.save() except NotUniqueError as e: raise DbError("User already exist")