diff options
author | Vilem Duha <vilem.duha@gmail.com> | 2019-04-11 16:14:45 +0300 |
---|---|---|
committer | Vilem Duha <vilem.duha@gmail.com> | 2019-04-21 22:20:16 +0300 |
commit | 501f660fe857dd292a18248036124c5339019ed3 (patch) | |
tree | d1e1baac41067e0c31d8fe14966cade2dcbf0051 /blenderkit | |
parent | 7d305b6868e6505ba843ca1b0cc5d6042761e505 (diff) |
BlenderKit: save user preferences if user pastes the API key into the panel in 3d view.
some users were confused by this, because they didn't save their preferences.
Also some users filled in the API key area some other string and then didn't know what they did wrong.
Diffstat (limited to 'blenderkit')
-rw-r--r-- | blenderkit/__init__.py | 7 | ||||
-rw-r--r-- | blenderkit/download.py | 5 | ||||
-rw-r--r-- | blenderkit/search.py | 3 | ||||
-rw-r--r-- | blenderkit/ui_panels.py | 2 | ||||
-rw-r--r-- | blenderkit/utils.py | 29 |
5 files changed, 34 insertions, 12 deletions
diff --git a/blenderkit/__init__.py b/blenderkit/__init__.py index ea76bc13..22b05259 100644 --- a/blenderkit/__init__.py +++ b/blenderkit/__init__.py @@ -1280,6 +1280,13 @@ class BlenderKitAddonPreferences(AddonPreferences): min=0, max=20) + asset_counter: IntProperty(name="Usage Counter", + description="Counts usages so it asks for registration only after reaching a limit", + default=0, + min=0, + max=20000) + + # allow_proximity : BoolProperty( # name="allow proximity data reports", # description="This sends anonymized proximity data \n \ diff --git a/blenderkit/download.py b/blenderkit/download.py index 7fada2b9..3f340981 100644 --- a/blenderkit/download.py +++ b/blenderkit/download.py @@ -285,6 +285,11 @@ def append_asset(asset_data, **kwargs): # downloaders=[], location=None, id = asset_data['asset_base_id'] scene['assets rated'][id] = scene['assets rated'].get(id, False) + user_preferences = bpy.context.preferences.addons['blenderkit'].preferences + + if user_preferences.api_key == '': + user_preferences.asset_counter+=1 + if asset_data['asset_type'] == 'scene': scene = append_link.append_scene(file_names[0], link=False, fake_user=False) props = scene.blenderkit diff --git a/blenderkit/search.py b/blenderkit/search.py index 040ee7ea..0c674dcf 100644 --- a/blenderkit/search.py +++ b/blenderkit/search.py @@ -57,6 +57,9 @@ prev_time = 0 def check_errors(rdata): if rdata.get('statusCode') == 401: if rdata.get('detail') == 'Invalid token.': + # reset the api key, so it can be requested again. + user_preferences = bpy.context.preferences.addons['blenderkit'].preferences + user_preferences.api_key = '' return False, 'Missing or wrong api_key in addon preferences' return True, '' diff --git a/blenderkit/ui_panels.py b/blenderkit/ui_panels.py index 724a51a4..4aa4e25a 100644 --- a/blenderkit/ui_panels.py +++ b/blenderkit/ui_panels.py @@ -524,7 +524,7 @@ class VIEW3D_PT_blenderkit_unified(Panel): w = context.region.width - if user_preferences.api_key == '': + if len(user_preferences.api_key) < 35 and user_preferences.counter >10: op = layout.operator("wm.url_open", text="Register online", icon='QUESTION') op.url = paths.BLENDERKIT_SIGNUP_URL diff --git a/blenderkit/utils.py b/blenderkit/utils.py index 39c55f33..20e47db9 100644 --- a/blenderkit/utils.py +++ b/blenderkit/utils.py @@ -174,20 +174,27 @@ def load_prefs(): user_preferences.api_key = prefs['API_key'] user_preferences.global_dir = prefs['global_dir'] - def save_prefs(self, context): user_preferences = bpy.context.preferences.addons['blenderkit'].preferences if user_preferences.api_key != '': - prefs = { - 'API_key': user_preferences.api_key, - 'global_dir': user_preferences.global_dir, - } - # user_preferences.api_key = user_preferences.api_key.strip() - fpath = paths.BLENDERKIT_SETTINGS_FILENAME - f = open(fpath, 'w') - with open(fpath, 'w') as s: - json.dump(prefs, s) - + print(len(user_preferences.api_key)) + print('length') + if len(user_preferences.api_key)>35: + prefs = { + 'API_key': user_preferences.api_key, + 'global_dir': user_preferences.global_dir, + } + # user_preferences.api_key = user_preferences.api_key.strip() + fpath = paths.BLENDERKIT_SETTINGS_FILENAME + f = open(fpath, 'w') + with open(fpath, 'w') as s: + json.dump(prefs, s) + bpy.ops.wm.save_userpref() + else: + # reset the api key in case the user writes some nonsense, e.g. a search string instead of the Key + user_preferences.api_key = '' + props = get_search_props() + props.report = 'Please paste a correct API Key.' def load_categories(): categories.copy_categories() |