No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

reference.py 1.3KB

12345678910111213141516171819202122232425262728293031323334353637
  1. # -*- coding: utf-8 -*-
  2. from lodel.leapi.datahandlers.field_data_handler import FieldDataHandler
  3. from lodel.editorial_model.components import EmClass
  4. class Reference(FieldDataHandler):
  5. ## @brief Instanciation
  6. # @param allowed list
  7. # @param internal bool : if False, the field is not internal
  8. # @param **kwargs : other arguments
  9. def __init__(self, allowed=[], internal=False, **kwargs):
  10. self.allowed = allowed
  11. self.internal = internal
  12. super().__init__(internal=self.internal, **kwargs)
  13. ## @brief gets the target of the reference
  14. def get_relateds(self):
  15. return self._refs
  16. ## @brief checks if the target is valid
  17. def check_data_value(self, value):
  18. if not isinstance(value, self._refs_class):
  19. return (value, "The reference should be an instance of %s, %s gotten" % (self._refs_class, value.__class__))
  20. if isinstance(value, EmClass):
  21. value = [value]
  22. if isinstance(value, dict):
  23. ref_values = value.values()
  24. for related in value:
  25. if not isinstance(related, EmClass):
  26. return (value, "The reference %s should be an instance of EmClass, %s gotten" % (related.display_name, related.__class__))
  27. return (value, None)