diff --git a/sat/plugins/plugin_misc_identity.py b/sat/plugins/plugin_misc_identity.py index 850f253c..cf2819d3 100644 --- a/sat/plugins/plugin_misc_identity.py +++ b/sat/plugins/plugin_misc_identity.py @@ -145,6 +145,9 @@ class Identity: cache_uid = value['cache_uid'] if not cache_uid: raise ValueError + filename = value['filename'] + if not filename: + raise ValueError except (ValueError, KeyError): log.warning( f"invalid data for {entity} avatar, it will be deleted: " @@ -464,6 +467,7 @@ class Identity: raise ValueError(f"There is no file at {file_path} to use as avatar") avatar_data = { 'path': file_path, + 'filename': file_path.name, 'media_type': image.guess_type(file_path), } media_type = avatar_data['media_type'] @@ -499,6 +503,7 @@ class Identity: return { "path": path, + "filename": path.name, "media_type": media_type, "cache_uid": cache_uid, } @@ -509,7 +514,7 @@ class Identity: async def avatarUpdateDataFilter(self, client, entity, data): if not isinstance(data, dict): raise ValueError(f"Invalid data type ({type(data)}), a dict is expected") - mandatory_keys = {'path', 'cache_uid'} + mandatory_keys = {'path', 'filename', 'cache_uid'} if not data.keys() >= mandatory_keys: raise ValueError(f"missing avatar data keys: {mandatory_keys - data.keys()}") return data diff --git a/sat/plugins/plugin_xep_0054.py b/sat/plugins/plugin_xep_0054.py index d1807877..ec229b25 100644 --- a/sat/plugins/plugin_xep_0054.py +++ b/sat/plugins/plugin_xep_0054.py @@ -211,6 +211,7 @@ class XEP_0054(object): "avatar", { 'path': avatar_cache['path'], + 'filename': avatar_cache['filename'], 'media_type': avatar_cache['mime_type'], 'cache_uid': avatar_hash }, @@ -364,6 +365,7 @@ class XEP_0054(object): ) as f: f.write(img_buf.read()) avatar_data['path'] = Path(f.name) + avatar_data['filename'] = avatar_data['path'].name avatar_data['cache_uid'] = image_hash return image_hash @@ -512,6 +514,7 @@ class XEP_0054_handler(XMPPHandler): IMPORT_NAME, "avatar", { 'path': avatar_cache['path'], + 'filename': avatar_cache['filename'], 'media_type': avatar_cache['mime_type'], 'cache_uid': new_hash, },