Beispiel #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
Beispiel #2
0
 def test_get_working_folder_path_with_software(self):
     path = file_tree_service.get_working_folder_path(
         self.task.serialize(), software=self.software.serialize())
     self.assertEqual(
         path,
         "/simple/productions/cosmos_landromat/assets/props/tree/shaders/"
         "blender")
Beispiel #3
0
 def test_get_working_folder_path_shot(self):
     path = file_tree_service.get_working_folder_path(
         self.shot_task.serialize(), software=self.software_max.serialize())
     self.assertEqual(
         path,
         "/simple/productions/cosmos_landromat/shots/s01/p01/animation/"
         "3dsmax")
Beispiel #4
0
 def test_get_working_folder_path_with_separator(self):
     path = file_tree_service.get_working_folder_path(
         self.shot_task.serialize(),
         software=self.software_max.serialize(),
         sep="\\")
     self.assertEqual(
         path, "/simple\\productions\\cosmos_landromat\\shots\\s01\\p01\\"
         "animation\\3dsmax")
Beispiel #5
0
    def post(self, project_id):
        project_id = self.get_arguments()

        project = projects_service.get_project(project_id)

        shots = shots_service.get_shots_and_tasks({"project_id": project_id})

        assets = assets_service.get_assets_and_tasks(
            {"project_id": project_id})

        paths = []

        for shot in shots:
            tasks = shot['tasks']
            for task in tasks:
                path = file_tree_service.get_working_folder_path(task)
                paths.append(path)

                path = file_tree_service.get_working_folder_path(
                    task, mode="components_output")
                paths.append(path)

                path = file_tree_service.get_working_folder_path(
                    task, mode="output_output")
                paths.append(path)

                path = file_tree_service.get_working_folder_path(
                    task, mode="slated_output")
                paths.append(path)

        for asset in assets:
            tasks = asset['tasks']
            for task in tasks:
                path = file_tree_service.get_working_folder_path(task)
                paths.append(path)

                path = file_tree_service.get_working_folder_path(
                    task, mode="components_output")
                paths.append(path)

                path = file_tree_service.get_working_folder_path(
                    task, mode="output_output")
                paths.append(path)

                path = file_tree_service.get_working_folder_path(
                    task, mode="slated_output")
                paths.append(path)

        try:
            for path in paths:
                if not os.path.exists(os.path.dirname(path)):
                    os.makedirs(os.path.dirname(path))
        except Exception as e:
            pass

        return paths, 200
Beispiel #6
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)
Beispiel #7
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}
Beispiel #8
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