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.

Dict.py 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. # -*- coding: utf-8 -*-
  2. from lodel.leapi.datahandlers.reference import Reference
  3. from lodel.editorial_model.components import EmClass
  4. class Dict(Reference):
  5. ## @brief instanciates a dict reference
  6. # @param emclasses dict : Dict of EmClass objects
  7. # @param allowed list
  8. # @param internal bool : if False, the field is not internal
  9. # @param kwargs : Other named arguments
  10. def __init__(self, emclasses, allowed=[], internal=False, **kwargs):
  11. self._refs = set(emclasses)
  12. self._refs_class = dict
  13. super().__init__(allowed=allowed, internal=internal, **kwargs)
  14. ## @brief checks if the given target is valid
  15. # @return bool
  16. '''
  17. def is_target_valid(self):
  18. relateds = self.get_relateds()
  19. if not isinstance(relateds, self._refs_class):
  20. return False
  21. for related in relateds.values():
  22. if not isinstance(related, EmClass):
  23. return False
  24. return True
  25. '''
  26. ## @brief adds a referenced element
  27. # @param ref_name str : key of the item in the reference dict
  28. # @param emclass EmClass
  29. # @return bool
  30. def add_ref(self, ref_name, emclass):
  31. if isinstance(emclass, EmClass) and isinstance(ref_name, str):
  32. self._refs[ref_name] = emclass
  33. return True
  34. return False