Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVilem Duha <vilem.duha@gmail.com>2021-05-27 12:54:04 +0300
committerJeroen Bakker <jeroen@blender.org>2021-07-26 09:05:32 +0300
commit0d880d1273a3640a089b5fa6c75d4cc67efb4c62 (patch)
tree32b906366b5d4d99ca4ad88ca41d9bc7048a7c4b
parent26c4357e0bfaf2b9f148efdeab18b6447fd565d9 (diff)
BlenderKit: draw categories in asset card
Enable user's ratings request for all users.
-rw-r--r--blenderkit/categories.py25
-rw-r--r--blenderkit/search.py13
-rw-r--r--blenderkit/ui.py10
-rw-r--r--blenderkit/ui_panels.py12
-rw-r--r--blenderkit/upload.py1
5 files changed, 53 insertions, 8 deletions
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 cd89d3bd..d6e89a7b 100644
--- a/blenderkit/search.py
+++ b/blenderkit/search.py
@@ -427,7 +427,16 @@ def timer_update():
if asset_data != None:
result_field.append(asset_data)
- # results = rdata['results']
+ # 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:
+ 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
wm[search_name + ' orig'] = copy.deepcopy(rdata)
@@ -1202,7 +1211,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 84deb24e..25d6fca5 100644
--- a/blenderkit/ui.py
+++ b/blenderkit/ui.py
@@ -374,13 +374,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:
@@ -391,8 +395,8 @@ def draw_tooltip_with_author(asset_data, x, y):
rcount = 0
quality = '-'
if rc:
- rcount = min(rc['quality'], rc['workingHours'])
- if rcount>show_rating_threshold:
+ rcount = min(rc.get('quality',0), rc.get('workingHours',0))
+ if rcount > show_rating_threshold:
quality = round(asset_data['ratingsAverage'].get('quality'))
draw_tooltip(x, y, name=aname, author=f"by {a['firstName']} {a['lastName']}", quality= quality, img=img,
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']