Esempio n. 1
0
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")
Esempio n. 2
0
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)
Esempio n. 3
0
def get_project(pKey: str):
    try:
        return Project.objects(pKey=pKey).get()
    except Exception as e:
        logging.error(e)
        raise DbError("project not found")
Esempio n. 4
0
def save_project(project: Project):
    try:
        project.save()
    except Exception as e:
        logging.error(e)
        raise DbError("Could'nt save project")
Esempio n. 5
0
def delete_user(email: str):
    try:
        User.objects(email=email).get().delete()
    except DoesNotExist as e:
        raise DbError("user not found")
Esempio n. 6
0
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")
Esempio n. 7
0
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")
Esempio n. 8
0
def save_user(user: User):
    try:
        return user.save()
    except NotUniqueError as e:
        raise DbError("User already exist")