openwebrx-clone/owrx/form/converter.py

69 lines
1.4 KiB
Python
Raw Normal View History

2021-02-08 19:30:12 +00:00
from abc import ABC, abstractmethod
2021-02-15 21:22:07 +00:00
import json
2021-02-08 19:30:12 +00:00
class Converter(ABC):
@abstractmethod
def convert_to_form(self, value):
pass
@abstractmethod
def convert_from_form(self, value):
pass
class NullConverter(Converter):
def convert_to_form(self, value):
return value
def convert_from_form(self, value):
return value
class OptionalConverter(Converter):
"""
Maps None to an empty string, and reverse
useful for optional fields
"""
def convert_to_form(self, value):
return "" if value is None else value
def convert_from_form(self, value):
return value if value else None
class IntConverter(Converter):
def convert_to_form(self, value):
return str(value)
def convert_from_form(self, value):
return int(value)
class FloatConverter(Converter):
def convert_to_form(self, value):
return str(value)
def convert_from_form(self, value):
return float(value)
class EnumConverter(Converter):
def __init__(self, enumCls):
self.enumCls = enumCls
def convert_to_form(self, value):
return None if value is None else self.enumCls(value).name
def convert_from_form(self, value):
return self.enumCls[value].value
2021-02-15 21:22:07 +00:00
class JsonConverter(Converter):
def convert_to_form(self, value):
return json.dumps(value)
def convert_from_form(self, value):
return json.loads(value)