Select Git revision
org_users.py
-
Martin Mareš authored
Školní garant smí pracovat jen s uživateli ze své školy (studujícími na dané škole nebo účastnícími se příslušného školního kola).
Martin Mareš authoredŠkolní garant smí pracovat jen s uživateli ze své školy (studujícími na dané škole nebo účastnícími se příslušného školního kola).
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)