mirror of https://github.com/morpheus65535/bazarr
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
from plex.objects.core.base import Descriptor, Property
|
|
|
|
|
|
class Setting(Descriptor):
|
|
id = Property
|
|
|
|
label = Property
|
|
summary = Property
|
|
|
|
type = Property
|
|
group = Property
|
|
|
|
value = Property(resolver=lambda: Setting.parse_value)
|
|
default = Property(resolver=lambda: Setting.parse_default)
|
|
options = Property('enumValues', resolver=lambda: Setting.parse_options)
|
|
|
|
hidden = Property(type=[int, bool])
|
|
advanced = Property(type=[int, bool])
|
|
|
|
@classmethod
|
|
def parse_value(cls, client, node):
|
|
type = cls.helpers.get(node, 'type')
|
|
value = cls.helpers.get(node, 'value')
|
|
|
|
return ['value'], Setting.convert(type, value)
|
|
|
|
@classmethod
|
|
def parse_default(cls, client, node):
|
|
type = cls.helpers.get(node, 'type')
|
|
default = cls.helpers.get(node, 'default')
|
|
|
|
return ['default'], Setting.convert(type, default)
|
|
|
|
@classmethod
|
|
def parse_options(cls, client, node):
|
|
value = cls.helpers.get(node, 'enumValues')
|
|
|
|
if not value:
|
|
return [], None
|
|
|
|
return ['enumValues'], [
|
|
tuple(option.split(':', 2)) for option in value.split('|')
|
|
]
|
|
|
|
@staticmethod
|
|
def convert(type, value):
|
|
if type == 'bool':
|
|
value = value.lower()
|
|
value = value == 'true'
|
|
elif type == 'int':
|
|
value = int(value)
|
|
|
|
return value
|