OpenSlides/openslides/core/projector.py

58 lines
1.5 KiB
Python
Raw Normal View History

2018-12-23 11:05:38 +01:00
from typing import Any, Dict
2018-12-23 11:05:38 +01:00
from ..utils.projector import register_projector_element
2018-12-23 11:05:38 +01:00
# 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!
2018-12-23 11:05:38 +01:00
def countdown(
config: Dict[str, Any], all_data: Dict[str, Dict[int, Dict[str, Any]]]
) -> Dict[str, Any]:
"""
2018-12-23 11:05:38 +01:00
Countdown slide.
2019-01-06 16:22:33 +01:00
2018-12-23 11:05:38 +01:00
Returns the full_data of the countdown element.
2018-12-23 11:05:38 +01:00
config = {
name: 'core/countdown',
id: 5, # Countdown ID
}
"""
countdown_id = config.get("id") or 1
2018-12-23 11:05:38 +01:00
try:
return all_data["core/countdown"][countdown_id]
except KeyError:
return {"error": "Countdown {} does not exist".format(countdown_id)}
2018-12-23 11:05:38 +01:00
def message(
config: Dict[str, Any], all_data: Dict[str, Dict[int, Dict[str, Any]]]
) -> Dict[str, Any]:
"""
2018-12-23 11:05:38 +01:00
Message slide.
2019-01-06 16:22:33 +01:00
2018-12-23 11:05:38 +01:00
Returns the full_data of the message element.
config = {
name: 'core/projector-message',
id: 5, # ProjectorMessage ID
}
"""
message_id = config.get("id") or 1
2018-12-23 11:05:38 +01:00
try:
return all_data["core/projector-message"][message_id]
except KeyError:
return {"error": "Message {} does not exist".format(message_id)}
2018-12-23 11:05:38 +01:00
def register_projector_elements() -> None:
register_projector_element("core/countdown", countdown)
register_projector_element("core/projector-message", message)
# TODO: Deside if we need a clock slide