Source code for oioioi.contestlogo.processors

from django.template import loader
from django.urls import reverse
from django.utils.functional import lazy

from oioioi.base.utils import memoized
from oioioi.contestlogo.models import ContestIcon, ContestLogo
from oioioi.contests.utils import is_contest_admin


[docs]def logo_processor(request): if not getattr(request, 'contest', None): return {} if is_contest_admin(request): return {} @memoized def generator(): try: instance = ContestLogo.objects.get(contest=request.contest) url = reverse('logo_image_view', kwargs={'contest_id': request.contest.id}) link = instance.link except ContestLogo.DoesNotExist: url = request.contest.controller.default_contestlogo_url() link = request.contest.controller.default_contestlogo_link() if not url: return '' if not link: link = reverse( 'default_contest_view', kwargs={'contest_id': request.contest.id} ) context = {'url': url, 'link': link} template = loader.get_template('contestlogo/logo.html') return template.render(context) return {'extra_menu_top_contestlogo': lazy(generator, str)()}
[docs]def icon_processor(request): if not getattr(request, 'contest', None): return {} @memoized def generator(): icon_list = ContestIcon.objects.filter(contest=request.contest).order_by('pk') urls = [ reverse( 'icon_image_view', kwargs={'icon_id': icon.pk, 'contest_id': request.contest.id}, ) for icon in icon_list ] if not urls: urls = request.contest.controller.default_contesticons_urls() template = loader.get_template('contestlogo/icon.html') htmls = [template.render({'url': url}) for url in urls] return htmls return {'menu_icons': lazy(generator, list)()}