[Bf-blender-cvs] [ed7ce9251d3] asset-engine: Fix tag filtering, move repo reading to AmberDataRepository class, cleanup some uuid utils.
Bastien Montagne
noreply at git.blender.org
Mon Aug 21 17:38:08 CEST 2017
Commit: ed7ce9251d3e2cf0b27b1de661ebbf21564e178f
Author: Bastien Montagne
Date: Mon Aug 21 16:28:23 2017 +0200
Branches: asset-engine
https://developer.blender.org/rBed7ce9251d3e2cf0b27b1de661ebbf21564e178f
Fix tag filtering, move repo reading to AmberDataRepository class, cleanup some uuid utils.
===================================================================
M release/scripts/startup/bl_operators/amber/engine.py
M release/scripts/startup/bl_operators/amber/repository.py
M release/scripts/startup/bl_operators/amber/ui.py
M release/scripts/startup/bl_operators/amber/utils.py
===================================================================
diff --git a/release/scripts/startup/bl_operators/amber/engine.py b/release/scripts/startup/bl_operators/amber/engine.py
index 17df5157cff..e8d95a400a8 100644
--- a/release/scripts/startup/bl_operators/amber/engine.py
+++ b/release/scripts/startup/bl_operators/amber/engine.py
@@ -43,6 +43,11 @@ import random
from . import (repository, utils)
+from .repository import (
+ AmberDataRepository,
+ AmberDataRepositoryPG,
+ )
+
#############
# Amber Jobs.
@@ -55,21 +60,6 @@ class AmberJob:
class AmberJobList(AmberJob):
- @staticmethod
- def ls_repo(db_path):
- repo = None
- with open(db_path, 'r') as db_f:
- repo = json.load(db_f)
- if isinstance(repo, dict):
- repo_ver = repo.get(utils.AMBER_DBK_VERSION, "")
- if repo_ver != "1.0.1":
- # Unsupported...
- print("WARNING: unsupported Amber repository version '%s'." % repo_ver)
- repo = None
- else:
- repo = None
- return repo
-
@staticmethod
def ls(path):
repo = None
@@ -77,7 +67,7 @@ class AmberJobList(AmberJob):
tmp = os.listdir(path)
if utils.AMBER_DB_NAME in tmp:
# That dir is an Amber repo, we only list content define by our amber 'db'.
- repo = AmberJobList.ls_repo(os.path.join(path, utils.AMBER_DB_NAME))
+ repo = AmberDataRepository.ls_repo(os.path.join(path, utils.AMBER_DB_NAME))
if repo is None:
ret += tmp
#~ time.sleep(0.1) # 100% Artificial Lag (c)
@@ -211,13 +201,13 @@ class AssetEngineAmber(AssetEngine):
bl_label = "Amber"
bl_version = (0 << 16) + (0 << 8) + 4 # Usual maj.min.rev version scheme...
- repository_pg = PointerProperty(name="Repository", type=repository.AmberDataRepositoryPG, description="Current Amber repository")
+ repository_pg = PointerProperty(name="Repository", type=AmberDataRepositoryPG, description="Current Amber repository")
def __init__(self):
self.executor = futures.ThreadPoolExecutor(8) # Using threads for now, if issues arise we'll switch to process.
self.jobs = {}
self.repos = {}
- self.repository = repository.AmberDataRepository()
+ self.repository = AmberDataRepository()
self.reset()
@@ -439,7 +429,7 @@ class AssetEngineAmber(AssetEngine):
assert(repo_uuid in utils.amber_repos)
repo = self.repos.get(repo_uuid, None)
if repo is None:
- repo = self.repos[repo_uuid] = AmberJobList.ls_repo(os.path.join(utils.amber_repos[repo_uuid], utils.AMBER_DB_NAME))
+ repo = self.repos[repo_uuid] = AmberDataRepository.ls_repo(os.path.join(utils.amber_repos[repo_uuid], utils.AMBER_DB_NAME))
self.repository.from_dict(repo, utils.amber_repos[repo_uuid])
euuid = uuid.uuid_asset[:]
vuuid = uuid.uuid_variant[:]
@@ -500,21 +490,21 @@ class AssetEngineAmber(AssetEngine):
file_type.add('BLENLIB')
blen_type = params.filter_id
- for ent in self.repository.assets.values():
- if filter_search and filter_search not in (ent.name + ent.description):
+ for asset in self.repository.assets.values():
+ if filter_search and filter_search not in (asset.name + asset.description):
continue
if params.use_filter:
- if ent.file_type not in file_type:
+ if asset.file_type not in file_type:
continue
- if params.use_library_browsing and ent.blender_type not in blen_type:
+ if params.use_library_browsing and asset.blender_type not in blen_type:
continue
if tags_incl or tags_excl:
- tags = set((t.name for t in ent.tags))
+ tags = set(asset.tags)
if tags_incl and ((tags_incl & tags) != tags_incl):
continue
if tags_excl and (tags_excl & tags):
continue
- self.sortedfiltered.append((ent.uuid[:], ent))
+ self.sortedfiltered.append((asset.uuid[:], asset))
elif self.dirs:
for path, size, timestamp, uuid in self.dirs:
diff --git a/release/scripts/startup/bl_operators/amber/repository.py b/release/scripts/startup/bl_operators/amber/repository.py
index 64ff2e67eed..95392a1f478 100644
--- a/release/scripts/startup/bl_operators/amber/repository.py
+++ b/release/scripts/startup/bl_operators/amber/repository.py
@@ -443,6 +443,26 @@ class AmberDataRepository:
self.tags.clear()
self.assets.clear()
+ @classmethod
+ def ls_repo(cls, db_path):
+ repo_dict = None
+ with open(db_path, 'r') as db_f:
+ repo_dict = json.load(db_f)
+ if isinstance(repo_dict, dict):
+ repo_ver = repo_dict.get(utils.AMBER_DBK_VERSION, "")
+ if repo_ver != cls.VERSION:
+ # Unsupported...
+ print("WARNING: unsupported Amber repository version '%s'." % repo_ver)
+ repo_dict = None
+ else:
+ repo_dict = None
+ return repo_dict
+
+ @classmethod
+ def wrt_repo(db_path, repo_dict):
+ with open(db_path, 'w') as db_f:
+ json.dump(repo_dict, db_f)
+
def from_dict(self, repo_dict, root_path):
self.clear()
diff --git a/release/scripts/startup/bl_operators/amber/ui.py b/release/scripts/startup/bl_operators/amber/ui.py
index 2247195fea6..04098e3070a 100644
--- a/release/scripts/startup/bl_operators/amber/ui.py
+++ b/release/scripts/startup/bl_operators/amber/ui.py
@@ -96,7 +96,7 @@ class AMBER_PT_tags(Panel, AmberPanel):
def draw(self, context):
ae = context.space_data.asset_engine
- self.layout.template_list("AMBER_UL_tags_filter", "", ae.repository, "tags", ae.repository, "tag_index_active")
+ self.layout.template_list("AMBER_UL_tags_filter", "", ae.repository_pg, "tags", ae.repository_pg, "tag_index_active")
#######################
diff --git a/release/scripts/startup/bl_operators/amber/utils.py b/release/scripts/startup/bl_operators/amber/utils.py
index e9b5a3acd30..8f669de6347 100644
--- a/release/scripts/startup/bl_operators/amber/utils.py
+++ b/release/scripts/startup/bl_operators/amber/utils.py
@@ -83,16 +83,7 @@ def uuid_revision_gen(used_uuids, variant_uuid, number, size, time):
def uuid_unpack_bytes(uuid_bytes):
- return struct.unpack("!iiii", uuid_bytes.ljust(16, b'\0'))
-
-
-def uuid_unpack_old(uuid_hexstr):
- return uuid_unpack_bytes(binascii.unhexlify(uuid_hexstr))
-
-
-def uuid_unpack_asset(uuid_repo_hexstr, uuid_asset_hexstr):
- return uuid_unpack_bytes(binascii.unhexlify(uuid_repo_hexstr).ljust(8, b'\0') +
- binascii.unhexlify(uuid_asset_hexstr).ljust(8, b'\0'))
+ return struct.unpack("!iiii", uuid_bytes.rjust(16, b'\0'))
def uuid_unpack(uuid_hexstr):
More information about the Bf-blender-cvs
mailing list