def get_form(self, request, obj=None, **kwargs): """Returns modified form for TreeItem model. 'Parent' field choices are built by sitetree itself. """ class TreeItemChoiceField(ChoiceField): """We use custom ChoiceField as to have a chance to resolve TreeItem by ID from dropdown. """ def clean(self, value): if value == '': return None return TreeItem.objects.get(pk=value) # We build choices dropdown using 'sitetree_tree' tag tree_token = u'sitetree_tree from "%s" template "admin/sitetree/tree/tree_combo.html"' % self.tree.alias my_context = template.RequestContext(request, current_app='admin') choices_str = sitetree_tree(template.Parser(None), template.Token(token_type=template.TOKEN_BLOCK, contents=tree_token)).render(my_context) tree_choices = [('', '---------')] for line in choices_str.splitlines(): if line.strip() != '': splitted = line.split(':::') tree_choices.append((splitted[0], mark_safe(splitted[1]))) if obj is not None and obj.parent is not None: self.previous_parent = obj.parent previous_parent_id = self.previous_parent.id else: previous_parent_id = None my_choice_field = TreeItemChoiceField(choices=tree_choices, initial=previous_parent_id) form = super(TreeItemAdmin, self).get_form(request, obj, **kwargs) my_choice_field.label = form.base_fields['parent'].label my_choice_field.help_text = form.base_fields['parent'].help_text # Replace 'parent' TreeItem field with new appropriate one form.base_fields['parent'] = my_choice_field # Try to resolve all currently registered url names. if not getattr(self, 'known_url_names', False): self.known_url_names = [] self.known_url_rules = [] reverse_dict = get_resolver(get_urlconf()).reverse_dict for url_name, url_rules in reverse_dict.items(): if isinstance(url_name, basestring): self.known_url_names.append(url_name) self.known_url_rules.append('<b>%s</b> %s' % (url_name, ' '.join(url_rules[0][0][1]))) self.known_url_rules = sorted(self.known_url_rules) form.known_url_names_hint = _('You are seeing this warning because "URL as Pattern" option is active and pattern entered above seems to be invalid. Currently registered URL pattern names and parameters: ') form.known_url_names = self.known_url_names form.known_url_rules = self.known_url_rules return form
def get_form(self, request, obj=None, **kwargs): """Returns modified form for TreeItem model. 'Parent' field choices are built by sitetree itself. """ class TreeItemChoiceField(ChoiceField): """We use custom ChoiceField as to have a chance to resolve TreeItem by ID from dropdown. """ def clean(self, value): if value == "": return None return TreeItem.objects.get(pk=value) # We build choices dropdown using 'sitetree_tree' tag tree_token = u'sitetree_tree from "%s" template "admin/sitetree/tree/tree_combo.html"' % self.tree.alias my_context = template.RequestContext(request, current_app="admin") choices_str = sitetree_tree( template.Parser(None), template.Token(token_type=template.TOKEN_BLOCK, contents=tree_token) ).render(my_context) tree_choices = [("", "---------")] for line in choices_str.splitlines(): if line.strip() != "": splitted = line.split(":::") tree_choices.append((splitted[0], mark_safe(splitted[1]))) if obj is not None and obj.parent is not None: self.previous_parent = obj.parent previous_parent_id = self.previous_parent.id else: previous_parent_id = None my_choice_field = TreeItemChoiceField(choices=tree_choices, initial=previous_parent_id) form = super(TreeItemAdmin, self).get_form(request, obj, **kwargs) my_choice_field.label = form.base_fields["parent"].label my_choice_field.help_text = form.base_fields["parent"].help_text # Replace 'parent' TreeItem field with new appropriate one form.base_fields["parent"] = my_choice_field return form
def get_form(self, request, obj=None, **kwargs): """Returns modified form for TreeItem model. 'Parent' field choices are built by sitetree itself. """ class TreeItemChoiceField(ChoiceField): """We use custom ChoiceField as to have a chance to resolve TreeItem by ID from dropdown. """ def clean(self, value): if value == '': return None return TreeItem.objects.get(pk=value) # We build choices dropdown using 'sitetree_tree' tag tree_token = u'sitetree_tree from "%s" template "admin/sitetree/tree/tree_combo.html"' % self.tree.alias my_context = template.RequestContext(request, current_app='admin') choices_str = sitetree_tree(template.Parser(None), template.Token(token_type=template.TOKEN_BLOCK, contents=tree_token)).render(my_context) tree_choices = [('', '---------')] for line in choices_str.splitlines(): if line.strip() != '': splitted = line.split(':::') tree_choices.append((splitted[0], mark_safe(splitted[1]))) if obj is not None and obj.parent is not None: self.previous_parent = obj.parent previous_parent_id = self.previous_parent.id else: previous_parent_id = None my_choice_field = TreeItemChoiceField(choices=tree_choices, initial=previous_parent_id) form = super(TreeItemAdmin, self).get_form(request, obj, **kwargs) my_choice_field.label = form.base_fields['parent'].label my_choice_field.help_text = form.base_fields['parent'].help_text # Replace 'parent' TreeItem field with new appropriate one form.base_fields['parent'] = my_choice_field return form