12345678910111213141516171819202122232425262728293031323334353637 |
- # -*- 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)
|