Skip to content
Snippets Groups Projects
Select Git revision
  • 2c4e3d3fcd5e662b2bb3a807808b30b54bc0029c
  • 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_users.py

Blame
  • menu.py 2.18 KiB
    from flask import request, url_for, g
    from typing import List, Optional
    
    from mo.web import app
    
    
    class MenuItem:
        url: str
        name: str
        active_prefix: str
        classes: List[str]
    
        def __init__(self, url: str, name: str, active_prefix: Optional[str] = None, classes: Optional[List[str]] = None):
            self.url = url
            self.name = name
            self.active_prefix = active_prefix or url
            self.classes = classes or []
    
    
    def get_menu():
        if not g.user:
            items = [
                MenuItem(url_for('public_rounds'), "Výsledky"),
            ]
        elif g.user.is_org or g.user.is_admin:
            items = [
                MenuItem(url_for('org_place_root'), "Místa"),
                MenuItem(url_for('org_rounds'), "Soutěž"),
                MenuItem(url_for('org_users'), "Soutěžící"),
                MenuItem(url_for('org_orgs'), "Organizátoři"),
                MenuItem(url_for('org_jobs'), "Dávky"),
                MenuItem(url_for('doc_index'), "Návod"),
            ]
        else:
            items = [
                MenuItem(url_for('doc_index'), "Návod"),
            ]
    
        active = None
        for item in items:
            if not request.path.startswith(item.active_prefix):
                continue
            if active is None or len(item.active_prefix) > len(active.active_prefix):
                active = item
        if active is not None:
            active.classes.append("active")
    
        return items
    
    app.jinja_env.globals.update(get_menu=get_menu)
    
    def get_right_menu():
        items = []
        # Login / user settings
        if g.user:
            name = g.user.full_name()
            if g.user.is_admin:
                name += " [admin]"
            items.append(MenuItem(url_for('user_settings'), name))
        else:
            items.append(MenuItem(url_for('create_acct'), "Založit účet"))
            items.append(MenuItem(url_for('login'), "Přihlásit se", active_prefix="/acct/"))
    
        active = None
        for item in items:
            if not request.path.startswith(item.active_prefix):
                continue
            if active is None or len(item.active_prefix) > len(active.active_prefix):
                active = item
        if active is not None:
            active.classes.append("active")
    
        return items
    
    
    app.jinja_env.globals.update(get_right_menu=get_right_menu)