Blender ID add-on: made it compatible with current Blender 2.8
Note that this version requires Blender 2.80 or newer due to changes in operator property declarations.
This commit is contained in:
parent
b5bc232f24
commit
abaa64303d
|
@ -1,5 +1,12 @@
|
|||
# Blender ID Add-on Changelog
|
||||
|
||||
# Version 2.0 (in development)
|
||||
|
||||
- Require Blender 2.80+.
|
||||
- API change: `blender_id.get_subclient_user_id()` now returns `''` instead of `None` when the user
|
||||
is not logged in.
|
||||
|
||||
|
||||
# Version 1.5 (released 2018-07-03)
|
||||
|
||||
- Support Blender 2.80.
|
||||
|
|
|
@ -13,7 +13,7 @@ Blender ID add-on version 1.2.0 removed some workarounds necessary for
|
|||
Blender 2.77a. As such, versions 1.1.x are the last versions compatible with
|
||||
Blender 2.77a, and 1.2.0 and newer require at least Blender 2.78.
|
||||
|
||||
Blender ID add-on version 1.5 is the first to support Blender 2.80+.
|
||||
Blender ID add-on version 2.0 is the first to support and require Blender 2.80+.
|
||||
|
||||
|
||||
Building & Bundling
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
bl_info = {
|
||||
'name': 'Blender ID authentication',
|
||||
'author': 'Sybren A. Stüvel, Francesco Siddi, and Inês Almeida',
|
||||
'version': (1, 5, 0),
|
||||
'version': (1, 9, 9),
|
||||
'blender': (2, 80, 0),
|
||||
'location': 'Add-on preferences',
|
||||
'description':
|
||||
|
@ -119,11 +119,11 @@ def get_subclient_user_id(subclient_id: str) -> str:
|
|||
Requires that the user has been authenticated at the subclient using
|
||||
a call to create_subclient_token(...)
|
||||
|
||||
:returns: the subclient-local user ID, or None if not logged in.
|
||||
:returns: the subclient-local user ID, or the empty string if not logged in.
|
||||
"""
|
||||
|
||||
if not BlenderIdProfile.user_id:
|
||||
return None
|
||||
return ''
|
||||
|
||||
return BlenderIdProfile.subclients[subclient_id]['subclient_user_id']
|
||||
|
||||
|
@ -161,9 +161,9 @@ def token_expires() -> typing.Optional[datetime.datetime]:
|
|||
# Try parsing as different formats. A new Blender ID is coming,
|
||||
# which may change the format in which timestamps are sent.
|
||||
formats = [
|
||||
'%Y-%m-%dT%H:%M:%SZ', # ISO 8601 with Z-suffix
|
||||
'%Y-%m-%dT%H:%M:%S.%fZ', # ISO 8601 with fractional seconds and Z-suffix
|
||||
'%a, %d %b %Y %H:%M:%S GMT', # RFC 1123, used by old Blender ID
|
||||
'%Y-%m-%dT%H:%M:%SZ', # ISO 8601 with Z-suffix
|
||||
'%Y-%m-%dT%H:%M:%S.%fZ', # ISO 8601 with fractional seconds and Z-suffix
|
||||
'%a, %d %b %Y %H:%M:%S GMT', # RFC 1123, used by old Blender ID
|
||||
]
|
||||
for fmt in formats:
|
||||
try:
|
||||
|
@ -182,23 +182,23 @@ class BlenderIdPreferences(AddonPreferences):
|
|||
error_message: StringProperty(
|
||||
name='Error Message',
|
||||
default='',
|
||||
options={'HIDDEN', 'SKIP_SAVE'},
|
||||
options={'HIDDEN', 'SKIP_SAVE'}
|
||||
)
|
||||
ok_message: StringProperty(
|
||||
name='Message',
|
||||
default='',
|
||||
options={'HIDDEN', 'SKIP_SAVE'},
|
||||
options={'HIDDEN', 'SKIP_SAVE'}
|
||||
)
|
||||
blender_id_username: StringProperty(
|
||||
name='E-mail address',
|
||||
default='',
|
||||
options={'HIDDEN', 'SKIP_SAVE'},
|
||||
options={'HIDDEN', 'SKIP_SAVE'}
|
||||
)
|
||||
blender_id_password: StringProperty(
|
||||
name='Password',
|
||||
default='',
|
||||
options={'HIDDEN', 'SKIP_SAVE'},
|
||||
subtype='PASSWORD',
|
||||
subtype='PASSWORD'
|
||||
)
|
||||
|
||||
def reset_messages(self):
|
||||
|
@ -211,10 +211,10 @@ class BlenderIdPreferences(AddonPreferences):
|
|||
if self.error_message:
|
||||
sub = layout.row()
|
||||
sub.alert = True # labels don't display in red :(
|
||||
sub.label(self.error_message, icon='ERROR')
|
||||
sub.label(text=self.error_message, icon='ERROR')
|
||||
if self.ok_message:
|
||||
sub = layout.row()
|
||||
sub.label(self.ok_message, icon='FILE_TICK')
|
||||
sub.label(text=self.ok_message, icon='FILE_TICK')
|
||||
|
||||
active_profile = get_active_profile()
|
||||
if active_profile:
|
||||
|
@ -240,15 +240,17 @@ class BlenderIdPreferences(AddonPreferences):
|
|||
exp_str = 'within seconds'
|
||||
|
||||
if time_left.days < 14:
|
||||
layout.label('You are logged in as %s.' % active_profile.username,
|
||||
layout.label(text='You are logged in as %s.' % active_profile.username,
|
||||
icon='WORLD_DATA')
|
||||
layout.label(text='Your token will expire %s. Please log out and log in again '
|
||||
'to refresh it.' % exp_str, icon='PREVIEW_RANGE')
|
||||
'to refresh it.' % exp_str, icon='PREVIEW_RANGE')
|
||||
else:
|
||||
layout.label('You are logged in as %s. Your authentication token expires %s.'
|
||||
% (active_profile.username, exp_str), icon='WORLD_DATA')
|
||||
layout.label(
|
||||
text='You are logged in as %s. Your authentication token expires %s.'
|
||||
% (active_profile.username, exp_str),
|
||||
icon='WORLD_DATA')
|
||||
|
||||
row = layout.row().split(0.8)
|
||||
row = layout.row().split(factor=0.8)
|
||||
row.operator('blender_id.logout')
|
||||
row.operator('blender_id.validate')
|
||||
else:
|
||||
|
@ -345,7 +347,10 @@ def register():
|
|||
profiles.register()
|
||||
BlenderIdProfile.read_json()
|
||||
|
||||
bpy.utils.register_module(__name__)
|
||||
bpy.utils.register_class(BlenderIdLogin)
|
||||
bpy.utils.register_class(BlenderIdLogout)
|
||||
bpy.utils.register_class(BlenderIdPreferences)
|
||||
bpy.utils.register_class(BlenderIdValidate)
|
||||
|
||||
preferences = bpy.context.user_preferences.addons[__name__].preferences
|
||||
preferences.reset_messages()
|
||||
|
|
Loading…
Reference in New Issue