diff options
author | Vilem Duha <vilem.duha@gmail.com> | 2021-05-27 12:54:04 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2021-07-26 09:05:32 +0300 |
commit | 0d880d1273a3640a089b5fa6c75d4cc67efb4c62 (patch) | |
tree | 32b906366b5d4d99ca4ad88ca41d9bc7048a7c4b | |
parent | 26c4357e0bfaf2b9f148efdeab18b6447fd565d9 (diff) |
BlenderKit: draw categories in asset card
Enable user's ratings request for all users.
-rw-r--r-- | blenderkit/categories.py | 25 | ||||
-rw-r--r-- | blenderkit/search.py | 13 | ||||
-rw-r--r-- | blenderkit/ui.py | 10 | ||||
-rw-r--r-- | blenderkit/ui_panels.py | 12 | ||||
-rw-r--r-- | blenderkit/upload.py | 1 |
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'] |