[Bf-extensions-cvs] [620bb458] master: BlenderKit: draw categories in asset card

Vilem Duha noreply at git.blender.org
Thu Jul 1 14:38:03 CEST 2021


Commit: 620bb458da12ca863256af0cb238f0f934d9edcd
Author: Vilem Duha
Date:   Thu May 27 11:54:04 2021 +0200
Branches: master
https://developer.blender.org/rBA620bb458da12ca863256af0cb238f0f934d9edcd

BlenderKit: draw categories in asset card

Enable user's ratings request for all users.

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

M	blenderkit/categories.py
M	blenderkit/search.py
M	blenderkit/ui.py
M	blenderkit/ui_panels.py
M	blenderkit/upload.py

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

diff --git a/blenderkit/categories.py b/blenderkit/categories.py
index f91fe512..46d10f86 100644
--- a/blenderkit/categories.py
+++ b/blenderkit/categories.py
@@ -81,11 +81,34 @@ def get_category_path(categories, category):
                 slug = ch['slug']
                 while parents.get(slug):
                     slug = parents.get(slug)
-
                     category_path.insert(0, slug)
                 return category_path
             check_categories.append(ch)
 
+def get_category_name_path(categories, category):
+    '''finds the category in all possible subcategories and returns the path to it'''
+    category_path = []
+    check_categories = categories[:]
+    parents = {}
+    utils.pprint(categories)
+    while len(check_categories) > 0:
+        ccheck = check_categories.pop()
+        #        print(ccheck['name'])
+        if not ccheck.get('children'):
+            continue
+
+        for ch in ccheck['children']:
+            #                print(ch['name'])
+            parents[ch['slug']] = ccheck['slug']
+
+            if ch['slug'] == category:
+                category_path = [ch['slug']]
+                slug = ch['slug']
+                while parents.get(slug):
+                    slug = parents.get(slug)
+                    category_path.insert(0, slug)
+                return category_path
+            check_categories.append(ch)
 
 def get_category(categories, cat_path=()):
     for category in cat_path:
diff --git a/blenderkit/search.py b/blenderkit/search.py
index 534f4a09..4c57135d 100644
--- a/blenderkit/search.py
+++ b/blenderkit/search.py
@@ -432,14 +432,14 @@ def timer_update():
                         result_field.append(asset_data)
 
                 # Get ratings from BlenderKit server
-                if utils.profile_is_validator():
-                    user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
-                    api_key = user_preferences.api_key
-                    headers = utils.get_headers(api_key)
-                    for r in rdata['results']:
-                        if ratings_utils.get_rating_local(asset_data['id']) is None:
-                            thread = threading.Thread(target=ratings_utils.get_rating, args=([r['id'], headers]), daemon=True)
-                            thread.start()
+                # if utils.profile_is_validator():
+                user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
+                api_key = user_preferences.api_key
+                headers = utils.get_headers(api_key)
+                for r in rdata['results']:
+                    if ratings_utils.get_rating_local(asset_data['id']) is None:
+                        rating_thread = threading.Thread(target=ratings_utils.get_rating, args=([r['id'], headers]), daemon=True)
+                        rating_thread.start()
 
                 wm[search_name] = result_field
                 wm['search results'] = result_field
@@ -1215,7 +1215,7 @@ def get_search_simple(parameters, filepath=None, page_size=100, max_results=1000
     requeststring += '&page_size=' + str(page_size)
     bk_logger.debug(requeststring)
     response = rerequests.get(requeststring, headers=headers)  # , params = rparameters)
-    # print(r.json())
+    # print(response.json())
     search_results = response.json()
 
     results = []
diff --git a/blenderkit/ui.py b/blenderkit/ui.py
index f6438d85..295ded3b 100644
--- a/blenderkit/ui.py
+++ b/blenderkit/ui.py
@@ -371,13 +371,17 @@ def draw_tooltip_with_author(asset_data, x, y):
 
     img = get_large_thumbnail_image(asset_data)
     gimg = None
-    atip = ''
+    author_text = ''
+
     if bpy.context.window_manager.get('bkit authors') is not None:
         a = bpy.context.window_manager['bkit authors'].get(asset_data['author']['id'])
         if a is not None and a != '':
             if a.get('gravatarImg') is not None:
                 gimg = utils.get_hidden_image(a['gravatarImg'], a['gravatarHash'])
 
+            if len(a['firstName'])>0 or len(a['lastName'])>0:
+                author_text = f"by {a['firstName']} {a['lastName']}"
+
     aname = asset_data['displayName']
     aname = aname[0].upper() + aname[1:]
     if len(aname) > 36:
@@ -388,12 +392,9 @@ def draw_tooltip_with_author(asset_data, x, y):
     rcount = 0
     quality = '-'
     if rc:
-        rcount = min(rc['quality'], rc['workingHours'])
+        rcount = min(rc.get('quality',0), rc.get('workingHours',0))
     if rcount > show_rating_threshold:
         quality = round(asset_data['ratingsAverage'].get('quality'))
-    author_text = ''
-    if len(a['firstName'])>0 or len(a['lastName'])>0:
-        author_text = f"by {a['firstName']} {a['lastName']}"
 
     draw_tooltip(x, y, name=aname, author=author_text, quality=quality, img=img,
                  gravatar=gimg)
diff --git a/blenderkit/ui_panels.py b/blenderkit/ui_panels.py
index b92e985d..3c5f4dcf 100644
--- a/blenderkit/ui_panels.py
+++ b/blenderkit/ui_panels.py
@@ -1468,6 +1468,7 @@ class AssetPopupCard(bpy.types.Operator, ratings_utils.RatingsProperties):
         box.scale_y = 0.4
         box.label(text='Properties')
         box.separator()
+
         if self.asset_data.get('license') == 'cc_zero':
             t = 'CC Zero          '
             icon = pcoll['cc0']
@@ -1778,9 +1779,18 @@ class AssetPopupCard(bpy.types.Operator, ratings_utils.RatingsProperties):
         # top draggabe bar with name of the asset
         top_row = layout.row()
         top_drag_bar = top_row.box()
+
+        cat_path = categories.get_category_path(bpy.context.window_manager['bkit_categories'],
+                                                self.asset_data['category'])[1:]
+        for i,c in enumerate(cat_path):
+            cat_path[i] = c.capitalize()
+        cat_path = ' > '.join(cat_path)
+        # box.label(text=cat_path)
+
         aname = asset_data['displayName']
         aname = aname[0].upper() + aname[1:]
-        top_drag_bar.label(text=aname)
+
+        top_drag_bar.label(text=f'{cat_path} > {aname}')
 
         # left side
         row = layout.row(align=True)
diff --git a/blenderkit/upload.py b/blenderkit/upload.py
index b1d20f94..367f2cbd 100644
--- a/blenderkit/upload.py
+++ b/blenderkit/upload.py
@@ -731,7 +731,6 @@ class FastMetadata(bpy.types.Operator):
             active_asset = utils.get_active_asset_by_type(asset_type = self.asset_type)
             asset_data = active_asset.get('asset_data')
 
-        print('can edit asset?', can_edit_asset(asset_data=asset_data))
         if not can_edit_asset(asset_data=asset_data):
             return {'CANCELLED'}
         self.asset_id = asset_data['id']



More information about the Bf-extensions-cvs mailing list