[Bf-extensions-cvs] [7aa04b87] master: BlenderKit: enable search by same author ('A' key)

Vilem Duha noreply at git.blender.org
Thu May 23 15:06:53 CEST 2019


Commit: 7aa04b874f753e316e46eef0af6080a87375bcb2
Author: Vilem Duha
Date:   Thu May 23 00:31:54 2019 +0200
Branches: master
https://developer.blender.org/rBA7aa04b874f753e316e46eef0af6080a87375bcb2

BlenderKit: enable search by same author ('A' key)

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

M	blenderkit/search.py
M	blenderkit/ui.py

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

diff --git a/blenderkit/search.py b/blenderkit/search.py
index 452ec434..2ab0ec52 100644
--- a/blenderkit/search.py
+++ b/blenderkit/search.py
@@ -59,6 +59,7 @@ import bpy
 search_start_time = 0
 prev_time = 0
 
+
 def check_errors(rdata):
     if rdata.get('statusCode') == 401:
         if rdata.get('detail') == 'Invalid token.':
@@ -75,13 +76,15 @@ thumb_sml_download_threads = {}
 thumb_full_download_threads = {}
 reports = ''
 
+
 def refresh_token_timer():
     ''' this timer gets run every 20 hours. It refreshes tokens and categories.'''
-    print( 'refresh timer')
+    print('refresh timer')
     fetch_server_data()
     categories.load_categories()
     return 72000
 
+
 @persistent
 def scene_load(context):
     wm = bpy.context.window_manager
@@ -90,7 +93,7 @@ def scene_load(context):
     # wm['bkit_update'] = version_checker.compare_versions(blenderkit)
     categories.load_categories()
     if not bpy.app.timers.is_registered(refresh_token_timer):
-        bpy.app.timers.register(refresh_token_timer, persistent=True, first_interval = 72000)
+        bpy.app.timers.register(refresh_token_timer, persistent=True, first_interval=72000)
 
 
 def fetch_server_data():
@@ -340,7 +343,7 @@ def writeblockm(tooltip, mdata, key='', pretext=None):  # for longer texts
         if type(intext) == list:
             intext = list_to_str(intext)
         if type(intext) == float:
-            intext = round(intext,3)
+            intext = round(intext, 3)
         intext = str(intext)
         if intext.rstrip() == '':
             return tooltip
@@ -453,7 +456,6 @@ def generate_tooltip(mdata):
             if adata != None:
                 t += generate_author_textblock(adata)
 
-
     t += '\n'
     t += get_random_tip(mdata)
     return t
@@ -466,13 +468,14 @@ def get_random_tip(mdata):
         t += 'click to link %s' % mdata['assetType']
     if at == 'model' or at == 'material':
         tips = ['Click or drag in scene to link/append %s' % mdata['assetType'],
-                # "'A' key to search assets by same author",
+                "'A' key to search assets by same author",
                 "'W' key to open Authors webpage",
                 ]
         tip = 'Tip: ' + random.choice(tips)
         t = writeblock(t, tip)
     return t
 
+
 def generate_author_textblock(adata):
     t = ''
     if adata not in (None, ''):
@@ -959,12 +962,11 @@ def add_search_process(query, params):
     mt('thread started')
 
 
-def search(own=False, category='', get_next=False, free_only=False):
+def search(category='', get_next=False, author_id=''):
     ''' initialize searching'''
     global search_start_time
     user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
 
-
     search_start_time = time.time()
     mt('start')
     scene = bpy.context.scene
@@ -1002,9 +1004,13 @@ def search(own=False, category='', get_next=False, free_only=False):
 
     if props.is_searching and get_next == True:
         return;
+
     if category != '':
         query['category_subtree'] = category
 
+    if author_id != '' and user_preferences.enable_author_search:
+        query['author_id'] = author_id
+
     # utils.p('searching')
     props.is_searching = True
 
@@ -1041,6 +1047,11 @@ class SearchOperator(Operator):
         description="search only subtree of this category",
         default="")
 
+    author_id: StringProperty(
+        name="Author ID",
+        description="Author ID - search only assets by this author",
+        default="")
+
     get_next: BoolProperty(name="next page",
                            description="get next page from previous search",
                            default=False)
@@ -1050,7 +1061,7 @@ class SearchOperator(Operator):
         return True
 
     def execute(self, context):
-        search(own=self.own, category=self.category, get_next=self.get_next)
+        search(own=self.own, category=self.category, get_next=self.get_next, author_id=self.author_id)
         bpy.ops.view3d.blenderkit_asset_bar()
 
         return {'FINISHED'}
diff --git a/blenderkit/ui.py b/blenderkit/ui.py
index 2ac3c9e3..d7253d46 100644
--- a/blenderkit/ui.py
+++ b/blenderkit/ui.py
@@ -1419,6 +1419,14 @@ class AssetBarOperator(bpy.types.Operator):
                 if a.get('aboutMeUrl') is not None:
                     bpy.ops.wm.url_open(url=a['aboutMeUrl'])
             return {'RUNNING_MODAL'}
+        if event.type == 'A' and ui_props.active_index != -3:
+            sr = bpy.context.scene['search results']
+            asset_data = sr[ui_props.active_index]
+            a = asset_data['author_id']
+            if a is not None:
+                utils.p('author:', a)
+                search.search(author_id = a)
+            return {'RUNNING_MODAL'}
         if event.type == 'X' and ui_props.active_index != -3:
             sr = bpy.context.scene['search results']
             asset_data = sr[ui_props.active_index]
@@ -1439,7 +1447,7 @@ class AssetBarOperator(bpy.types.Operator):
             if self.category != '':
                 sprops = utils.get_search_props()
                 sprops.search_keywords = ''
-            search.search(category=self.category, free_only=self.free_only)
+            search.search(category=self.category)
 
         if ui_props.assetbar_on:
             # we don't want to run the assetbar many times, that's why it has a switch on/off behaviour,



More information about the Bf-extensions-cvs mailing list