From 7cb1e806af798fd63a8076a1564e5d7433e0b46d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 6 Nov 2014 14:42:38 +0100 Subject: [PATCH] paths are now relative to project root when checked out --- client/cli/bam.py | 2 +- modules/blendfile_pack.py | 13 +++++++++++-- webservice/bam/application/__init__.py | 3 ++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/client/cli/bam.py b/client/cli/bam.py index 328f668..8c9d6d5 100755 --- a/client/cli/bam.py +++ b/client/cli/bam.py @@ -323,7 +323,7 @@ class bam_utils: paths_modified[fn_rel] = fn_abs # TESTING ONLY - fn_abs_remote = os.path.join("/shared/software/bam/storage/bam_test", fn_rel) + fn_abs_remote = os.path.join("/pro", fn_rel) paths_remap_subset_add[fn_rel] = fn_abs_remote del paths_used diff --git a/modules/blendfile_pack.py b/modules/blendfile_pack.py index 7b3e101..e9d4530 100755 --- a/modules/blendfile_pack.py +++ b/modules/blendfile_pack.py @@ -34,6 +34,7 @@ del os, sys, path def pack(blendfile_src, blendfile_dst, mode='FILE', + paths_remap_relbase=None, deps_remap=None, paths_remap=None, paths_uuid=None, # yield reports report=None): @@ -166,11 +167,19 @@ def pack(blendfile_src, blendfile_dst, mode='FILE', # store path mapping {dst: src} if paths_remap is not None: + + if paths_remap_relbase is not None: + relbase = lambda fn: os.path.relpath(fn, paths_remap_relbase) + else: + relbase = lambda fn: fn + for src, dst in path_copy_files: # TODO. relative to project-basepath - paths_remap[os.path.relpath(dst, base_dir_dst).decode('utf-8')] = src.decode('utf-8') + paths_remap[os.path.relpath(dst, base_dir_dst).decode('utf-8')] = relbase(src).decode('utf-8') # main file XXX, should have better way! - paths_remap[os.path.basename(blendfile_src).decode('utf-8')] = blendfile_src.decode('utf-8') + paths_remap[os.path.basename(blendfile_src).decode('utf-8')] = relbase(blendfile_src).decode('utf-8') + + del relbase if paths_uuid is not None: from bam_utils.system import sha1_from_file diff --git a/webservice/bam/application/__init__.py b/webservice/bam/application/__init__.py index 5d39959..bcd9bf6 100644 --- a/webservice/bam/application/__init__.py +++ b/webservice/bam/application/__init__.py @@ -265,7 +265,7 @@ class FileAPI(Resource): return jsonify(message='File not allowed') @staticmethod - def pack_fn(filepath, filepath_zip, base_path, report): + def pack_fn(filepath, filepath_zip, paths_remap_relbase, report): import os assert(os.path.exists(filepath) and not os.path.isdir(filepath)) @@ -281,6 +281,7 @@ class FileAPI(Resource): try: yield from blendfile_pack.pack( filepath.encode('utf-8'), filepath_zip.encode('utf-8'), mode='ZIP', + paths_remap_relbase=paths_remap_relbase.encode('utf-8'), # TODO(cam) this just means the json is written in the zip deps_remap=deps_remap, paths_remap=paths_remap, paths_uuid=paths_uuid, report=report)