Module lib.plugins.ambientsound.webpage
Function define the web page to ambient sound
Expand source code
# Distributed under Pycameresp License
# Copyright (c) 2023 Remi BERTHOLET
""" Function define the web page to ambient sound """
# pylint:disable=anomalous-unicode-escape-in-string
# pylint:disable=wrong-import-order
import server.httpserver
from htmltemplate import *
import webpage.mainpage
import plugins.ambientsound.config
import plugins.ambientsound.lang
@server.httpserver.HttpServer.add_route(b'/ambient_sound', menu=plugins.ambientsound.lang.menu_ambientsound, item=plugins.ambientsound.lang.item_time_slots)
async def ambient_sound_page(request, response, args):
""" Ambient sound configuration page """
config = plugins.ambientsound.config.AmbientSoundConfig().get_config()
time_slot = plugins.ambientsound.config.AmbientTimeConfig()
# If a new time_slot must be added
if request.params.get(b"add",None) is not None:
time_slot.update(request.params, show_error=False)
if time_slot.start_time < time_slot.end_time:
config.append(time_slot)
config.save()
# If a time_slot must be deleted
elif request.params.get(b"remove",None) is not None:
config.remove(request.params.get(b"remove",b"none"))
config.save()
# List all time slots
time_slots = []
identifier = 0
while True:
time_slot_line = config.get(identifier)
if time_slot_line is not None:
time_slots.append(
ListItem(
[
Link(text=b"%s - %s "%(
tools.date.time_to_html(time_slot_line.start_time),
tools.date.time_to_html(time_slot_line.end_time)),
href=b"ambient_sound?edit=%d"%identifier),
Link(text=plugins.ambientsound.lang.remove_button ,
class_=b"btn position-absolute top-50 end-0 translate-middle-y",
href=b"ambient_sound?remove=%d"%identifier,
onclick=b"return window.confirm('%s')"%plugins.ambientsound.lang.remove_dialog)
]))
else:
break
identifier += 1
# Build page
page = webpage.mainpage.main_frame(request, response, args, plugins.ambientsound.lang.title_time_slots,
[
Form(
[
Edit (text=plugins.ambientsound.lang.field_start, name=b"start_time", type=b"time", required=True, value=tools.date.time_to_html(time_slot.start_time)),
Edit (text=plugins.ambientsound.lang.field_end, name=b"end_time", type=b"time", required=True, value=tools.date.time_to_html(time_slot.end_time)),
Submit(text=plugins.ambientsound.lang.add_button, name=b"add")
]),
List(time_slots)
])
await response.send_page(page)
Functions
async def ambient_sound_page(request, response, args)-
Ambient sound configuration page
Expand source code
@server.httpserver.HttpServer.add_route(b'/ambient_sound', menu=plugins.ambientsound.lang.menu_ambientsound, item=plugins.ambientsound.lang.item_time_slots) async def ambient_sound_page(request, response, args): """ Ambient sound configuration page """ config = plugins.ambientsound.config.AmbientSoundConfig().get_config() time_slot = plugins.ambientsound.config.AmbientTimeConfig() # If a new time_slot must be added if request.params.get(b"add",None) is not None: time_slot.update(request.params, show_error=False) if time_slot.start_time < time_slot.end_time: config.append(time_slot) config.save() # If a time_slot must be deleted elif request.params.get(b"remove",None) is not None: config.remove(request.params.get(b"remove",b"none")) config.save() # List all time slots time_slots = [] identifier = 0 while True: time_slot_line = config.get(identifier) if time_slot_line is not None: time_slots.append( ListItem( [ Link(text=b"%s - %s "%( tools.date.time_to_html(time_slot_line.start_time), tools.date.time_to_html(time_slot_line.end_time)), href=b"ambient_sound?edit=%d"%identifier), Link(text=plugins.ambientsound.lang.remove_button , class_=b"btn position-absolute top-50 end-0 translate-middle-y", href=b"ambient_sound?remove=%d"%identifier, onclick=b"return window.confirm('%s')"%plugins.ambientsound.lang.remove_dialog) ])) else: break identifier += 1 # Build page page = webpage.mainpage.main_frame(request, response, args, plugins.ambientsound.lang.title_time_slots, [ Form( [ Edit (text=plugins.ambientsound.lang.field_start, name=b"start_time", type=b"time", required=True, value=tools.date.time_to_html(time_slot.start_time)), Edit (text=plugins.ambientsound.lang.field_end, name=b"end_time", type=b"time", required=True, value=tools.date.time_to_html(time_slot.end_time)), Submit(text=plugins.ambientsound.lang.add_button, name=b"add") ]), List(time_slots) ]) await response.send_page(page)