Skip to content
Snippets Groups Projects
Select Git revision
  • 12de13efa526a858753e193701cce17c428ed1c0
  • devel default
  • master
  • fo
  • jirka/typing
  • fo-base
  • mj/submit-images
  • jk/issue-96
  • jk/issue-196
  • honza/add-contestant
  • honza/mr7
  • honza/mrf
  • honza/mrd
  • honza/mra
  • honza/mr6
  • honza/submit-images
  • honza/kolo-vs-soutez
  • jh-stress-test-wip
  • shorten-schools
19 results

org_round.py

Blame
  • jinja.py 2.29 KiB
    # Konfigurace Jinjových šablon a pomocné funkce
    
    from flask import url_for
    from markupsafe import Markup
    from typing import Any
    
    import mo.config as config
    import mo.db as db
    import mo.util_format as util_format
    from mo.web import app
    from mo.web.org_contest import contest_breadcrumbs
    from mo.web.org_place import place_breadcrumbs
    
    # Konfigurace Jinjy
    
    app.jinja_options['extensions'].append('jinja2.ext.do')
    app.jinja_env.lstrip_blocks = True
    app.jinja_env.trim_blocks = True
    
    # Filtry definované v mo.util_format
    
    app.jinja_env.filters.update(timeformat=util_format.timeformat)
    app.jinja_env.filters.update(inflected=util_format.inflect_number)
    app.jinja_env.filters.update(timedelta=util_format.timedelta)
    app.jinja_env.filters.update(time_and_timedelta=util_format.time_and_timedelta)
    app.jinja_env.filters.update(data_size=util_format.data_size)
    
    # Exporty proměnných
    
    app.jinja_env.globals.update(web_flavor=config.WEB_FLAVOR)
    
    # Export enumů z mo.db:
    app.jinja_env.globals.update(RoundState=db.RoundState)
    app.jinja_env.globals.update(LogType=db.LogType)
    app.jinja_env.globals.update(PartState=db.PartState)
    app.jinja_env.globals.update(RoleType=db.RoleType)
    app.jinja_env.globals.update(PaperType=db.PaperType)
    app.jinja_env.globals.update(JobType=db.JobType)
    app.jinja_env.globals.update(JobState=db.JobState)
    
    # Další typy:
    app.jinja_env.globals.update(Markup=Markup)
    
    # Vlastní pomocné funkce
    
    app.jinja_env.globals.update(contest_breadcrumbs=contest_breadcrumbs)
    app.jinja_env.globals.update(place_breadcrumbs=place_breadcrumbs)
    # Funkce asset_url se přidává v mo.ext.assets
    
    
    @app.template_filter()
    def user_link(u: db.User) -> Markup:
        return Markup('<a href="{url}">{name}{test}</a>').format(url=user_url(u), name=u.full_name(), test=" (test)" if u.is_test else "")
    
    
    def user_url(u: db.User) -> str:
        if u.is_admin or u.is_org:
            return url_for('org_org', id=u.user_id)
        else:
            return url_for('org_user', id=u.user_id)
    
    
    @app.template_filter()
    def pion_link(u: db.User, contest_id: int) -> Markup:
        url = url_for('org_contest_user', contest_id=contest_id, user_id=u.user_id)
        return Markup('<a href="{url}">{name}{test}</a>').format(url=url, name=u.full_name(), test=" (test)" if u.is_test else "")
    
    
    @app.template_filter()
    def or_dash(s: Any) -> str:
        return str(s) if s else ''