[Bf-blender-cvs] [8ab97aa2ffe] asset-engine: Fix two bugs with Amber engine:

Bastien Montagne noreply at git.blender.org
Tue Sep 5 11:10:31 CEST 2017


Commit: 8ab97aa2ffe99dc3f261cc600e16c1809e1803b6
Author: Bastien Montagne
Date:   Tue Sep 5 11:08:16 2017 +0200
Branches: asset-engine
https://developer.blender.org/rB8ab97aa2ffe99dc3f261cc600e16c1809e1803b6

Fix two bugs with Amber engine:

* Reported number of assets was -1 in list_dir callback, incorrect and
would loop endlessly in case of empty repo!

* Conversion from main asset classes to their propertygroup
representations was not clearing extra entries in proplists.

===================================================================

M	release/scripts/startup/bl_operators/amber/engine.py
M	release/scripts/startup/bl_operators/amber/repository.py

===================================================================

diff --git a/release/scripts/startup/bl_operators/amber/engine.py b/release/scripts/startup/bl_operators/amber/engine.py
index 2cfca419ff8..8e5761261f7 100644
--- a/release/scripts/startup/bl_operators/amber/engine.py
+++ b/release/scripts/startup/bl_operators/amber/engine.py
@@ -230,7 +230,7 @@ class AssetEngineAmber(AssetEngine):
         self.repo = {}
         self.dirs = []
 
-        self.repository.clear()
+        self.repository.clear(self.repository_pg)
 
         self.sortedfiltered = []
 
@@ -388,10 +388,10 @@ class AssetEngineAmber(AssetEngine):
                 utils.amber_repos[uuid_repo] = (self.repository.name, self.root)  # XXX Not resistant to uuids collisions (use a set instead)...
                 utils.save_amber_repos()
             self.repos[uuid_repo] = self.repo
-            entries.nbr_entries = len(self.repository.assets)
+            entries.nbr_entries = len(self.repository.assets) + 1  # Don't forget the 'up' entry!
         else:
             entries.nbr_entries = len(self.dirs)
-            self.repository.clear()
+            self.repository.clear(self.repository_pg)
         return job_id
 
     def update_check(self, job_id, uuids):
diff --git a/release/scripts/startup/bl_operators/amber/repository.py b/release/scripts/startup/bl_operators/amber/repository.py
index d20f637af05..70604febaa0 100644
--- a/release/scripts/startup/bl_operators/amber/repository.py
+++ b/release/scripts/startup/bl_operators/amber/repository.py
@@ -397,6 +397,8 @@ class AmberDataAsset():
 
             AmberDataAssetVariant.to_pg(asset_pg.variants, asset.variants)
             asset_pg.variant_default = asset.variant_default.uuid
+        for idx in range(len(pg), len(assets), -1):
+            pg.remove(idx - 1)
 
 
 class AmberDataRepositoryPG(PropertyGroup):
@@ -433,7 +435,7 @@ class AmberDataRepository:
 
         self.clear()
 
-    def clear(self):
+    def clear(self, repository_pg=None):
         self.path = ""
         self.version = "1.0.1"
         self.name = ""
@@ -442,6 +444,10 @@ class AmberDataRepository:
         self.tags.clear()
         self.assets.clear()
 
+        if repository_pg is not None:
+            self.to_pg(repository_pg)
+            print(repository_pg, len(repository_pg.assets))
+
     @classmethod
     def ls_repo(cls, db_path):
         repo_dict = None



More information about the Bf-blender-cvs mailing list