Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

Commit

Permalink
Merge pull request #3860 from pypeclub/feature/OP-3975_Flame-open-pro…
Browse files Browse the repository at this point in the history
…ject-files-permissisons
  • Loading branch information
jakubjezek001 authored Sep 21, 2022
2 parents 2a609b5 + f7033e7 commit 8e84a96
Showing 1 changed file with 36 additions and 1 deletion.
37 changes: 36 additions & 1 deletion openpype/hosts/flame/hooks/pre_flame_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class FlamePrelaunch(PreLaunchHook):
in environment var FLAME_SCRIPT_DIR.
"""
app_groups = ["flame"]
permissions = 0o777

wtc_script_path = os.path.join(
opflame.HOST_DIR, "api", "scripts", "wiretap_com.py")
Expand All @@ -38,6 +39,7 @@ def execute(self):
"""Hook entry method."""
project_doc = self.data["project_doc"]
project_name = project_doc["name"]
volume_name = _env.get("FLAME_WIRETAP_VOLUME")

# get image io
project_anatomy = self.data["anatomy"]
Expand Down Expand Up @@ -81,7 +83,7 @@ def execute(self):
data_to_script = {
# from settings
"host_name": _env.get("FLAME_WIRETAP_HOSTNAME") or hostname,
"volume_name": _env.get("FLAME_WIRETAP_VOLUME"),
"volume_name": volume_name,
"group_name": _env.get("FLAME_WIRETAP_GROUP"),
"color_policy": str(imageio_flame["project"]["colourPolicy"]),

Expand All @@ -99,8 +101,41 @@ def execute(self):

app_arguments = self._get_launch_arguments(data_to_script)

# fix project data permission issue
self._fix_permissions(project_name, volume_name)

self.launch_context.launch_args.extend(app_arguments)

def _fix_permissions(self, project_name, volume_name):
"""Work around for project data permissions
Reported issue: when project is created locally on one machine,
it is impossible to migrate it to other machine. Autodesk Flame
is crating some unmanagable files which needs to be opened to 0o777.
Args:
project_name (str): project name
volume_name (str): studio volume
"""
dirs_to_modify = [
"/usr/discreet/project/{}".format(project_name),
"/opt/Autodesk/clip/{}/{}.prj".format(volume_name, project_name),
"/usr/discreet/clip/{}/{}.prj".format(volume_name, project_name)
]

for dirtm in dirs_to_modify:
for root, dirs, files in os.walk(dirtm):
try:
for name in set(dirs) | set(files):
path = os.path.join(root, name)
st = os.stat(path)
if oct(st.st_mode) != self.permissions:
os.chmod(path, self.permissions)

except OSError as exc:
self.log.warning("Not able to open files: {}".format(exc))


def _get_flame_fps(self, fps_num):
fps_table = {
float(23.976): "23.976 fps",
Expand Down

0 comments on commit 8e84a96

Please sign in to comment.