diff --git a/owrx/form/device.py b/owrx/form/device.py
index 58e4816..2fcdb93 100644
--- a/owrx/form/device.py
+++ b/owrx/form/device.py
@@ -1,5 +1,7 @@
from owrx.form import Input, CheckboxInput, DropdownInput, DropdownEnum, TextInput
from owrx.soapy import SoapySettings
+from functools import reduce
+from operator import and_
class GainInput(Input):
@@ -203,7 +205,7 @@ class SchedulerInput(Input):
)
def render_time_inputs(v):
- values = ["{}:{}".format(v[0:2], v[2:4]) for x in [v[0:4], v[5:9]]]
+ values = ["{}:{}".format(x[0:2], x[2:4]) for x in [v[0:4], v[5:9]]]
return '
-
'.join(
"""
@@ -243,7 +245,7 @@ class SchedulerInput(Input):
time_inputs=render_time_inputs(slot),
select=render_profiles_select(slot, "profile"),
)
- for slot, entry in value["schedule"].items()
+ for slot, entry in (value["schedule"] if value and "schedule" in value else {"0000-0000": ""}).items()
),
stages="".join(
"""
@@ -293,7 +295,16 @@ class SchedulerInput(Input):
if select_id in data:
if data[select_id][0] == "static":
# TODO parse static fields
- pass
+ keys = ["{}-{}".format(self.id, x) for x in ["time-start", "time-end", "profile"]]
+ keys_present = reduce(and_, [key in data for key in keys], True)
+ if not keys_present:
+ return {}
+ lists = [data[key] for key in keys]
+ settings_dict = {
+ "{}{}-{}{}".format(start[0:2], start[3:5], end[0:2], end[3:5]): profile
+ for start, end, profile in zip(*lists)
+ }
+ return {self.id: {"type": "static", "schedule": settings_dict}}
elif data[select_id][0] == "daylight":
settings_dict = {s: getStageValue(s) for s in ["day", "night", "greyline"]}
# filter out empty ones