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:
authorVilem Duha <vilem.duha@gmail.com>2019-04-30 01:55:11 +0300
committerVilem Duha <vilem.duha@gmail.com>2019-05-19 16:45:49 +0300
commit2f9bd3f0ffff093dfc5bdfdce0aeaada243423ae (patch)
tree8fe89fe43b26217573be66c8b2c63e2d307bf5fb /blenderkit
parent5412d45d9e682d0b8fe8437b735ee06979e34f02 (diff)
BlenderKit: enable uploading private assets
-fix queue, the handler was getting lost after file load. -some comments
Diffstat (limited to 'blenderkit')
-rw-r--r--blenderkit/__init__.py8
-rw-r--r--blenderkit/categories.py2
-rw-r--r--blenderkit/oauth.py4
-rw-r--r--blenderkit/search.py4
-rw-r--r--blenderkit/tasks_queue.py27
-rw-r--r--blenderkit/ui_panels.py12
-rw-r--r--blenderkit/upload.py3
-rw-r--r--blenderkit/utils.py9
8 files changed, 47 insertions, 22 deletions
diff --git a/blenderkit/__init__.py b/blenderkit/__init__.py
index 929a900a..c9f80c1e 100644
--- a/blenderkit/__init__.py
+++ b/blenderkit/__init__.py
@@ -449,6 +449,10 @@ class BlenderKitCommonUploadProps(object):
default='royalty_free',
description='License. Please read our help for choosing the right licenses',
)
+ is_private: BoolProperty(name="Asset is Private",
+ description="If not marked private, your asset will go into the validation process automatically\n"
+ "Private assets are limited by quota.",
+ default=False)
is_free: BoolProperty(name="Free for Everyone",
description="You consent you want to release this asset as free for everyone",
@@ -1405,12 +1409,12 @@ def register():
ui.register_ui()
ui_panels.register_ui_panels()
bg_blender.register()
- bpy.app.handlers.load_post.append(scene_load)
utils.load_prefs()
overrides.register_overrides()
oauth.register()
tasks_queue.register()
+ bpy.app.handlers.load_post.append(scene_load)
def unregister():
@@ -1439,3 +1443,5 @@ def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
+
+ bpy.app.handlers.load_post.remove(scene_load)
diff --git a/blenderkit/categories.py b/blenderkit/categories.py
index e2dfed3d..794b15b1 100644
--- a/blenderkit/categories.py
+++ b/blenderkit/categories.py
@@ -58,8 +58,6 @@ def copy_categories():
def fetch_categories(API_key):
- BLENDERKIT_API_MAIN = "https://www.blenderkit.com/api/v1/"
-
url = paths.get_api_url() + 'categories/'
headers = utils.get_headers(API_key)
diff --git a/blenderkit/oauth.py b/blenderkit/oauth.py
index f2cdf3e8..b0359157 100644
--- a/blenderkit/oauth.py
+++ b/blenderkit/oauth.py
@@ -26,7 +26,7 @@ from urllib.parse import parse_qs, urlparse
import requests
import threading
import blenderkit
-from blenderkit import tasks_queue, utils, paths
+from blenderkit import tasks_queue, utils, paths, search
CLIENT_ID = "IdFRwa3SGA8eMpzhRVFMg5Ts8sPK93xBjif93x0F"
PORTS = [62485, 1234]
@@ -125,7 +125,9 @@ def write_tokens(auth_token, refresh_token):
preferences.api_key_refresh = refresh_token
preferences.login_attempt = False
props = utils.get_search_props()
+
props.report = 'Login success!'
+ search.get_profile()
class RegisterLoginOnline(bpy.types.Operator):
diff --git a/blenderkit/search.py b/blenderkit/search.py
index 45865391..9f19bf41 100644
--- a/blenderkit/search.py
+++ b/blenderkit/search.py
@@ -560,7 +560,7 @@ def write_profile(adata):
adata['user']['sumAssetFilesSize'] = str(round(adata['user']['sumAssetFilesSize'] / 1024 / 1024)) + ' Mb'
adata['user']['sumPrivateAssetFilesSize'] = str(
round(adata['user']['sumPrivateAssetFilesSize'] / 1024 / 1024)) + ' Mb'
- adata['user']['remainingPrivateQuota'] = str(round(adata['user']['remainingPrivateQuota'] / 1024 / 1024)) + ' Mb'
+ adata['user']['remainingPrivateQuota'] = str(max(0,round(adata['user']['remainingPrivateQuota'] / 1024 / 1024))) + ' Mb'
bpy.context.window_manager['bkit profile'] = adata
@@ -571,7 +571,7 @@ def fetch_profile(api_key):
headers = utils.get_headers(api_key)
r = requests.get(a_url, headers=headers)
adata = r.json()
- if not hasattr(adata, 'user'):
+ if adata.get('user') is None:
utils.p(adata)
utils.p('getting profile failed')
return
diff --git a/blenderkit/tasks_queue.py b/blenderkit/tasks_queue.py
index 55029753..2e09dcfd 100644
--- a/blenderkit/tasks_queue.py
+++ b/blenderkit/tasks_queue.py
@@ -1,13 +1,22 @@
import bpy
+from bpy.app.handlers import persistent
import queue
from blenderkit import utils
+@persistent
+def scene_load(context):
+ if not(bpy.app.timers.is_registered(queue_worker)):
+ bpy.app.timers.register(queue_worker)
+
def get_queue():
- if not hasattr(bpy.types.VIEW3D_PT_blenderkit_unified, 'task_queue'):
- bpy.types.VIEW3D_PT_blenderkit_unified.task_queue = queue.Queue()
- return bpy.types.VIEW3D_PT_blenderkit_unified.task_queue
+ # we pick just a random one of blender types, to try to get a persistent queue
+ t = bpy.types.Scene
+
+ if not hasattr(t, 'task_queue'):
+ t.task_queue = queue.Queue()
+ return t.task_queue
def add_task(task):
@@ -15,12 +24,12 @@ def add_task(task):
q.put(task)
-def every_2_seconds():
+def queue_worker():
q = get_queue()
-
+ utils.p('queue timer')
while not q.empty():
utils.p('as a task: ')
- q = bpy.types.VIEW3D_PT_blenderkit_unified.task_queue
+ print('window manager', bpy.context.window_manager)
task = q.get()
try:
task[0](*task[1])
@@ -31,8 +40,10 @@ def every_2_seconds():
def register():
- bpy.app.timers.register(every_2_seconds)
+ bpy.app.handlers.load_post.append(scene_load)
+
def unregister():
- bpy.app.timers.unregister(every_2_seconds)
+ bpy.app.handlers.load_post.remove(scene_load)
+
diff --git a/blenderkit/ui_panels.py b/blenderkit/ui_panels.py
index f97a9088..478a1b54 100644
--- a/blenderkit/ui_panels.py
+++ b/blenderkit/ui_panels.py
@@ -134,9 +134,11 @@ def draw_upload_common(layout, props, asset_type, context):
if asset_type == 'MODEL' and props.subcategory != '': # by now block this for other asset types.
layout.prop(props, 'subcategory')
+ layout.prop(props, 'is_private')
layout.prop(props, 'license')
+
def poll_local_panels():
user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
return user_preferences.panel_behaviour == 'BOTH' or user_preferences.panel_behaviour == 'LOCAL'
@@ -414,9 +416,11 @@ class VIEW3D_PT_blenderkit_profile(Panel):
me = me['user']
layout.label(text='User: %s %s' % (me['firstName'], me['lastName']))
layout.label(text='Email: %s' % (me['email']))
- layout.label(text='Public assets sum: %s ' % (me['sumAssetFilesSize']))
- layout.label(text='Private assets sum: %s ' % (me['sumPrivateAssetFilesSize']))
+ layout.label(text='Public assets: %s ' % (me['sumAssetFilesSize']))
+ layout.label(text='Private assets: %s ' % (me['sumPrivateAssetFilesSize']))
layout.label(text='Remaining private storage: %s' % (me['remainingPrivateQuota']))
+ layout.operator("wm.url_open", text="See my uploads",
+ icon='URL').url = paths.BLENDERKIT_USER_ASSETS
layout.operator("wm.blenderkit_logout", text="Logout",
icon='URL')
@@ -621,9 +625,7 @@ class VIEW3D_PT_blenderkit_unified(Panel):
label_multiline(layout, text='switch to paint or sculpt mode.', width=context.region.width)
return
- # blocking this now. It became terribly slow.
- layout.operator("wm.url_open", text="See my uploads",
- icon='URL').url = paths.BLENDERKIT_USER_ASSETS
+
elif ui_props.down_up == 'UPLOAD':
if not ui_props.assetbar_on:
text = 'Show asset preview - ;'
diff --git a/blenderkit/upload.py b/blenderkit/upload.py
index 6a512e4a..15c0bf83 100644
--- a/blenderkit/upload.py
+++ b/blenderkit/upload.py
@@ -445,6 +445,7 @@ def get_upload_data(self, context, asset_type):
upload_data["category"] = props.subcategory
upload_data["license"] = props.license
upload_data["isFree"] = props.is_free
+ upload_data["isPrivate"] = props.is_private
upload_data["token"] = user_preferences.api_key
if props.asset_base_id != '':
@@ -570,6 +571,7 @@ def start_upload(self, context, asset_type, as_new, metadata_only):
try:
r = requests.post(url, json=json_metadata, headers=headers, verify=True) # files = files,
props.upload_state = 'uploaded metadata'
+ utils.p(r.text)
except requests.exceptions.RequestException as e:
print(e)
props.upload_state = str(e)
@@ -592,6 +594,7 @@ def start_upload(self, context, asset_type, as_new, metadata_only):
props.uploading = False
return {'CANCELLED'}
+
# props.upload_state = 'step 1'
if metadata_only:
props.uploading = False
diff --git a/blenderkit/utils.py b/blenderkit/utils.py
index 1a1d4ed7..13b11481 100644
--- a/blenderkit/utils.py
+++ b/blenderkit/utils.py
@@ -267,15 +267,18 @@ def get_brush_props(context):
return brush.blenderkit
return None
-def p(text):
- if bpy.app.debug != 0:
- print(p)
+def p(text,text1 = '',text2 = '',text3 = '',text4 = '',text5 = ''):
+ '''debug printing depending on blender's debug value'''
+ if bpy.app.debug_value != 0:
+ print(text, text1, text2, text3, text4,text5)
def pprint(data):
+ '''pretty print jsons'''
print(json.dumps(data, indent=4, sort_keys=True))
def get_hierarchy(ob):
+ '''get all objects in a tree'''
obs = []
doobs = [ob]
while len(doobs) > 0: