コード例 #1
0
ファイル: widgets.py プロジェクト: kezabelle/django-menuhin
 def render(self, name, value, attrs=None, choices=()):
     if value is None:
         value = ''
     value = force_text(value)
     widget_attrs = self.build_attrs(attrs, name=name)
     options = MenuItem.get_published_annotated_list()
     return render_to_string('menuhin/widget.html', {
         'widget_attrs': widget_attrs,
         'options': options,
         'value': value,
         'empty_label': BLANK_CHOICE_DASH[0][1]
     })
コード例 #2
0
ファイル: menus.py プロジェクト: kezabelle/django-menuhin
    def get_context(self, context, menu_slug, from_depth, to_depth, template, **kwargs):
        site = Site.objects.get_current()
        # allow passing through None or "" ...
        if not from_depth:
            from_depth = 0
        # allow passing through None or "" ...
        if not to_depth:
            to_depth = 100
        base = {
            'to_depth': to_depth,
            'from_depth': from_depth,
            'site': site,
            'template': template or self.template,
        }
        if 'request' in context:
            base.update(request=context['request'])

        # try to go by PK, or if there's no invalid characters (eg: /:_ ...)
        # by menu_slug, otherwise falling back to assuming the input is
        # request.path or whatevers.
        fetched_menuitem = self.get_menuitem(context, menu_slug, site)
        menu_root = fetched_menuitem.obj
        base.update(query=fetched_menuitem.query)

        if menu_root is None:
            return base

        menu_root.is_active = True
        depth_filtered_menu = MenuItem.get_published_annotated_list(
            parent=menu_root, from_depth=from_depth, to_depth=to_depth)

        if 'request' in context:
            marked_annotated_menu = marked_annotated_list(
                request=context['request'],
                tree=depth_filtered_menu)
        else:  # pragma: no cover
            logger.info("Cannot calculate position in tree without a request")
            marked_annotated_menu = depth_filtered_menu

        base.update(menu_root=menu_root,
                    menu_nodes=marked_annotated_menu)
        return base