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:
Diffstat (limited to 'blenderkit')
-rw-r--r--blenderkit/__init__.py8
-rw-r--r--blenderkit/bkit_oauth.py5
-rw-r--r--blenderkit/oauth.py5
-rw-r--r--blenderkit/search.py26
-rw-r--r--blenderkit/upload.py21
-rw-r--r--blenderkit/utils.py2
6 files changed, 41 insertions, 26 deletions
diff --git a/blenderkit/__init__.py b/blenderkit/__init__.py
index a96ffa2e..2fc47770 100644
--- a/blenderkit/__init__.py
+++ b/blenderkit/__init__.py
@@ -18,8 +18,8 @@
bl_info = {
"name": "BlenderKit Asset Library",
- "author": "Vilem Duha",
- "version": (1, 0, 24),
+ "author": "Vilem Duha, Petr Dlouhy",
+ "version": (1, 0, 25),
"blender": (2, 80, 0),
"location": "View3D > Properties > BlenderKit",
"description": "Online BlenderKit library (materials, models, brushes and more)",
@@ -1358,8 +1358,8 @@ class BlenderKitAddonPreferences(AddonPreferences):
layout.operator("wm.blenderkit_logout", text="Logout",
icon='URL')
- if not self.enable_oauth:
- layout.prop(self, "api_key", text='Your API Key')
+ #if not self.enable_oauth:
+ layout.prop(self, "api_key", text='Your API Key')
# layout.label(text='After you paste API Key, categories are downloaded, so blender will freeze for a few seconds.')
layout.prop(self, "global_dir")
layout.prop(self, "project_subdir")
diff --git a/blenderkit/bkit_oauth.py b/blenderkit/bkit_oauth.py
index 2b732bb1..4a6ee964 100644
--- a/blenderkit/bkit_oauth.py
+++ b/blenderkit/bkit_oauth.py
@@ -19,13 +19,13 @@
if "bpy" in locals():
from importlib import reload
- ui = reload(ui)
tasks_queue = reload(tasks_queue)
utils = reload(utils)
paths = reload(paths)
search = reload(search)
categories = reload(categories)
oauth = reload(oauth)
+ ui = reload(ui)
else:
from blenderkit import tasks_queue, utils, paths, search, categories, oauth, ui
@@ -77,7 +77,8 @@ def write_tokens(auth_token, refresh_token):
preferences.api_key = auth_token
preferences.login_attempt = False
props = utils.get_search_props()
- props.report = ''
+ if props is not None:
+ props.report = ''
ui.add_report('BlenderKit Login success')
search.get_profile()
categories.fetch_categories_thread(auth_token)
diff --git a/blenderkit/oauth.py b/blenderkit/oauth.py
index 220dbed4..3a37318a 100644
--- a/blenderkit/oauth.py
+++ b/blenderkit/oauth.py
@@ -55,6 +55,7 @@ class SimpleOAuthAuthenticator(object):
def get_new_token(self, register=True, redirect_url=None):
class HTTPServerHandler(BaseHTTPRequestHandler):
+ html_template = '<html>%(head)s<h1>%(message)s</h1></html>'
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
@@ -69,9 +70,11 @@ class SimpleOAuthAuthenticator(object):
)
else:
redirect_string = ""
- self.wfile.write(bytes('<html>%s<h1>You may now close this window.</h1></html>' % redirect_string, 'utf-8'))
+ self.wfile.write(bytes(self.html_template % {'head': redirect_string, 'message': 'You may now close this window.'}, 'utf-8'))
qs = parse_qs(urlparse(self.path).query)
self.server.authorization_code = qs['code'][0]
+ else:
+ self.wfile.write(bytes(self.html_template % {'head': '', 'message': 'Authorization failed.'}, 'utf-8'))
for port in self.ports:
try:
diff --git a/blenderkit/search.py b/blenderkit/search.py
index 1123f879..004586cf 100644
--- a/blenderkit/search.py
+++ b/blenderkit/search.py
@@ -100,14 +100,15 @@ def scene_load(context):
def fetch_server_data():
''' download categories and addon version'''
- user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
- url = paths.BLENDERKIT_ADDON_URL
- api_key = user_preferences.api_key
- # version_checker.check_version_thread(url, api_key, blenderkit)
- if user_preferences.enable_oauth:
- bkit_oauth.refresh_token_thread()
- get_profile()
- categories.fetch_categories_thread(api_key)
+ if not bpy.app.background:
+ user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
+ url = paths.BLENDERKIT_ADDON_URL
+ api_key = user_preferences.api_key
+ # version_checker.check_version_thread(url, api_key, blenderkit)
+ if user_preferences.enable_oauth:
+ bkit_oauth.refresh_token_thread()
+ get_profile()
+ categories.fetch_categories_thread(api_key)
@bpy.app.handlers.persistent
@@ -158,9 +159,13 @@ def timer_update(): # TODO might get moved to handle all blenderkit stuff.
if ok:
for r in rdata['results']:
-
+ # TODO remove this fix when filesSize is fixed.
+ # this is a temporary fix for too big numbers from the server.
+ try:
+ r['filesSize'] = int(r['filesSize'] / 1024)
+ except:
+ utils.p('asset with no files-size')
if r['assetType'] == asset_type:
- # utils.pprint(r)
if len(r['files']) > 0:
furl = None
tname = None
@@ -181,7 +186,6 @@ def timer_update(): # TODO might get moved to handle all blenderkit stuff.
if durl and tname:
tooltip = generate_tooltip(r)
- # utils.pprint(print(r))
asset_data = {'thumbnail': tname,
'thumbnail_small': small_tname,
# 'thumbnails':allthumbs,
diff --git a/blenderkit/upload.py b/blenderkit/upload.py
index 49aced95..31585a4f 100644
--- a/blenderkit/upload.py
+++ b/blenderkit/upload.py
@@ -28,10 +28,12 @@ if "bpy" in locals():
version_checker = reload(version_checker)
search = reload(search)
ui_panels = reload(ui_panels)
+ ui = reload(ui)
overrides = reload(overrides)
+ colors = reload(colors)
else:
- from blenderkit import asset_inspector, paths, utils, bg_blender, autothumb, version_checker, search, ui_panels, \
- overrides
+ from blenderkit import asset_inspector, paths, utils, bg_blender, autothumb, version_checker, search, ui_panels, ui, \
+ overrides, colors
import tempfile, os, subprocess, json, re
@@ -527,7 +529,7 @@ def check_storage_quota(props):
def auto_fix(asset_type=''):
- #this applies various procedures to ensure coherency in the database.
+ # this applies various procedures to ensure coherency in the database.
asset = utils.get_active_asset()
props = utils.get_upload_props()
if asset_type == 'MATERIAL':
@@ -546,12 +548,11 @@ def start_upload(self, context, asset_type, as_new, metadata_only):
location = get_upload_location(props)
props.upload_state = 'preparing upload'
- auto_fix(asset_type = asset_type)
+ auto_fix(asset_type=asset_type)
# do this for fixing long tags in some upload cases
props.tags = props.tags[:]
-
props.name = props.name.strip()
# TODO move this to separate function
# check for missing metadata
@@ -646,15 +647,18 @@ def start_upload(self, context, asset_type, as_new, metadata_only):
return {'FINISHED'}
try:
rj = r.json()
+ utils.pprint(rj)
+ if r.status_code != 200:
+ if r.status_code == 401:
+ ui.add_report(r.detail, 5, colors.RED)
+ return {'CANCELLED'}
if props.asset_base_id == '':
props.asset_base_id = rj['assetBaseId']
props.id = rj['id']
-
upload_data['assetBaseId'] = props.asset_base_id
upload_data['id'] = props.id
bpy.ops.wm.save_mainfile()
- # fa
props.uploading = True
# save a copy of actual scene but don't interfere with the users models
bpy.ops.wm.save_as_mainfile(filepath=source_filepath, compress=False, copy=True)
@@ -677,6 +681,7 @@ def start_upload(self, context, asset_type, as_new, metadata_only):
except Exception as e:
props.upload_state = str(e)
props.uploading = False
+ print(e)
return {'CANCELLED'}
return {'FINISHED'}
@@ -751,7 +756,7 @@ class ModelUploadOperator(Operator):
layout.label(text="For updates of thumbnail or model use reupload.")
if props.is_private == 'PUBLIC':
- ui_panels.label_multiline(layout, text='Since this version (1.0.24), '
+ ui_panels.label_multiline(layout, text='Since version 1.0.24: '
'PUBLIC ASSETS ARE VALIDATED AUTOMATICALLY '
' after upload. '
'Click Ok to proceed.')
diff --git a/blenderkit/utils.py b/blenderkit/utils.py
index c2c83648..be17418a 100644
--- a/blenderkit/utils.py
+++ b/blenderkit/utils.py
@@ -78,6 +78,8 @@ def get_selected_models():
def get_search_props():
scene = bpy.context.scene
+ if scene is None:
+ return;
uiprops = scene.blenderkitUI
props = None
if uiprops.asset_type == 'MODEL':