Source code for oioioi.base.templatetags.simple_tags

from django import template
from django.contrib.admin.views.main import PAGE_VAR
from django.urls import NoReverseMatch, reverse
from django.utils.html import format_html

[docs]register = template.Library()
@register.simple_tag(takes_context=True)
[docs]def active_url(context, pattern_or_urlname, returned_class='active'): """ Returns returned_class if given pattern or url matches context active url. .. usage:: ``` {% load active_url %} <a class="{% active_url 'my_home_page' %}">Home Page</a> <a class="{% active_url '^$' %}>Home Page</a> ``` :param context: :param pattern_or_urlname: Regex or `name` defined in urls.py :param returned_class: A string to return if the url is active :return: returned_class or `None` """ try: pattern = reverse(pattern_or_urlname) except NoReverseMatch: pattern = pattern_or_urlname path = context['request'].path if pattern == path: return returned_class return ''
@register.simple_tag(takes_context=True)
[docs]def site_displayed_tag(context): request = context['request'] if 'first_view_after_logging' in request.session: del request.session['first_view_after_logging'] return ''
# https://stackoverflow.com/questions/28513528/passing-arguments-to-model-methods-in-django-templates @register.simple_tag
[docs]def call_method_with_arguments(obj, method_name, *args): return getattr(obj, method_name)(*args)
# Adapted from django/contrib/admin/templatetags/admin_list.py @register.simple_tag
[docs]def admin_paginator_number(cl, i): """ Generate an individual page index link in a paginated list. """ if i == cl.paginator.ELLIPSIS: return format_html('<span class="page-link">{}</span>', cl.paginator.ELLIPSIS) elif i == cl.page_num: return format_html('<span class="page-link">{}</span>', i) else: return format_html( '<a class="page-link" href="{}">{}</a> ', cl.get_query_string({PAGE_VAR: i}), i, )