diff options
author | Vilem Duha <vilem.duha@gmail.com> | 2021-05-27 12:54:04 +0300 |
---|---|---|
committer | Vilem Duha <vilem.duha@gmail.com> | 2021-07-01 13:10:31 +0300 |
commit | 620bb458da12ca863256af0cb238f0f934d9edcd (patch) | |
tree | 3a657c6d989e5a6b9d7da493554f40b371b34065 | |
parent | 9fa75c889fb54651c83c73563397dd8c8c828443 (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 | 18 | ||||
-rw-r--r-- | blenderkit/ui.py | 11 | ||||
-rw-r--r-- | blenderkit/ui_panels.py | 12 | ||||
-rw-r--r-- | blenderkit/upload.py | 1 |
5 files changed, 50 insertions, 17 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 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'] |