Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. from Products.Archetypes.interfaces import IVocabulary
  2. from Products.Archetypes.utils import OrderedDict
  3.  
  4. def dict2dynatree(input_dict, selected, leafsOnly):
  5. """
  6. Recursively parse the dictionary as we get it from the
  7. IVocabulary, and transform it to a a dictionary as needed for
  8. dynatree
  9. """
  10. if input_dict is None:
  11. return []
  12. retval = []
  13. for key in input_dict:
  14. title, children = input_dict[key]
  15. children = dict2dynatree(children, selected, leafsOnly)
  16.  
  17. new_item = {} #we have to have boolItems
  18. new_item['title'] = title
  19. new_item['key'] = key
  20. new_item['children'] = children
  21. new_item['select'] = key in selected
  22. new_item['isFolder'] = bool(children)
  23. new_item['hideCheckbox'] = bool(children) and leafsOnly
  24. new_item['expand'] = key in selected or isSomethingSelectedInChildren(children, selected)
  25. retval.append(new_item)
  26. return retval
  27.  
  28.  
  29. def isSomethingSelectedInChildren(children, selected):
  30. return bool(set([_['key'] for _ in children]).intersection(selected)) \
  31. or bool([_ for _ in children
  32. if _['children'] and isSomethingSelectedInChildren(_['children'], selected)])
  33.  
  34. def lookupVocabulary(field, context):
  35. if IVocabulary.providedBy(field.vocabulary):
  36. tree = field.vocabulary.getVocabularyDict(context)
  37. else:
  38. vocab = field.Vocabulary(context)
  39. tree = OrderedDict()
  40. for key in vocab:
  41. tree[key] = vocab.getValue(key)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement