OpenSlides/openslides/core/projector.py

76 lines
2.0 KiB
Python
Raw Normal View History

2018-12-23 11:05:38 +01:00
from typing import Any, Dict
2019-02-14 16:02:18 +01:00
from ..utils.projector import (
AllData,
ProjectorElementException,
get_config,
register_projector_slide,
)
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!
2019-02-21 14:40:07 +01:00
def countdown_slide(
all_data: AllData, element: Dict[str, Any], projector_id: int
) -> 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.
element = {
2018-12-23 11:05:38 +01:00
name: 'core/countdown',
id: 5, # Countdown ID
}
"""
countdown_id = element.get("id") or 1
2018-12-23 11:05:38 +01:00
try:
2019-02-14 16:02:18 +01:00
countdown = all_data["core/countdown"][countdown_id]
2018-12-23 11:05:38 +01:00
except KeyError:
2019-02-14 16:02:18 +01:00
raise ProjectorElementException(f"Countdown {countdown_id} does not exist")
return {
"description": countdown["description"],
"running": countdown["running"],
"countdown_time": countdown["countdown_time"],
"warning_time": get_config(all_data, "agenda_countdown_warning_time"),
}
2018-12-23 11:05:38 +01:00
2019-02-21 14:40:07 +01:00
def message_slide(
all_data: AllData, element: Dict[str, Any], projector_id: int
) -> 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.
element = {
2018-12-23 11:05:38 +01:00
name: 'core/projector-message',
id: 5, # ProjectorMessage ID
}
"""
message_id = element.get("id") or 1
2018-12-23 11:05:38 +01:00
try:
return all_data["core/projector-message"][message_id]
except KeyError:
2019-02-14 16:02:18 +01:00
raise ProjectorElementException(f"Message {message_id} does not exist")
2019-02-21 14:40:07 +01:00
def clock_slide(
all_data: AllData, element: Dict[str, Any], projector_id: int
) -> Dict[str, Any]:
return {}
def register_projector_slides() -> None:
register_projector_slide("core/countdown", countdown_slide)
register_projector_slide("core/projector-message", message_slide)
register_projector_slide("core/clock", clock_slide)