Compare commits

..

5 Commits

Author SHA1 Message Date
ffa69f3f7c Bumped version to 1.16 2020-03-03 10:37:52 +01:00
e62e47d2ab Fixed Windows compatibility with Shaman URL handling 2020-03-03 10:37:44 +01:00
e32e75e3db Bumped version to 1.15 and marked as released in CHANGELOG 2019-12-12 10:42:08 +01:00
6fa5ab5481 Removed trailing period from property description
No functional changes.
2019-12-12 10:40:58 +01:00
379580de86 Don't create BAT pack when rendering file in job storage directory
When the to-be-rendered blend file is contained in the job storage
directory, it is now assumed that all files are already reachable by the
Flamenco Workers. This supports environments working directly on shared
storage.

This assumes that the paths are already correct for the Flamenco
Workers. No detection of missing files is done (as BAT doesn't run).
2019-10-25 13:34:34 +02:00
5 changed files with 60 additions and 4 deletions

View File

@@ -1,5 +1,16 @@
# Blender Cloud changelog
## Version 1.16 (2020-03-03)
- Fixed Windows compatibility issue with the handling of Shaman URLs.
## Version 1.15 (2019-12-12)
- Avoid creating BAT pack when the to-be-rendered file is already inside the job storage
directory. This assumes that the paths are already correct for the Flamenco Workers.
## Version 1.14 (2019-10-10)
- Upgraded BAT to 1.2 for missing smoke caches, compatibility with Blender 2.81, and some

View File

@@ -21,7 +21,7 @@
bl_info = {
'name': 'Blender Cloud',
"author": "Sybren A. Stüvel, Francesco Siddi, Inês Almeida, Antony Riakiotakis",
'version': (1, 14),
'version': (1, 16),
'blender': (2, 80, 0),
'location': 'Addon Preferences panel, and Ctrl+Shift+Alt+A anywhere for texture browser',
'description': 'Texture library browser and Blender Sync. Requires the Blender ID addon '

View File

@@ -243,7 +243,7 @@ class BlenderCloudPreferences(AddonPreferences):
name='Relative Paths Only',
description='When enabled, only assets that are referred to with a relative path are '
'packed, and assets referred to by an absolute path are excluded from the '
'BAT pack. When disabled, all assets are packed.',
'BAT pack. When disabled, all assets are packed',
default=False,
update=project_specific.store,
)

View File

@@ -240,6 +240,40 @@ def guess_output_file_extension(output_format: str, scene) -> str:
return '.' + container.lower()
def is_shaman_url(path_or_url: str) -> bool:
"""Check whether the given string is a Shaman URL.
:param path_or_url: A string that may represent a filesystem path or a URL.
May not be a pathlib.Path, as that would break URL notation on Windows.
"""
assert isinstance(path_or_url, str)
return any(path_or_url.startswith(scheme) for scheme in SHAMAN_URL_SCHEMES)
def is_file_inside_job_storage(prefs, current_file: typing.Union[str, Path]) -> bool:
"""Check whether current blend file is inside the storage path.
:return: True when 'current_file' is inside the Flamenco
job storage directory already. In this case it won't be
BAT-packed, as it's assumed the job storage dir is
accessible by the workers already.
"""
if isinstance(current_file, str):
# Shaman URLs are always remote, so the current file cannot be in there.
if is_shaman_url(current_file):
return False
current_file = Path(current_file)
flamenco_job_file_path = Path(prefs.flamenco_job_file_path).absolute().resolve()
current_file = current_file.absolute().resolve()
try:
current_file.relative_to(flamenco_job_file_path)
except ValueError:
return False
return True
@compatibility.convert_properties
class FLAMENCO_OT_render(async_loop.AsyncModalOperatorMixin,
pillar.AuthenticatedPillarOperatorMixin,
@@ -568,7 +602,7 @@ class FLAMENCO_OT_render(async_loop.AsyncModalOperatorMixin,
self.log.debug('projdir: %s', projdir)
if any(prefs.flamenco_job_file_path.startswith(scheme) for scheme in SHAMAN_URL_SCHEMES):
if is_shaman_url(prefs.flamenco_job_file_path):
endpoint, _ = bat_interface.parse_shaman_endpoint(prefs.flamenco_job_file_path)
self.log.info('Sending BAT pack to Shaman at %s', endpoint)
try:
@@ -596,6 +630,11 @@ class FLAMENCO_OT_render(async_loop.AsyncModalOperatorMixin,
outfile = PurePath('{shaman}') / outfile
return None, outfile, missing_sources
if is_file_inside_job_storage(prefs, filepath):
# The blend file is contained in the job storage path, no need to copy anything.
# Since BAT doesn't run, we also don't know whether files are missing.
return filepath.parent, filepath, []
# Create a unique directory that is still more or less identifyable.
# This should work better than a random ID.
unique_dir = '%s-%s-%s' % (datetime.now().isoformat('-').replace(':', ''),
@@ -1043,6 +1082,12 @@ class FLAMENCO_PT_render(bpy.types.Panel, FlamencoPollMixin):
text='', icon='DISK_DRIVE')
props.path = prefs.flamenco_job_file_path
if is_file_inside_job_storage(prefs, context.blend_data.filepath):
# File is contained in the job storage path, no need to copy anything.
paths_layout.label(text='Current file already in job storage path; '
'not going to create BAT pack.')
render_output = render_output_path(context)
if render_output is None:
paths_layout.label(text='Unable to render with Flamenco, outside of project directory.')

View File

@@ -236,7 +236,7 @@ setup(
'wheels': BuildWheels},
name='blender_cloud',
description='The Blender Cloud addon allows browsing the Blender Cloud from Blender.',
version='1.14',
version='1.16',
author='Sybren A. Stüvel',
author_email='sybren@stuvel.eu',
packages=find_packages('.'),