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:
authorVilém Duha <vilda.novak@gmail.com>2020-07-15 01:39:45 +0300
committerVilém Duha <vilda.novak@gmail.com>2020-07-29 23:16:14 +0300
commita3a1815d36afbccbd45b52c91afc4e543d4154df (patch)
tree5b6f51308f698a12fdbca6f44ffb0697412eed2a
parentc6a7bba3f0f74d7f90195cafa1456f91f9b9f521 (diff)
BlenderKit: fix login after token refresh fails.
Now offers a popup to login on site, previously only reported about invalid token, which wasn't clear to many users. (cherry picked from commit c52cfd99ff31f7554cc998c69382d1c8dd7ed8ed)
-rw-r--r--blenderkit/bkit_oauth.py4
-rw-r--r--blenderkit/rerequests.py5
-rw-r--r--blenderkit/search.py4
-rw-r--r--blenderkit/tasks_queue.py13
-rw-r--r--blenderkit/ui.py34
-rw-r--r--blenderkit/utils.py33
6 files changed, 54 insertions, 39 deletions
diff --git a/blenderkit/bkit_oauth.py b/blenderkit/bkit_oauth.py
index ae90b215..59ed6c8b 100644
--- a/blenderkit/bkit_oauth.py
+++ b/blenderkit/bkit_oauth.py
@@ -116,7 +116,7 @@ class RegisterLoginOnline(bpy.types.Operator):
message: bpy.props.StringProperty(
name="Message",
description="",
- default="You were logged out from BlenderKit. Clicking OK takes you to web login. ")
+ default="You were logged out from BlenderKit.\n Clicking OK takes you to web login. ")
@classmethod
def poll(cls, context):
@@ -124,7 +124,7 @@ class RegisterLoginOnline(bpy.types.Operator):
def draw(self, context):
layout = self.layout
- utils.label_multiline(layout, text=self.message)
+ utils.label_multiline(layout, text=self.message, width = 300)
def execute(self, context):
preferences = bpy.context.preferences.addons['blenderkit'].preferences
diff --git a/blenderkit/rerequests.py b/blenderkit/rerequests.py
index 3d9a4d75..c655c8c5 100644
--- a/blenderkit/rerequests.py
+++ b/blenderkit/rerequests.py
@@ -76,6 +76,11 @@ def rerequest(method, url, **kwargs):
utils.p('reresult', response.status_code)
if response.status_code >= 400:
utils.p('reresult', response.text)
+ else:
+ tasks_queue.add_task((ui.add_report, (
+ 'Refreshing token failed.Please login manually.', 10)))
+ # tasks_queue.add_task((bkit_oauth.write_tokens, ('', '', '')))
+ tasks_queue.add_task((bpy.ops.wm.blenderkit_login,( 'INVOKE_DEFAULT',)),fake_context = True)
return response
diff --git a/blenderkit/search.py b/blenderkit/search.py
index 09dfeb65..f6226049 100644
--- a/blenderkit/search.py
+++ b/blenderkit/search.py
@@ -72,7 +72,7 @@ def check_errors(rdata):
if user_preferences.enable_oauth:
bkit_oauth.refresh_token_thread()
return False, rdata.get('detail')
- return False, 'Missing or wrong api_key in addon preferences'
+ return False, 'Use login panel to connect your profile.'
return True, ''
@@ -282,7 +282,7 @@ def timer_update():
search()
preferences.first_run = False
if preferences.tips_on_start:
- ui.get_largest_3dview()
+ utils.get_largest_3dview()
ui.update_ui_size(ui.active_area, ui.active_region)
ui.add_report(text='BlenderKit Tip: ' + random.choice(rtips), timeout=12, color=colors.GREEN)
return 3.0
diff --git a/blenderkit/tasks_queue.py b/blenderkit/tasks_queue.py
index bbac6d63..a253aa96 100644
--- a/blenderkit/tasks_queue.py
+++ b/blenderkit/tasks_queue.py
@@ -45,15 +45,16 @@ def get_queue():
return t.task_queue
class task_object:
- def __init__(self, command = '', arguments = (), wait = 0, only_last = False):
+ def __init__(self, command = '', arguments = (), wait = 0, only_last = False, fake_context = False):
self.command = command
self.arguments = arguments
self.wait = wait
self.only_last = only_last
+ self.fake_context = fake_context
-def add_task(task, wait = 0, only_last = False):
+def add_task(task, wait = 0, only_last = False, fake_context = False):
q = get_queue()
- taskob = task_object(task[0],task[1], wait = wait, only_last = only_last)
+ taskob = task_object(task[0],task[1], wait = wait, only_last = only_last, fake_context = fake_context)
q.put(taskob)
@@ -90,7 +91,11 @@ def queue_worker():
utils.p('as a task: ')
utils.p(task.command, task.arguments)
try:
- task.command(*task.arguments)
+ if task.fake_context:
+ fc = utils.get_fake_context(bpy.context)
+ task.command(fc,*task.arguments)
+ else:
+ task.command(*task.arguments)
except Exception as e:
utils.p('task failed:')
print(e)
diff --git a/blenderkit/ui.py b/blenderkit/ui.py
index a1cd66d9..fa26d8a3 100644
--- a/blenderkit/ui.py
+++ b/blenderkit/ui.py
@@ -1181,30 +1181,6 @@ def update_ui_size(area, region):
ui.rating_y = ui.bar_y - ui.bar_height
-def get_largest_3dview():
- maxsurf = 0
- maxa = None
- maxw = None
- region = None
- for w in bpy.context.window_manager.windows:
- screen = w.screen
- for a in screen.areas:
- if a.type == 'VIEW_3D':
- asurf = a.width * a.height
- if asurf > maxsurf:
- maxa = a
- maxw = w
- maxsurf = asurf
-
- for r in a.regions:
- if r.type == 'WINDOW':
- region = r
- global active_area, active_window, active_region
- active_window = maxw
- active_area = maxa
- active_region = region
- return maxw, maxa, region
-
class AssetBarOperator(bpy.types.Operator):
'''runs search and displays the asset bar at the same time'''
@@ -1808,13 +1784,14 @@ class UndoWithContext(bpy.types.Operator):
C_dict = bpy.context.copy()
C_dict.update(region='WINDOW')
if context.area is None or context.area.type != 'VIEW_3D':
- w, a, r = get_largest_3dview()
+ w, a, r = utils.get_largest_3dview()
override = {'window': w, 'screen': w.screen, 'area': a, 'region': r}
C_dict.update(override)
bpy.ops.ed.undo_push(C_dict, 'INVOKE_REGION_WIN', message=self.message)
return {'FINISHED'}
+
class RunAssetBarWithContext(bpy.types.Operator):
"""Regenerate cobweb"""
bl_idname = "object.run_assetbar_fix_context"
@@ -1826,12 +1803,7 @@ class RunAssetBarWithContext(bpy.types.Operator):
# return {'RUNNING_MODAL'}
def execute(self, context):
- C_dict = bpy.context.copy()
- C_dict.update(region='WINDOW')
- if context.area is None or context.area.type != 'VIEW_3D':
- w, a, r = get_largest_3dview()
- override = {'window': w, 'screen': w.screen, 'area': a, 'region': r}
- C_dict.update(override)
+ C_dict = utils.get_fake_context(context)
bpy.ops.view3d.blenderkit_asset_bar(C_dict, 'INVOKE_REGION_WIN', keep_running=True, do_search=False)
return {'FINISHED'}
diff --git a/blenderkit/utils.py b/blenderkit/utils.py
index 2e59887c..78eff216 100644
--- a/blenderkit/utils.py
+++ b/blenderkit/utils.py
@@ -614,6 +614,39 @@ def guard_from_crash():
return True
+def get_largest_3dview():
+ maxsurf = 0
+ maxa = None
+ maxw = None
+ region = None
+ for w in bpy.context.window_manager.windows:
+ screen = w.screen
+ for a in screen.areas:
+ if a.type == 'VIEW_3D':
+ asurf = a.width * a.height
+ if asurf > maxsurf:
+ maxa = a
+ maxw = w
+ maxsurf = asurf
+
+ for r in a.regions:
+ if r.type == 'WINDOW':
+ region = r
+ global active_area, active_window, active_region
+ active_window = maxw
+ active_area = maxa
+ active_region = region
+ return maxw, maxa, region
+
+def get_fake_context(context):
+ C_dict = context.copy()
+ C_dict.update(region='WINDOW')
+ if context.area is None or context.area.type != 'VIEW_3D':
+ w, a, r = get_largest_3dview()
+ override = {'window': w, 'screen': w.screen, 'area': a, 'region': r}
+ C_dict.update(override)
+ return C_dict
+
def label_multiline(layout, text='', icon='NONE', width=-1):
''' draw a ui label, but try to split it in multiple lines.'''
if text.strip() == '':