Release 0.1.37 deployment prep
This commit is contained in:
@@ -19,6 +19,70 @@ UI_SCALE_MIN = 0.8
|
||||
UI_SCALE_MAX = 1.5
|
||||
|
||||
|
||||
DEVICE_CONFIG_TEMPLATE = """# Ekklesia Classroom device configuration
|
||||
|
||||
UPDATE_URL=https://updates.riverofglorymn.org
|
||||
CHANNEL=stable
|
||||
|
||||
# Set to true on classrooms that have a DVD drive.
|
||||
DVD_ENABLED=false
|
||||
|
||||
# Show the Sanctuary LIVE placeholder in the dock. Live viewing is not
|
||||
# implemented yet; this only controls whether the current placeholder appears.
|
||||
LIVE_ENABLED=false
|
||||
|
||||
# Size of the dock, clock and notifications, 0.8 to 1.5.
|
||||
# Larger rooms and larger TVs want a larger number.
|
||||
UI_SCALE=1.0
|
||||
|
||||
# Church message broker. The room is this machine's hostname unless ROOM
|
||||
# is set. Leave MQTT_ENABLED=false until a broker exists.
|
||||
MQTT_ENABLED=false
|
||||
MQTT_HOST=
|
||||
MQTT_PORT=1883
|
||||
MQTT_USERNAME=
|
||||
MQTT_PASSWORD=
|
||||
"""
|
||||
|
||||
|
||||
# Sections added after the first classroom release. Keeping them separate lets
|
||||
# an upgrade make a setting discoverable without replacing anything an
|
||||
# administrator has already put in device.conf.
|
||||
DEVICE_CONFIG_SECTIONS = (
|
||||
(
|
||||
"DVD_ENABLED",
|
||||
"""# Set to true on classrooms that have a DVD drive.
|
||||
DVD_ENABLED=false
|
||||
""",
|
||||
),
|
||||
(
|
||||
"LIVE_ENABLED",
|
||||
"""# Show the Sanctuary LIVE placeholder in the dock. Live viewing is not
|
||||
# implemented yet; this only controls whether the current placeholder appears.
|
||||
LIVE_ENABLED=false
|
||||
""",
|
||||
),
|
||||
(
|
||||
"UI_SCALE",
|
||||
"""# Size of the dock, clock and notifications, 0.8 to 1.5.
|
||||
# Larger rooms and larger TVs want a larger number.
|
||||
UI_SCALE=1.0
|
||||
""",
|
||||
),
|
||||
(
|
||||
"MQTT_ENABLED",
|
||||
"""# Church message broker. The room is this machine's hostname unless ROOM
|
||||
# is set. Leave MQTT_ENABLED=false until a broker exists.
|
||||
MQTT_ENABLED=false
|
||||
MQTT_HOST=
|
||||
MQTT_PORT=1883
|
||||
MQTT_USERNAME=
|
||||
MQTT_PASSWORD=
|
||||
""",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def read_device_config(path=None):
|
||||
config = {}
|
||||
path = Path(path) if path is not None else CONFIG_FILE
|
||||
@@ -45,6 +109,47 @@ def enabled(config, key, default=False):
|
||||
return config[key].lower() in TRUTHY
|
||||
|
||||
|
||||
def dock_items(config):
|
||||
"""Dock items in display order, with disabled capabilities omitted."""
|
||||
items = ["browser"]
|
||||
|
||||
if enabled(config, "DVD_ENABLED"):
|
||||
items.append("dvd")
|
||||
|
||||
if enabled(config, "LIVE_ENABLED"):
|
||||
items.append("live")
|
||||
|
||||
return tuple(items)
|
||||
|
||||
|
||||
def ensure_device_config(path=None):
|
||||
"""Create device.conf or append any missing settings exactly once.
|
||||
|
||||
Existing bytes are otherwise left alone: per-room settings, comments and
|
||||
even keys this release does not know about all survive an upgrade.
|
||||
"""
|
||||
path = Path(path) if path is not None else CONFIG_FILE
|
||||
|
||||
if not path.exists():
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
path.write_text(DEVICE_CONFIG_TEMPLATE)
|
||||
return
|
||||
|
||||
text = path.read_text()
|
||||
config = read_device_config(path)
|
||||
additions = []
|
||||
|
||||
for key, section in DEVICE_CONFIG_SECTIONS:
|
||||
if key not in config:
|
||||
additions.append(section.rstrip("\n"))
|
||||
|
||||
if not additions:
|
||||
return
|
||||
|
||||
separator = "" if not text or text.endswith("\n") else "\n"
|
||||
path.write_text(text + separator + "\n\n".join(additions) + "\n")
|
||||
|
||||
|
||||
def ui_scale(config):
|
||||
"""UI_SCALE, clamped to something a classroom can actually use."""
|
||||
raw = config.get("UI_SCALE", "")
|
||||
|
||||
Reference in New Issue
Block a user