bazarr/libs/plex/objects/setting.py

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