Use the new Blender ID API

This commit is contained in:
Sybren A. Stüvel 2016-04-01 17:16:29 +02:00
parent 5396fd765d
commit 2c4c102302
3 changed files with 16 additions and 16 deletions

View File

@ -3,8 +3,6 @@
Separated from __init__.py so that we can import & run from non-Blender environments.
"""
import os.path
import bpy
from bpy.types import AddonPreferences, Operator, WindowManager, Scene
from bpy.props import StringProperty
@ -50,7 +48,7 @@ class BlenderCloudPreferences(AddonPreferences):
blender_id_help = "To login, go to the Blender ID add-on preferences."
else:
blender_id_icon = 'WORLD_DATA'
blender_id_text = "You are logged in as %s." % blender_id_profile['username']
blender_id_text = "You are logged in as %s." % blender_id_profile.username
blender_id_help = "To logout or change profile, " \
"go to the Blender ID add-on preferences."
@ -82,8 +80,12 @@ class PillarCredentialsUpdate(Operator):
@classmethod
def is_logged_in(cls, context):
active_user_id = getattr(context.window_manager, 'blender_id_active_profile', None)
return bool(active_user_id)
try:
import blender_id
except ImportError:
return False
return blender_id.is_logged_in()
def execute(self, context):
# Only allow activation when the user is actually logged in.

View File

@ -34,12 +34,16 @@ def cache_directory(*subdirs) -> str:
from . import pillar
profile = pillar.blender_id_profile() or {'username': 'anonymous'}
profile = pillar.blender_id_profile()
if profile:
username = profile.username
else:
username = 'anonymous'
# TODO: use bpy.utils.user_resource('CACHE', ...)
# once https://developer.blender.org/T47684 is finished.
user_cache_dir = appdirs.user_cache_dir(appname='Blender', appauthor=False)
cache_dir = os.path.join(user_cache_dir, 'blender_cloud', profile['username'], *subdirs)
cache_dir = os.path.join(user_cache_dir, 'blender_cloud', username, *subdirs)
os.makedirs(cache_dir, mode=0o700, exist_ok=True)

View File

@ -58,19 +58,13 @@ def save_as_json(pillar_resource, json_filename):
json.dump(pillar_resource, outfile, sort_keys=True, cls=pillarsdk.utils.PillarJSONEncoder)
def blender_id_profile() -> dict:
def blender_id_profile() -> 'blender_id.BlenderIdProfile':
"""Returns the Blender ID profile of the currently logged in user."""
# Allow overriding before we import the bpy module.
if _testing_blender_id_profile is not None:
return _testing_blender_id_profile
import bpy
active_user_id = getattr(bpy.context.window_manager, 'blender_id_active_profile', None)
if not active_user_id:
return None
import blender_id
return blender_id.get_active_profile()
@ -100,9 +94,9 @@ def pillar_api(pillar_endpoint: str = None) -> pillarsdk.Api:
pillarsdk.Api.requests_session = cache.requests_session()
_pillar_api = pillarsdk.Api(endpoint=pillar_endpoint,
username=profile['username'],
username=profile.username,
password=None,
token=profile['token'])
token=profile.token)
return _pillar_api