From 8de70cd52365fad1992892e56d6eba96adce1667 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Sun, 7 Feb 2021 18:04:46 +0100 Subject: [PATCH] add receiver_keys to the settings page --- owrx/controllers/settings.py | 12 +++++++++++- owrx/form/__init__.py | 26 +++++++++++++++++++------- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/owrx/controllers/settings.py b/owrx/controllers/settings.py index fc3a3f5..0ff8ba5 100644 --- a/owrx/controllers/settings.py +++ b/owrx/controllers/settings.py @@ -12,6 +12,7 @@ from owrx.form import ( Option, ServicesCheckboxInput, Js8ProfileCheckboxInput, + ReceiverKeysInput, ) from urllib.parse import quote import json @@ -100,6 +101,15 @@ class GeneralSettingsController(AdminController): TextInput("photo_title", "Photo title"), TextAreaInput("photo_desc", "Photo description"), ), + Section( + "Receiver listings", + ReceiverKeysInput( + "receiver_keys", + "Receiver keys", + infotext="Put the keys you receive on listing sites (e.g. " + + 'Receiverbook) here, one per line', + ), + ), Section( "Waterfall settings", NumberInput( @@ -294,4 +304,4 @@ class GeneralSettingsController(AdminController): for k, v in data.items(): config[k] = v Config.store() - self.send_redirect("/admin") + self.send_redirect("/generalsettings") diff --git a/owrx/form/__init__.py b/owrx/form/__init__.py index 8b1fd9f..89c343d 100644 --- a/owrx/form/__init__.py +++ b/owrx/form/__init__.py @@ -30,11 +30,17 @@ class Input(ABC): def render_input(self, value): pass + def convert_to_form(self, value): + return value + + def convert_from_form(self, value): + return value + def render(self, config): - return self.bootstrap_decorate(self.render_input(config[self.id])) + return self.bootstrap_decorate(self.render_input(self.convert_to_form(config[self.id]))) def parse(self, data): - return {self.id: data[self.id][0]} if self.id in data else {} + return {self.id: self.convert_from_form(data[self.id][0])} if self.id in data else {} class TextInput(Input): @@ -62,19 +68,16 @@ class NumberInput(Input): step='step="{0}"'.format(self.step) if self.step else "", ) - def convert_value(self, v): + def convert_from_form(self, v): return int(v) - def parse(self, data): - return {k: self.convert_value(v) for k, v in super().parse(data).items()} - class FloatInput(NumberInput): def __init__(self, id, label, infotext=None): super().__init__(id, label, infotext) self.step = "any" - def convert_value(self, v): + def convert_from_form(self, v): return float(v) @@ -118,6 +121,15 @@ class TextAreaInput(Input): ) +class ReceiverKeysInput(TextAreaInput): + def convert_to_form(self, value): + return "\n".join(value) + + def convert_from_form(self, value): + # \r\n or \n? this should work with both. + return [v.strip("\r ") for v in value.split("\n")] + + class CheckboxInput(Input): def __init__(self, id, label, checkboxText, infotext=None): super().__init__(id, label, infotext=infotext)