Source code for heedy.users

from typing import Dict
from .base import APIObject, Session
from .kv import KV

from . import apps
from . import objects
from .notifications import Notifications


[docs]class User(APIObject): props = {"name", "username", "description", "icon"} def __init__(self, username: str, session: Session,cached_data={}): super().__init__(f"api/users/{username}", {"user": username}, session,cached_data=cached_data) self._username = username # Apps represents a list of the user's active apps. Apps can be accessed by ID:: # myapp = await u.apps["appid"] # They can also by queried, which will return a list:: # myapp = await u.apps(plugin="myplugin") # Finally, they can be created:: # myapp = await u.apps.create() self.apps = apps.Apps({"owner": username}, self.session) self.objects = objects.Objects({"owner": username}, self.session) self._kv = KV(f"api/kv/users/{username}", self.session) @property def kv(self): return self._kv @property def username(self): return self._username @kv.setter def kv(self, v): return self._kv.set(**v)
[docs]class Users(APIObject): def __init__(self, constraints: Dict, session: Session): super().__init__("api/users", constraints, session) def __getitem__(self, item): return self._getitem(item, f=lambda x: User(x["id"], session=self.session,cached_data=x)) def __call__(self, **kwargs): return self._call( f=lambda x: [User(xx["id"], session=self.session,cached_data=xx) for xx in x], **kwargs )
[docs] def create(self, username, password, **kwargs): return self._create( f=lambda x: User(x["id"], session=self.session,cached_data=x), **{"username": username, "password": password, **kwargs}, )