diff --git a/fancytree/widgets.py b/fancytree/widgets.py index af3ee8a..8a60526 100644 --- a/fancytree/widgets.py +++ b/fancytree/widgets.py @@ -8,6 +8,7 @@ from django.utils.safestring import mark_safe from django.utils.datastructures import MultiValueDict, MergeDict from mptt.templatetags.mptt_tags import cache_tree_children +from mptt.forms import TreeNodeChoiceField try: import simplejson as json @@ -28,27 +29,30 @@ def get_doc(node, values): doc['expand'] = True return doc -def recursive_node_to_dict(node, values): +def recursive_node_to_dict(node, values, hide_folder_checkbox): result = get_doc(node, values) - children = [recursive_node_to_dict(c, values) for c in node.get_children()] + children = [recursive_node_to_dict(c, values, hide_folder_checkbox) for c in node.get_children()] if children: expand = [c for c in children if c.get('selected', False)] if expand: result["expand"] = True result["folder"] = True + if hide_folder_checkbox: + result['hideCheckbox'] = True result['children'] = children return result -def get_tree(nodes, values): +def get_tree(nodes, values, hide_folder_checkbox): root_nodes = cache_tree_children(nodes) - return [recursive_node_to_dict(n, values) for n in root_nodes] + return [recursive_node_to_dict(n, values, hide_folder_checkbox) for n in root_nodes] class FancyTreeWidget(Widget): - def __init__(self, attrs=None, choices=(), queryset=None, select_mode=2): + def __init__(self, attrs=None, choices=(), queryset=None, select_mode=2, hide_folder_checkbox=False): super(FancyTreeWidget, self).__init__(attrs) self.queryset = queryset self.select_mode = select_mode self.choices = list(choices) + self.hide_folder_checkbox = hide_folder_checkbox def value_from_datadict(self, data, files, name): if isinstance(data, (MultiValueDict, MergeDict)): @@ -63,12 +67,17 @@ def render(self, name, value, attrs=None, choices=()): has_id = attrs and 'id' in attrs final_attrs = self.build_attrs(attrs, name=name) if has_id: - output = [u'
' % attrs['id']] + output = [u'' % attrs['id']] id_attr = u' id="%s_checkboxes"' % (attrs['id']) else: output = [u''] id_attr = u'' - output.append(u'