Пример #1
0
def edition_detail(request, edition_slug, edition_id):
    dnd_edition = get_object_or_404(DndEdition, id=edition_id)
    if dnd_edition.slug != edition_slug:
        return permanent_redirect_object(request, dnd_edition)

    rulebook_list = dnd_edition.rulebook_set.select_related('dnd_edition').all()

    paginator = DndPaginator(rulebook_list, request)

    if is_3e_edition(dnd_edition):
        request.submenu_item = MenuItem.Rulebooks.BOOKS_3_0
    elif dnd_edition.slug == "core-35":
        request.submenu_item = MenuItem.Rulebooks.CORE_3_5
    elif dnd_edition.slug == "supplementals-35":
        request.submenu_item = MenuItem.Rulebooks.SUPPLEMENTS_3_5
    elif dnd_edition.slug == "dragonlance":
        request.submenu_item = MenuItem.Rulebooks.DRAGONLANCE_3_5
    elif dnd_edition.slug == "eberron-35":
        request.submenu_item = MenuItem.Rulebooks.EBERRON_3_5
    elif dnd_edition.slug == "forgotten-realms-35":
        request.submenu_item = MenuItem.Rulebooks.FORGOTTEN_REALMS_3_5

    return render_to_response('dnd/rulebooks/edition_detail.html',
                              {
                                  'dnd_edition': dnd_edition,
                                  'request': request,
                                  'rulebook_list': paginator.items(),
                                  'paginator': paginator,
                                  'i_like_it_url': request.build_absolute_uri(),
                                  'inaccurate_url': request.build_absolute_uri(),
                                  'display_3e_warning': is_3e_edition(dnd_edition),
                              }, context_instance=RequestContext(request), )
Пример #2
0
def monsters_in_rulebook(request, rulebook_slug, rulebook_id):
    rulebook = get_object_or_404(Rulebook, pk=rulebook_id)
    if not rulebook.slug == rulebook_slug:
        return permanent_redirect_view(request,
                                       'monsters_in_rulebook',
                                       kwargs={
                                           'rulebook_slug': rulebook.slug,
                                           'rulebook_id': rulebook_id,
                                       })

    monster_list = rulebook.monster_set.select_related(
        'rulebook', 'rulebook__dnd_edition', 'school').all()

    paginator = DndPaginator(monster_list, request)

    return render_to_response(
        'dnd/monsters/monsters_in_rulebook.html',
        {
            'rulebook': rulebook,
            'monster_list': paginator.items(),
            'paginator': paginator,
            'request': request,
            'display_3e_warning': is_3e_edition(rulebook.dnd_edition),
        },
        context_instance=RequestContext(request),
    )
Пример #3
0
def feat_category_detail(request, category_slug):
    feat_category = get_object_or_404(FeatCategory, slug=category_slug)
    feat_list = feat_category.feat_set.select_related(
        'rulebook', 'rulebook__dnd_edition').all()

    if feat_category.slug == 'trait':
        request.submenu_item = MenuItem.CharacterOptions.TRAITS
    elif feat_category.slug == 'flaw':
        request.submenu_item = MenuItem.CharacterOptions.FLAWS
    elif feat_category.slug == 'skill-trick':
        request.submenu_item = MenuItem.CharacterOptions.SKILL_TRICKS

    paginator = DndPaginator(feat_list, request)

    return render_to_response(
        'dnd/feats/feat_category_detail.html',
        {
            'feat_category': feat_category,
            'feat_list': paginator.items(),
            'paginator': paginator,
            'request': request,
            'i_like_it_url': request.build_absolute_uri(),
            'inaccurate_url': request.build_absolute_uri(),
        },
        context_instance=RequestContext(request),
    )
Пример #4
0
def spell_index(request):
    if is_admin(request):
        f = SpellFilterAdmin(
            request.GET,
            queryset=Spell.objects.select_related(
                "rulebook", "rulebook__dnd_edition", "school", "verified_author"
            ).distinct(),
        )
    else:
        f = SpellFilter(
            request.GET, queryset=Spell.objects.select_related("rulebook", "rulebook__dnd_edition", "school").distinct()
        )

    paginator = DndPaginator(f.qs, request)

    form_submitted = 1 if "_filter" in request.GET else 0

    return render_to_response(
        "dnd/spells/spell_index.html",
        {
            "request": request,
            "spell_list": paginator.items(),
            "paginator": paginator,
            "filter": f,
            "form_submitted": form_submitted,
        },
        context_instance=RequestContext(request),
    )
Пример #5
0
def spell_index(request):
    if is_admin(request):
        f = SpellFilterAdmin(request.GET,
                             queryset=Spell.objects.select_related(
                                 'rulebook', 'rulebook__dnd_edition', 'school',
                                 'verified_author').distinct())
    else:
        f = SpellFilter(request.GET,
                        queryset=Spell.objects.select_related(
                            'rulebook', 'rulebook__dnd_edition',
                            'school').distinct())

    paginator = DndPaginator(f.qs, request)

    form_submitted = 1 if '_filter' in request.GET else 0

    return render_to_response(
        'dnd/spells/spell_index.html',
        {
            'request': request,
            'spell_list': paginator.items(),
            'paginator': paginator,
            'filter': f,
            'form_submitted': form_submitted,
        },
        context_instance=RequestContext(request),
    )
Пример #6
0
def feat_category_list(request):
    feat_category_list = FeatCategory.objects.all()

    paginator = DndPaginator(feat_category_list, request)

    return render_to_response('dnd/feat_category_list.html',
            {'feat_category_list': paginator.items(),
             'paginator': paginator,
             'request': request, }, context_instance=RequestContext(request), )
Пример #7
0
def race_list_by_rulebook(request):
    rulebook_list = Rulebook.objects.select_related('dnd_edition').all()

    paginator = DndPaginator(rulebook_list, request)

    return render_to_response('dnd/race_list_by_rulebook.html',
            {'request': request,
             'rulebook_list': paginator.items(),
             'paginator': paginator,
             }, context_instance=RequestContext(request), )
Пример #8
0
def edition_list(request):
    edition_list = DndEdition.objects.all()

    paginator = DndPaginator(edition_list, request)

    return render_to_response('dnd/edition_list.html',
            {'edition_list': paginator.items(),
             'paginator': paginator,
             'request': request,
             }, context_instance=RequestContext(request), )
Пример #9
0
def item_list_by_rulebook(request):
    rulebook_list = Rulebook.objects.select_related("dnd_edition").all()

    paginator = DndPaginator(rulebook_list, request)

    return render_to_response(
        "dnd/items/item_list_by_rulebook.html",
        {"request": request, "rulebook_list": paginator.items(), "paginator": paginator},
        context_instance=RequestContext(request),
    )
Пример #10
0
def item_list_by_rulebook(request):
    rulebook_list = Rulebook.objects.select_related('dnd_edition').all()

    paginator = DndPaginator(rulebook_list, request)

    return render_to_response('dnd/items/item_list_by_rulebook.html',
                              {
                                  'request': request,
                                  'rulebook_list': paginator.items(),
                                  'paginator': paginator,
                              }, context_instance=RequestContext(request), )
Пример #11
0
def feat_category_list(request):
    feat_category_list = FeatCategory.objects.all()

    paginator = DndPaginator(feat_category_list, request)

    return render_to_response(
        'dnd/feats/feat_category_list.html',
        {
            'feat_category_list': paginator.items(),
            'paginator': paginator,
            'request': request,
        },
        context_instance=RequestContext(request),
    )
Пример #12
0
def skill_list(request):
    f = SkillFilter(request.GET, queryset=Skill.objects.all())

    form_submitted = 1 if 'name' in request.GET else 0

    paginator = DndPaginator(f.qs, request)

    return render_to_response('dnd/skill_list.html',
            {'request': request,
             'skill_list': paginator.items(),
             'paginator': paginator,
             'filter': f,
             'form_submitted': form_submitted,
             }, context_instance=RequestContext(request), )
Пример #13
0
def edition_list(request):
    edition_list = DndEdition.objects.all()

    paginator = DndPaginator(edition_list, request)

    return render_to_response(
        'dnd/rulebooks/edition_list.html',
        {
            'edition_list': paginator.items(),
            'paginator': paginator,
            'request': request,
        },
        context_instance=RequestContext(request),
    )
Пример #14
0
def feat_category_detail(request, category_slug):
    feat_category = get_object_or_404(FeatCategory, slug=category_slug)
    feat_list = feat_category.feat_set.select_related('rulebook',
        'rulebook__dnd_edition').all()

    paginator = DndPaginator(feat_list, request)

    return render_to_response('dnd/feat_category_detail.html',
            {'feat_category': feat_category,
             'feat_list': paginator.items(),
             'paginator': paginator,
             'request': request,
             'i_like_it_url': request.build_absolute_uri(),
             'inaccurate_url': request.build_absolute_uri(), }, context_instance=RequestContext(request), )
Пример #15
0
def rulebook_list(request):
    f = RulebookFilter(request.GET, queryset=Rulebook.objects.select_related(
        'dnd_edition'))

    form_submitted = 1 if 'name' in request.GET else 0

    paginator = DndPaginator(f.qs, request)

    return render_to_response('dnd/rulebook_list.html',
            {'request': request,
             'rulebook_list': paginator.items(),
             'paginator': paginator,
             'filter': f,
             'form_submitted': form_submitted,
             }, context_instance=RequestContext(request), )
Пример #16
0
def item_index(request):
    f = ItemFilter(request.GET, queryset=Item.objects.select_related(
        'rulebook', 'rulebook__dnd_edition').distinct())

    paginator = DndPaginator(f.qs, request)

    form_submitted = 1 if 'name' in request.GET else 0

    return render_to_response('dnd/item_index.html',
        {'request': request,
         'item_list': paginator.items(),
         'paginator': paginator,
         'filter': f,
         'form_submitted': form_submitted,
         }, context_instance=RequestContext(request), )
Пример #17
0
def spell_school_detail(request, spell_school_slug):
    spell_school = get_object_or_404(SpellSchool, slug=spell_school_slug)

    spell_list = spell_school.spell_set.select_related(
        'rulebook', 'rulebook__dnd_edition', 'school').all()

    paginator = DndPaginator(spell_list, request)

    return render_to_response('dnd/spell_school_detail.html',
            {'spell_school': spell_school,
             'spell_list': paginator.items(),
             'paginator': paginator,
             'request': request,
             'i_like_it_url': request.build_absolute_uri(),
             'inaccurate_url': request.build_absolute_uri(), }, context_instance=RequestContext(request), )
Пример #18
0
def language_index(request):
    f = LanguageFilter(request.GET, queryset=Language.objects.distinct())

    paginator = DndPaginator(f.qs, request)

    form_submitted = 1 if 'name' in request.GET else 0

    return render_to_response('dnd/languages/language_index.html',
                              {
                                  'request': request,
                                  'language_list': paginator.items(),
                                  'paginator': paginator,
                                  'filter': f,
                                  'form_submitted': form_submitted,
                              }, context_instance=RequestContext(request), )
Пример #19
0
def language_index(request):
    f = LanguageFilter(request.GET, queryset=Language.objects.distinct())

    paginator = DndPaginator(f.qs, request)

    form_submitted = 1 if '_filter' in request.GET else 0

    return render_to_response('dnd/languages/language_index.html',
                              {
                                  'request': request,
                                  'language_list': paginator.items(),
                                  'paginator': paginator,
                                  'filter': f,
                                  'form_submitted': form_submitted,
                              }, context_instance=RequestContext(request), )
Пример #20
0
def deity_list(request):
    f = DeityFilter(request.GET, queryset=Deity.objects.all())

    form_submitted = 1 if '_filter' in request.GET else 0

    paginator = DndPaginator(f.qs, request)

    return render_to_response('dnd/deities/deity_list.html',
                              {
                                  'request': request,
                                  'deity_list': paginator.items(),
                                  'paginator': paginator,
                                  'filter': f,
                                  'form_submitted': form_submitted,
                              }, context_instance=RequestContext(request), )
Пример #21
0
def item_index(request):
    f = ItemFilter(request.GET, queryset=Item.objects.select_related(
        'rulebook', 'rulebook__dnd_edition', 'body_slot', 'property').distinct())

    paginator = DndPaginator(f.qs, request)

    form_submitted = 1 if '_filter' in request.GET else 0

    return render_to_response('dnd/items/item_index.html',
                              {
                                  'request': request,
                                  'item_list': paginator.items(),
                                  'paginator': paginator,
                                  'filter': f,
                                  'form_submitted': form_submitted,
                              }, context_instance=RequestContext(request), )
Пример #22
0
def race_type_index(request):
    f = RaceTypeFilter(request.GET, queryset=RaceType.objects.distinct())

    paginator = DndPaginator(f.qs, request)

    form_submitted = 1 if 'name' in request.GET else 0

    return render_to_response('dnd/races/race_type_index.html',
                              {
                                  'request': request,
                                  'race_type_list': paginator.items(),
                                  'paginator': paginator,
                                  'filter': f,
                                  'BaseSaveType': RaceType.BaseSaveType, # enums
                                  'BaseAttackType': RaceType.BaseAttackType, # enums
                                  'form_submitted': form_submitted,
                              }, context_instance=RequestContext(request), )
Пример #23
0
def spell_descriptor_list(request):
    f = SpellDescriptorFilter(request.GET, queryset=SpellDescriptor.objects.all())

    paginator = DndPaginator(f.qs, request)

    form_submitted = 1 if "_filter" in request.GET else 0

    return render_to_response(
        "dnd/spells/spell_descriptor_list.html",
        {
            "request": request,
            "spell_descriptor_list": paginator.items(),
            "paginator": paginator,
            "filter": f,
            "form_submitted": form_submitted,
        },
        context_instance=RequestContext(request),
    )
Пример #24
0
def deity_list(request):
    f = DeityFilter(request.GET, queryset=Deity.objects.all())

    form_submitted = 1 if '_filter' in request.GET else 0

    paginator = DndPaginator(f.qs, request)

    return render_to_response(
        'dnd/deities/deity_list.html',
        {
            'request': request,
            'deity_list': paginator.items(),
            'paginator': paginator,
            'filter': f,
            'form_submitted': form_submitted,
        },
        context_instance=RequestContext(request),
    )
Пример #25
0
def spell_domain_list(request):
    f = SpellDomainFilter(request.GET, queryset=Domain.objects.all())

    paginator = DndPaginator(f.qs, request)

    form_submitted = 1 if '_filter' in request.GET else 0

    return render_to_response(
        'dnd/spells/spell_domain_list.html',
        {
            'request': request,
            'spell_domain_list': paginator.items(),
            'paginator': paginator,
            'filter': f,
            'form_submitted': form_submitted,
        },
        context_instance=RequestContext(request),
    )
Пример #26
0
def character_class_list(request):
    f = CharacterClassFilter(
        request.GET,
        queryset=CharacterClassVariant.objects.select_related(
            'rulebook', 'rulebook__dnd_edition', 'character_class')
    )

    form_submitted = 1 if '_filter' in request.GET else 0

    paginator = DndPaginator(f.qs, request)

    return render_to_response('dnd/character_classes/character_class_list.html',
                              {
                                  'character_class_list': paginator.items(),
                                  'paginator': paginator,
                                  'request': request,
                                  'filter': f,
                                  'form_submitted': form_submitted,
                              }, context_instance=RequestContext(request), )
Пример #27
0
def rulebook_list(request):
    f = RulebookFilter(request.GET,
                       queryset=Rulebook.objects.select_related('dnd_edition'))

    form_submitted = 1 if '_filter' in request.GET else 0

    paginator = DndPaginator(f.qs, request)

    return render_to_response(
        'dnd/rulebooks/rulebook_list.html',
        {
            'request': request,
            'rulebook_list': paginator.items(),
            'paginator': paginator,
            'filter': f,
            'form_submitted': form_submitted,
        },
        context_instance=RequestContext(request),
    )
Пример #28
0
def spell_sub_school_detail(request, spell_sub_school_slug):
    spell_sub_school = get_object_or_404(SpellSubSchool, slug=spell_sub_school_slug)

    spell_list = spell_sub_school.spell_set.select_related("rulebook", "rulebook__dnd_edition", "school").all()

    paginator = DndPaginator(spell_list, request)

    return render_to_response(
        "dnd/spells/spell_sub_school_detail.html",
        {
            "spell_sub_school": spell_sub_school,
            "spell_list": paginator.items(),
            "paginator": paginator,
            "request": request,
            "i_like_it_url": request.build_absolute_uri(),
            "inaccurate_url": request.build_absolute_uri(),
        },
        context_instance=RequestContext(request),
    )
Пример #29
0
def races_in_rulebook(request, rulebook_slug, rulebook_id):
    rulebook = get_object_or_404(Rulebook, pk=rulebook_id)
    if not rulebook.slug == rulebook_slug:
        return permanent_redirect_view(request, 'races_in_rulebook',
            kwargs={'rulebook_slug': rulebook.slug,
                    'rulebook_id': rulebook_id, })

    race_list = rulebook.race_set.select_related(
        'rulebook', 'rulebook__dnd_edition', 'school').all()

    paginator = DndPaginator(race_list, request)

    return render_to_response('dnd/races_in_rulebook.html',
            {'rulebook': rulebook,
             'race_list': paginator.items(),
             'paginator': paginator,
             'request': request,
             'display_3e_warning': is_3e_edition(rulebook.dnd_edition),
             }, context_instance=RequestContext(request), )
Пример #30
0
def race_type_index(request):
    f = RaceTypeFilter(request.GET, queryset=RaceType.objects.distinct())

    paginator = DndPaginator(f.qs, request)

    form_submitted = 1 if "_filter" in request.GET else 0

    return render_to_response(
        "dnd/races/race_type_index.html",
        {
            "request": request,
            "race_type_list": paginator.items(),
            "paginator": paginator,
            "filter": f,
            "BaseSaveType": RaceType.BaseSaveType,  # enums
            "BaseAttackType": RaceType.BaseAttackType,  # enums
            "form_submitted": form_submitted,
        },
        context_instance=RequestContext(request),
    )
Пример #31
0
def race_type_index(request):
    f = RaceTypeFilter(request.GET, queryset=RaceType.objects.distinct())

    paginator = DndPaginator(f.qs, request)

    form_submitted = 1 if '_filter' in request.GET else 0

    return render_to_response(
        'dnd/races/race_type_index.html',
        {
            'request': request,
            'race_type_list': paginator.items(),
            'paginator': paginator,
            'filter': f,
            'BaseSaveType': RaceType.BaseSaveType,  # enums
            'BaseAttackType': RaceType.BaseAttackType,  # enums
            'form_submitted': form_submitted,
        },
        context_instance=RequestContext(request),
    )
Пример #32
0
def character_class_spells(request, character_class_slug, level):
    character_class = get_object_or_404(CharacterClass,
        slug=character_class_slug)

    spell_list = Spell.objects.filter(
        spellclasslevel__character_class=character_class.id,
        spellclasslevel__level=level).select_related(
        'rulebook',
        'rulebook__dnd_edition',
        'school')

    paginator = DndPaginator(spell_list, request)

    return render_to_response('dnd/character_class_spells.html',
            {'character_class': character_class,
             'spell_list': paginator.items(),
             'paginator': paginator,
             'level': level,
             'request': request, }, context_instance=RequestContext(request),
    )
Пример #33
0
def edition_detail(request, edition_slug, edition_id):
    dnd_edition = get_object_or_404(DndEdition, id=edition_id)
    if dnd_edition.slug != edition_slug:
        return permanent_redirect_view(request, 'edition_detail',
            kwargs={'edition_slug': dnd_edition.slug,
                    'edition_id': dnd_edition.id, })

    rulebook_list = dnd_edition.rulebook_set.select_related('dnd_edition').all()

    paginator = DndPaginator(rulebook_list, request)

    return render_to_response('dnd/edition_detail.html',
            {'dnd_edition': dnd_edition,
             'request': request,
             'rulebook_list': paginator.items(),
             'paginator': paginator,
             'i_like_it_url': request.build_absolute_uri(),
             'inaccurate_url': request.build_absolute_uri(),
             'display_3e_warning': is_3e_edition(dnd_edition),
             }, context_instance=RequestContext(request), )
Пример #34
0
def feat_index(request):
    f = FeatFilter(request.GET,
                   queryset=Feat.objects.select_related(
                       'rulebook', 'rulebook__dnd_edition').distinct())

    form_submitted = 1 if '_filter' in request.GET else 0

    paginator = DndPaginator(f.qs, request)

    return render_to_response(
        'dnd/feats/feat_index.html',
        {
            'request': request,
            'feat_list': paginator.items(),
            'paginator': paginator,
            'filter': f,
            'form_submitted': form_submitted,
        },
        context_instance=RequestContext(request),
    )
Пример #35
0
def spell_school_detail(request, spell_school_slug):
    spell_school = get_object_or_404(SpellSchool, slug=spell_school_slug)

    spell_list = spell_school.spell_set.select_related(
        'rulebook', 'rulebook__dnd_edition', 'school').all()

    paginator = DndPaginator(spell_list, request)

    return render_to_response(
        'dnd/spells/spell_school_detail.html',
        {
            'spell_school': spell_school,
            'spell_list': paginator.items(),
            'paginator': paginator,
            'request': request,
            'i_like_it_url': request.build_absolute_uri(),
            'inaccurate_url': request.build_absolute_uri(),
        },
        context_instance=RequestContext(request),
    )
Пример #36
0
def race_index(request):
    f = RaceFilter(
        request.GET, queryset=Race.objects.select_related("rulebook", "rulebook__dnd_edition", "school").distinct()
    )

    paginator = DndPaginator(f.qs, request)

    form_submitted = 1 if "_filter" in request.GET else 0

    return render_to_response(
        "dnd/races/race_index.html",
        {
            "request": request,
            "race_list": paginator.items(),
            "paginator": paginator,
            "filter": f,
            "form_submitted": form_submitted,
        },
        context_instance=RequestContext(request),
    )
Пример #37
0
def spell_index(request):
    if is_admin(request):
        f = SpellFilterAdmin(request.GET, queryset=Spell.objects.select_related(
            'rulebook', 'rulebook__dnd_edition', 'school', 'verified_author').distinct())
    else:
        f = SpellFilter(request.GET, queryset=Spell.objects.select_related(
            'rulebook', 'rulebook__dnd_edition', 'school').distinct())

    paginator = DndPaginator(f.qs, request)

    form_submitted = 1 if 'name' in request.GET else 0

    return render_to_response('dnd/spells/spell_index.html',
                              {
                                  'request': request,
                                  'spell_list': paginator.items(),
                                  'paginator': paginator,
                                  'filter': f,
                                  'form_submitted': form_submitted,
                              }, context_instance=RequestContext(request), )
Пример #38
0
def item_index(request):
    f = ItemFilter(
        request.GET,
        queryset=Item.objects.select_related("rulebook", "rulebook__dnd_edition", "body_slot", "property").distinct(),
    )

    paginator = DndPaginator(f.qs, request)

    form_submitted = 1 if "_filter" in request.GET else 0

    return render_to_response(
        "dnd/items/item_index.html",
        {
            "request": request,
            "item_list": paginator.items(),
            "paginator": paginator,
            "filter": f,
            "form_submitted": form_submitted,
        },
        context_instance=RequestContext(request),
    )
Пример #39
0
def character_class_list(request):
    f = CharacterClassFilter(
        request.GET,
        queryset=CharacterClassVariant.objects.select_related(
            'rulebook', 'rulebook__dnd_edition', 'character_class'))

    form_submitted = 1 if '_filter' in request.GET else 0

    paginator = DndPaginator(f.qs, request)

    return render_to_response(
        'dnd/character_classes/character_class_list.html',
        {
            'character_class_list': paginator.items(),
            'paginator': paginator,
            'request': request,
            'filter': f,
            'form_submitted': form_submitted,
        },
        context_instance=RequestContext(request),
    )
Пример #40
0
def items_in_rulebook(request, rulebook_slug, rulebook_id):
    rulebook = get_object_or_404(Rulebook, pk=rulebook_id)
    if not rulebook.slug == rulebook_slug:
        return permanent_redirect_view(
            request, "items_in_rulebook", kwargs={"rulebook_slug": rulebook.slug, "rulebook_id": rulebook_id}
        )

    item_list = rulebook.item_set.select_related("rulebook", "rulebook__dnd_edition", "school").all()

    paginator = DndPaginator(item_list, request)

    return render_to_response(
        "dnd/items/items_in_rulebook.html",
        {
            "rulebook": rulebook,
            "item_list": paginator.items(),
            "paginator": paginator,
            "request": request,
            "display_3e_warning": is_3e_edition(rulebook.dnd_edition),
        },
        context_instance=RequestContext(request),
    )
Пример #41
0
def character_class_spells(request, character_class_slug, level):
    character_class = get_object_or_404(CharacterClass,
                                        slug=character_class_slug)

    spell_list = Spell.objects.filter(
        spellclasslevel__character_class=character_class.id,
        spellclasslevel__level=level).select_related('rulebook',
                                                     'rulebook__dnd_edition',
                                                     'school')

    paginator = DndPaginator(spell_list, request)

    return render_to_response(
        'dnd/character_classes/character_class_spells.html',
        {
            'character_class': character_class,
            'spell_list': paginator.items(),
            'paginator': paginator,
            'level': level,
            'request': request,
        },
        context_instance=RequestContext(request),
    )
Пример #42
0
def feat_category_detail(request, category_slug):
    feat_category = get_object_or_404(FeatCategory, slug=category_slug)
    feat_list = feat_category.feat_set.select_related('rulebook',
                                                      'rulebook__dnd_edition').all()

    if feat_category.slug == 'trait':
        request.submenu_item = MenuItem.CharacterOptions.TRAITS
    elif feat_category.slug == 'flaw':
        request.submenu_item = MenuItem.CharacterOptions.FLAWS
    elif feat_category.slug == 'skill-trick':
        request.submenu_item = MenuItem.CharacterOptions.SKILL_TRICKS

    paginator = DndPaginator(feat_list, request)

    return render_to_response('dnd/feats/feat_category_detail.html',
                              {
                                  'feat_category': feat_category,
                                  'feat_list': paginator.items(),
                                  'paginator': paginator,
                                  'request': request,
                                  'i_like_it_url': request.build_absolute_uri(),
                                  'inaccurate_url': request.build_absolute_uri(), },
                              context_instance=RequestContext(request), )
Пример #43
0
def edition_detail(request, edition_slug, edition_id):
    dnd_edition = get_object_or_404(DndEdition, id=edition_id)
    if dnd_edition.slug != edition_slug:
        return permanent_redirect_object(request, dnd_edition)

    rulebook_list = dnd_edition.rulebook_set.select_related(
        'dnd_edition').all()

    paginator = DndPaginator(rulebook_list, request)

    if is_3e_edition(dnd_edition):
        request.submenu_item = MenuItem.Rulebooks.BOOKS_3_0
    elif dnd_edition.slug == "core-35":
        request.submenu_item = MenuItem.Rulebooks.CORE_3_5
    elif dnd_edition.slug == "supplementals-35":
        request.submenu_item = MenuItem.Rulebooks.SUPPLEMENTS_3_5
    elif dnd_edition.slug == "dragonlance":
        request.submenu_item = MenuItem.Rulebooks.DRAGONLANCE_3_5
    elif dnd_edition.slug == "eberron-35":
        request.submenu_item = MenuItem.Rulebooks.EBERRON_3_5
    elif dnd_edition.slug == "forgotten-realms-35":
        request.submenu_item = MenuItem.Rulebooks.FORGOTTEN_REALMS_3_5

    return render_to_response(
        'dnd/rulebooks/edition_detail.html',
        {
            'dnd_edition': dnd_edition,
            'request': request,
            'rulebook_list': paginator.items(),
            'paginator': paginator,
            'i_like_it_url': request.build_absolute_uri(),
            'inaccurate_url': request.build_absolute_uri(),
            'display_3e_warning': is_3e_edition(dnd_edition),
        },
        context_instance=RequestContext(request),
    )
Пример #44
0
def language_detail(request, language_slug):
    language = get_object_or_404(
        Language.objects, slug=language_slug,
    )
    assert isinstance(language, Language)

    race_list = Race.objects.filter(Q(automatic_languages=language) | Q(bonus_languages=language)).select_related(
        'rulebook').distinct().all()

    paginator = DndPaginator(race_list, request)

    return render_to_response('dnd/languages/language_detail.html',
                              {
                                  'language': language,
                                  'paginator': paginator,
                                  'race_list': race_list,
                                  'i_like_it_url': request.build_absolute_uri(),
                                  'inaccurate_url': request.build_absolute_uri(),
                              }, context_instance=RequestContext(request), )
Пример #45
0
def race_type_detail(request, race_type_slug):
    race_type = get_object_or_404(
        RaceType.objects,
        slug=race_type_slug,
    )
    assert isinstance(race_type, RaceType)

    race_list = race_type.race_set.all()

    paginator = DndPaginator(race_list, request)

    return render_to_response(
        'dnd/races/race_type_detail.html',
        {
            'race_type': race_type,
            'paginator': paginator,
            'race_list': race_list,
            'BaseSaveType': RaceType.BaseSaveType,  # enums
            'BaseAttackType': RaceType.BaseAttackType,  # enums
            'i_like_it_url': request.build_absolute_uri(),
            'inaccurate_url': request.build_absolute_uri(),
        },
        context_instance=RequestContext(request),
    )
Пример #46
0
def skill_detail(request, skill_slug, rulebook_slug=None,
                 rulebook_id=None):
    # fetch the class
    skill = get_object_or_404(Skill.objects.select_related(
        'skill_variant', 'skill_variant__rulebook'), slug=skill_slug)

    # fetch primary variant, this is independent of rulebook selected
    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 is supplied, select find this variant
    if rulebook_slug and rulebook_id:
        # use canonical link in head as this is more or less duplicated content
        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=rulebook_id)

        # possible malformed/changed slug
        if rulebook_slug != selected_variant.rulebook.slug:
            return permanent_redirect_object(request, selected_variant)

        # selected variant is primary! Redirect to canonical url
        if selected_variant == primary_variant:
            return permanent_redirect_view(
                request, skill_detail, kwargs={
                    'skill_slug': skill_slug}
            )
    else:
        # this is canonical, no need to specify it
        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 = DndPaginator(feat_list, request)

    return render_to_response('dnd/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), )
Пример #47
0
def spell_domain_detail(request, spell_domain_slug, rulebook_slug=None, rulebook_id=None):
    # fetch the class
    spell_domain = get_object_or_404(
        Domain.objects.select_related("domain_variant", "domain_variant__rulebook"), slug=spell_domain_slug
    )

    # fetch primary variant, this is independent of rulebook selected
    try:
        primary_variant = (
            DomainVariant.objects.select_related("rulebook", "rulebook__dnd_edition")
            .filter(domain=spell_domain)
            .order_by("-rulebook__dnd_edition__core", "-rulebook__published")[0]
        )
    except Exception:
        primary_variant = None

    # if rulebook is supplied, select find this variant
    if rulebook_slug and rulebook_id:
        # use canonical link in head as this is more or less duplicated content
        use_canonical_link = True
        selected_variant = get_object_or_404(
            DomainVariant.objects.select_related("domain", "rulebook", "rulebook__dnd_edition"),
            domain__slug=spell_domain_slug,
            rulebook__pk=rulebook_id,
        )

        # possible malformed/changed slug
        if rulebook_slug != selected_variant.rulebook.slug:
            return permanent_redirect_object(request, selected_variant)

        # selected variant is primary! Redirect to canonical url
        if selected_variant == primary_variant:
            return permanent_redirect_view(
                request, spell_domain_detail, kwargs={"spell_domain_slug": spell_domain_slug}
            )
    else:
        # this is canonical, no need to specify it
        use_canonical_link = False
        selected_variant = primary_variant

    other_variants = [
        variant
        for variant in spell_domain.domainvariant_set.select_related(
            "rulebook", "rulebook__dnd_edition", "spell_domain"
        ).all()
        if variant != selected_variant
    ]

    if selected_variant:
        display_3e_warning = is_3e_edition(selected_variant.rulebook.dnd_edition)
    else:
        display_3e_warning = False

    spell_list = spell_domain.spell_set.select_related("rulebook", "rulebook__dnd_edition", "school").all()

    paginator = DndPaginator(spell_list, request)

    return render_to_response(
        "dnd/spells/spell_domain_detail.html",
        {
            "spell_domain": spell_domain,
            "spell_list": paginator.items(),
            "paginator": 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),
    )
Пример #48
0
def spell_domain_detail(request,
                        spell_domain_slug,
                        rulebook_slug=None,
                        rulebook_id=None):
    # fetch the class
    spell_domain = get_object_or_404(Domain.objects.select_related(
        'domain_variant', 'domain_variant__rulebook'),
                                     slug=spell_domain_slug)

    # fetch primary variant, this is independent of rulebook selected
    try:
        primary_variant = DomainVariant.objects.select_related(
            'rulebook',
            'rulebook__dnd_edition',
        ).filter(domain=spell_domain, ).order_by(
            '-rulebook__dnd_edition__core', '-rulebook__published')[0]
    except Exception:
        primary_variant = None

    # if rulebook is supplied, select find this variant
    if rulebook_slug and rulebook_id:
        # use canonical link in head as this is more or less duplicated content
        use_canonical_link = True
        selected_variant = get_object_or_404(
            DomainVariant.objects.select_related('domain', 'rulebook',
                                                 'rulebook__dnd_edition'),
            domain__slug=spell_domain_slug,
            rulebook__pk=rulebook_id)

        # possible malformed/changed slug
        if rulebook_slug != selected_variant.rulebook.slug:
            return permanent_redirect_object(request, selected_variant)

        # selected variant is primary! Redirect to canonical url
        if selected_variant == primary_variant:
            return permanent_redirect_view(
                request,
                spell_domain_detail,
                kwargs={'spell_domain_slug': spell_domain_slug})
    else:
        # this is canonical, no need to specify it
        use_canonical_link = False
        selected_variant = primary_variant

    other_variants = [
        variant for variant in spell_domain.domainvariant_set.select_related(
            'rulebook', 'rulebook__dnd_edition', 'spell_domain').all()
        if variant != selected_variant
    ]

    if selected_variant:
        display_3e_warning = is_3e_edition(
            selected_variant.rulebook.dnd_edition)
    else:
        display_3e_warning = False

    spell_list = spell_domain.spell_set.select_related(
        'rulebook', 'rulebook__dnd_edition', 'school').all()

    paginator = DndPaginator(spell_list, request)

    return render_to_response(
        'dnd/spells/spell_domain_detail.html',
        {
            'spell_domain': spell_domain,
            'spell_list': paginator.items(),
            'paginator': 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),
    )