ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: маппинг имени профиля Tasker
This commit is contained in:
@@ -141,6 +141,18 @@ def first_payload_string(payload, *keys):
|
||||
return ""
|
||||
|
||||
|
||||
def split_display_name(value):
|
||||
if not isinstance(value, str):
|
||||
return "", ""
|
||||
|
||||
parts = value.strip().split(None, 1)
|
||||
if not parts:
|
||||
return "", ""
|
||||
if len(parts) == 1:
|
||||
return parts[0], ""
|
||||
return parts[0], parts[1]
|
||||
|
||||
|
||||
def normalize_nodedc_avatar_url(value):
|
||||
if not isinstance(value, str):
|
||||
return ""
|
||||
@@ -183,13 +195,26 @@ def resolve_nodedc_launcher_origin():
|
||||
def sync_user_profile_from_payload(user, payload):
|
||||
updated_fields = []
|
||||
display_name = first_payload_string(payload, "displayName", "display_name", "name")
|
||||
first_name = first_payload_string(payload, "firstName", "first_name")
|
||||
last_name = first_payload_string(payload, "lastName", "last_name")
|
||||
has_avatar = any(key in payload for key in ["avatarUrl", "avatar_url", "avatar"])
|
||||
avatar_url = normalize_nodedc_avatar_url(first_payload_string(payload, "avatarUrl", "avatar_url", "avatar"))
|
||||
|
||||
if display_name and not first_name and not last_name:
|
||||
first_name, last_name = split_display_name(display_name)
|
||||
|
||||
if display_name and user.display_name != display_name:
|
||||
user.display_name = display_name
|
||||
updated_fields.append("display_name")
|
||||
|
||||
if first_name and user.first_name != first_name:
|
||||
user.first_name = first_name
|
||||
updated_fields.append("first_name")
|
||||
|
||||
if (last_name or first_name) and user.last_name != last_name:
|
||||
user.last_name = last_name
|
||||
updated_fields.append("last_name")
|
||||
|
||||
if has_avatar and (user.avatar != avatar_url or user.avatar_asset_id is not None):
|
||||
user.avatar = avatar_url
|
||||
user.avatar_asset_id = None
|
||||
|
||||
Reference in New Issue
Block a user