from caspia.meadow.serialization import Deserializable, Serializable
from .base import Rule
[docs]class LightGroupAttachRule(Rule, Serializable, Deserializable):
enable_duplicates = False
def __init__(self, group, light, identifier=None, name=None):
super().__init__(identifier=identifier)
self.light = light
self.group = group
self.name = name or self._autogenerate_name()
def _autogenerate_name(self):
return f'[generated] Attach {self.light.name} to {self.group.name}'
serialized_type = 'light-group-attach'
[docs] def serialize_content(self):
return {
'type': self.serialized_type,
'group': self.group.name,
'light': self.light.name,
}
[docs] @classmethod
def deserialize(cls, data, context):
get_service = context['get_service']
return LightGroupAttachRule(group=get_service(data['group'], type='light'),
light=get_service(data['light'], type='light'),
identifier=data['identifier'])
def __repr__(self):
return f'<LightGroupAttachRule light:{self.light.name} group:{self.group.name}>'