Exemple #1
0
    def post(self, task_id):
        (
            name,
            mode,
            software_id,
            comment,
            revision,
            separator,
        ) = self.get_arguments()

        try:
            task = tasks_service.get_task(task_id)
            user_service.check_project_access(task["project_id"])

            software = files_service.get_software(software_id)
            is_revision_set_by_user = revision != 0
            if not is_revision_set_by_user:
                revision = files_service.get_next_working_file_revision(
                    task_id, name
                )
            file_path = file_tree_service.get_working_folder_path(
                task, mode=mode, software=software, name=name, sep=separator,
                revision=revision
            )
            file_name = file_tree_service.get_working_file_name(
                task, mode=mode, revision=revision, software=software, name=name
            )
        except MalformedFileTreeException as exception:
            return (
                {"message": str(exception), "received_data": request.json},
                400,
            )

        return {"path": file_path, "name": file_name}, 200
Exemple #2
0
 def build_path(self, task, name, revision, software, sep, mode):
     folder_path = file_tree_service.get_working_folder_path(
         task, name=name, software=software, mode=mode
     )
     file_name = file_tree_service.get_working_file_name(
         task, name=name, software=software, revision=revision, mode=mode
     )
     return "%s%s%s" % (folder_path, sep, file_name)
Exemple #3
0
    def get_preview_path(self, task, name, revision):
        try:
            folder_path = file_tree_service.get_working_folder_path(
                task, name=name, mode="preview", revision=revision)
            file_name = file_tree_service.get_working_file_name(
                task, name=name, mode="preview", revision=revision)
        except MalformedFileTreeException:  # No template for preview files.
            return {"folder_path": "", "file_name": ""}

        return {"folder_path": folder_path, "file_name": file_name}
Exemple #4
0
    def post(self, task_id):
        (
            name,
            mode,
            software_id,
            comment,
            revision,
            separator
        ) = self.get_arguments()

        try:
            task = tasks_service.get_task(task_id)
            if not permissions.has_manager_permissions():
                user_service.check_has_task_related(task["project_id"])

            software = files_service.get_software(software_id)
            is_revision_set_by_user = revision != 0
            if not is_revision_set_by_user:
                revision = files_service.get_next_working_file_revision(
                    task_id,
                    name
                )
            file_path = file_tree_service.get_working_folder_path(
                task,
                mode=mode,
                software=software,
                name=name,
                sep=separator
            )
            file_name = file_tree_service.get_working_file_name(
                task,
                mode=mode,
                revision=revision,
                software=software,
                name=name
            )
        except MalformedFileTreeException:
            return {
                "error":
                    "Tree is not properly written, check modes and variables",
                "received_data": request.json,
            }, 400

        return {"path": file_path, "name": file_name}, 200
 def test_get_working_file_name_shot(self):
     file_name = file_tree_service.get_working_file_name(
         self.shot_task.serialize(),
         revision=3
     )
     self.assertEquals(file_name, "cosmos_landromat_s01_p01_animation_v003")
 def test_get_working_file_name_asset(self):
     file_name = file_tree_service.get_working_file_name(
         self.task.serialize(),
         revision=3
     )
     self.assertEquals(file_name, "cosmos_landromat_props_tree_shaders_v003")
Exemple #7
0
    def post(self, task_id):
        person_id = self.get_arguments()
        gunicorn_logger.log(logging.ERROR, task_id)
        gunicorn_logger.log(logging.ERROR, person_id)
        task = tasks_service.get_task(task_id)

        working_file_name = re.sub(
            r'_v\d\d\d.\w\w\w', '',
            file_tree_service.get_working_file_name(task))
        gunicorn_logger.log(logging.ERROR, working_file_name)
        next_revision = files_service.get_next_working_revision(
            task_id, working_file_name)
        working_file_path = file_tree_service.get_working_file_path(
            task, mode="working", revision=next_revision)
        working_file = files_service.create_new_working_revision(
            task_id, person_id, "edfd3a91-4d55-47a4-ae15-f2123c07edf6",
            working_file_name, working_file_path)
        comment = tasks_service.create_comment(
            task_id, '4f4256d0-72d9-4de5-bf71-a08209b56750', person_id,
            "Version %s created" % next_revision)
        preview_file = tasks_service.add_preview_file_to_comment(
            comment['id'], person_id, task_id, revision=next_revision)
        entities_service.update_entity_preview(task['entity_id'],
                                               preview_file['id'])

        output_preview_file_path = file_tree_service.get_working_file_path(
            task, mode="preview_output", revision=next_revision)
        output_slated_file_path = file_tree_service.get_working_file_path(
            task, mode="slated_output", revision=next_revision, frame="0001")

        movies_preview_file_path = '/opt/zou/previews/movies/previews/' + preview_file[
            'id'][:3] + '/' + preview_file['id'][3:6] + '/'
        pictures_original_file_path = '/opt/zou/previews/pictures/originals/' + preview_file[
            'id'][:3] + '/' + preview_file['id'][3:6] + '/'
        pictures_preview_file_path = '/opt/zou/previews/pictures/previews/' + preview_file[
            'id'][:3] + '/' + preview_file['id'][3:6] + '/'
        pictures_thumbnail_file_path = '/opt/zou/previews/pictures/thumbnails/' + preview_file[
            'id'][:3] + '/' + preview_file['id'][3:6] + '/'

        if not os.path.exists(movies_preview_file_path):
            os.makedirs(movies_preview_file_path)
        if not os.path.exists(pictures_original_file_path):
            os.makedirs(pictures_original_file_path)
        if not os.path.exists(pictures_preview_file_path):
            os.makedirs(pictures_preview_file_path)
        if not os.path.exists(pictures_thumbnail_file_path):
            os.makedirs(pictures_thumbnail_file_path)

        if not os.path.exists(os.path.dirname(working_file_path)):
            os.makedirs(os.path.dirname(working_file_path))
        file = open(working_file_path, "w")
        file.close()

        os.symlink(output_preview_file_path,
                   movies_preview_file_path + preview_file['id'])
        os.symlink(output_slated_file_path,
                   pictures_original_file_path + preview_file['id'])
        os.symlink(output_slated_file_path,
                   pictures_preview_file_path + preview_file['id'])
        os.symlink(output_slated_file_path,
                   pictures_thumbnail_file_path + preview_file['id'])

        return working_file, 200