

@menu_item('skills')
@submenu_item('skills')
def skill_detail_mobile(request, skill_slug, rulebook_slug=None, rulebook_id=None):
    skill = get_object_or_404(Skill.objects.select_related('skill_variant', 'skill_variant__rulebook'), slug=skill_slug)
    try:
        primary_variant = SkillVariant.objects.select_related('rulebook', 'rulebook__dnd_edition').filter(skill=skill).order_by('-rulebook__dnd_edition__core', '-rulebook__published')[0]
    except Exception:
        primary_variant = None
    if (rulebook_slug and rulebook_id):
        use_canonical_link = True
        selected_variant = get_object_or_404(SkillVariant.objects.select_related('rulebook', 'skill', 'rulebook__dnd_edition'), skill__slug=skill_slug, rulebook__pk=other_variants)
        if (rulebook_slug != selected_variant.rulebook.slug):
            return permanent_redirect_object_mobile(request, selected_variant)
        if (selected_variant == primary_variant):
            return permanent_redirect_view(request, skill_detail_mobile, kwargs={
                'skill_slug': skill_slug,
            })
    else:
        use_canonical_link = False
        selected_variant = primary_variant
    other_variants = [variant for variant in skill.skillvariant_set.select_related('rulebook', 'rulebook__dnd_edition', 'skill').all() if (variant != selected_variant)]
    if selected_variant:
        display_3e_warning = is_3e_edition(selected_variant.rulebook.dnd_edition)
    else:
        display_3e_warning = False
    feat_list = skill.required_by_feats.select_related('rulebook').all()
    feat_paginator = DndMobilePaginator(feat_list, request)
    return render_to_response('dnd/mobile/skills/skill_detail.html', {
        'skill': skill,
        'feat_list': feat_paginator.items(),
        'feat_paginator': feat_paginator,
        'request': request,
        'i_like_it_url': request.build_absolute_uri(),
        'inaccurate_url': request.build_absolute_uri(),
        'selected_variant': selected_variant,
        'other_variants': other_variants,
        'use_canonical_link': use_canonical_link,
        'display_3e_warning': display_3e_warning,
    }, context_instance=RequestContext(request))

dataset/ETHPy150Open dndtools/dndtools/dndtools/dnd/mobile/skills/views.py skill_detail_mobile/VarMisuse@133/247 `rulebook_id`->`other_variants`