# -*- coding: utf-8 -*- from lodel.leapi.datahandlers.field_data_handler import FieldDataHandler from lodel.editorial_model.components import EmClass class Reference(FieldDataHandler): ## @brief Instanciation # @param allowed list # @param internal bool : if False, the field is not internal # @param **kwargs : other arguments def __init__(self, allowed=[], internal=False, **kwargs): self.allowed = allowed self.internal = internal super().__init__(internal=self.internal, **kwargs) ## @brief gets the target of the reference def get_relateds(self): return self._refs ## @brief checks if the target is valid def check_data_value(self, value): if not isinstance(value, self._refs_class): return (value, "The reference should be an instance of %s, %s gotten" % (self._refs_class, value.__class__)) if isinstance(value, EmClass): value = [value] if isinstance(value, dict): ref_values = value.values() for related in value: if not isinstance(related, EmClass): return (value, "The reference %s should be an instance of EmClass, %s gotten" % (related.display_name, related.__class__)) return (value, None)