1a709a59a9
* Changed wording: element is one element on the projector. A slide is a functoin to render one element * Use AllData as first argument all the time * Render username on server * Add exceptions for erros on projector * Fix motion recommendation * Only show state extension, if it is allowed by the state * Add motion_change_recommendations to motion full_data
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
from typing import Any, Dict, List
|
|
|
|
from ..utils.projector import AllData, register_projector_slide
|
|
|
|
|
|
# Important: All functions have to be prune. This means, that thay can only
|
|
# access the data, that they get as argument and do not have any
|
|
# side effects. They are called from an async context. So they have
|
|
# to be fast!
|
|
|
|
|
|
def user_slide(all_data: AllData, element: Dict[str, Any]) -> Dict[str, Any]:
|
|
"""
|
|
User slide.
|
|
"""
|
|
return {"error": "TODO"}
|
|
|
|
|
|
def get_user_name(all_data: AllData, user_id: int) -> str:
|
|
"""
|
|
Returns the short name for an user_id.
|
|
"""
|
|
user = all_data["users/user"][user_id]
|
|
name_parts: List[str] = []
|
|
for name_part in ("title", "first_name", "last_name"):
|
|
if user[name_part]:
|
|
name_parts.append(user[name_part])
|
|
if not name_part:
|
|
name_parts.append(user["username"])
|
|
if user["structure_level"]:
|
|
name_parts.append(f"({user['structure_level']})")
|
|
return " ".join(name_parts)
|
|
|
|
|
|
def register_projector_slides() -> None:
|
|
register_projector_slide("users/user", user_slide)
|