mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 08:24:53 +01:00
implemented users model
This commit is contained in:
parent
c90db8b432
commit
7edfd5f2f1
2 changed files with 87 additions and 0 deletions
|
|
@ -14,6 +14,7 @@ from .hierarchy import (
|
||||||
)
|
)
|
||||||
from .thumbnails import ThumbnailsModel
|
from .thumbnails import ThumbnailsModel
|
||||||
from .selection import HierarchyExpectedSelection
|
from .selection import HierarchyExpectedSelection
|
||||||
|
from .users import UsersModel
|
||||||
|
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
|
|
@ -32,4 +33,6 @@ __all__ = (
|
||||||
"ThumbnailsModel",
|
"ThumbnailsModel",
|
||||||
|
|
||||||
"HierarchyExpectedSelection",
|
"HierarchyExpectedSelection",
|
||||||
|
|
||||||
|
"UsersModel",
|
||||||
)
|
)
|
||||||
|
|
|
||||||
84
client/ayon_core/tools/common_models/users.py
Normal file
84
client/ayon_core/tools/common_models/users.py
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
import ayon_api
|
||||||
|
|
||||||
|
from ayon_core.lib import CacheItem
|
||||||
|
|
||||||
|
|
||||||
|
class UserItem:
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
username,
|
||||||
|
full_name,
|
||||||
|
email,
|
||||||
|
avatar_url,
|
||||||
|
active,
|
||||||
|
):
|
||||||
|
self.username = username
|
||||||
|
self.full_name = full_name
|
||||||
|
self.email = email
|
||||||
|
self.avatar_url = avatar_url
|
||||||
|
self.active = active
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_entity_data(cls, user_data):
|
||||||
|
return cls(
|
||||||
|
user_data["name"],
|
||||||
|
user_data["attrib"]["fullName"],
|
||||||
|
user_data["attrib"]["email"],
|
||||||
|
user_data["attrib"]["avatarUrl"],
|
||||||
|
user_data["active"],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class UsersModel:
|
||||||
|
def __init__(self, controller):
|
||||||
|
self._controller = controller
|
||||||
|
self._users_cache = CacheItem(default_factory=list)
|
||||||
|
|
||||||
|
def get_user_items(self):
|
||||||
|
"""Get user items.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
List[UserItem]: List of user items.
|
||||||
|
|
||||||
|
"""
|
||||||
|
self._invalidate_cache()
|
||||||
|
return self._users_cache.get_data()
|
||||||
|
|
||||||
|
def get_user_items_by_name(self):
|
||||||
|
"""Get user items by name.
|
||||||
|
|
||||||
|
Implemented as most of cases using this model will need to find
|
||||||
|
user information by username.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Dict[str, UserItem]: Dictionary of user items by name.
|
||||||
|
|
||||||
|
"""
|
||||||
|
return {
|
||||||
|
user_item.username: user_item
|
||||||
|
for user_item in self.get_user_items()
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_user_item_by_username(self, username):
|
||||||
|
"""Get user item by username.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
username (str): Username.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Union[UserItem, None]: User item or None if not found.
|
||||||
|
|
||||||
|
"""
|
||||||
|
self._invalidate_cache()
|
||||||
|
for user_item in self.get_user_items():
|
||||||
|
if user_item.username == username:
|
||||||
|
return user_item
|
||||||
|
return None
|
||||||
|
|
||||||
|
def _invalidate_cache(self):
|
||||||
|
if self._users_cache.is_valid:
|
||||||
|
return
|
||||||
|
self._users_cache.update_data([
|
||||||
|
UserItem.from_entity_data(user)
|
||||||
|
for user in ayon_api.get_users()
|
||||||
|
])
|
||||||
Loading…
Add table
Add a link
Reference in a new issue