From 157f5b41995966f5aebcc02e4be18bcb6e055b1d Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Fri, 13 Oct 2023 21:41:51 +0200 Subject: [PATCH] =?UTF-8?q?Odkazy=20na=20dokumentaci=20se=20zobrazuj=C3=AD?= =?UTF-8?q?=20v=20z=C3=A1vislosti=20na=20roli=20u=C5=BEivatele?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Samotná dokumentace je dostupná všem, není v ní nic tajného. Jen nechceme uživatele mást. --- mo/web/doc.py | 28 ++++++++++++++++-- mo/web/templates/doc_index.html | 52 ++++++++++++++++++++++++++++----- 2 files changed, 71 insertions(+), 9 deletions(-) diff --git a/mo/web/doc.py b/mo/web/doc.py index 88b6887c..a609d7a5 100644 --- a/mo/web/doc.py +++ b/mo/web/doc.py @@ -1,13 +1,37 @@ # Web: Návody -from flask import render_template +from dataclasses import dataclass +from flask import render_template, g +from typing import List, Optional +import mo.db as db +from mo.rights import Right from mo.web import app +@dataclass +class Doc: + url: str + link_text: str + suffix: Optional[str] = None + min_role: Optional[db.RoleType] = None + cat: Optional[str] = None + + def is_visible(self) -> bool: + if self.min_role is None and self.cat is None: + return True + assert g.gatekeeper is not None + rights = g.gatekeeper.rights_for(cat=self.cat, min_role=self.min_role) + return rights.have_right(Right.view_doc) + + @app.route('/doc/') def doc_index(): - return render_template('doc_index.html') + + def filter_doc(docs: List[Doc]) -> List[Doc]: + return [d for d in docs if d.is_visible()] + + return render_template('doc_index.html', Doc=Doc, filter_doc=filter_doc) @app.route('/doc/organizatori') diff --git a/mo/web/templates/doc_index.html b/mo/web/templates/doc_index.html index 5a374341..8f8b9b4a 100644 --- a/mo/web/templates/doc_index.html +++ b/mo/web/templates/doc_index.html @@ -10,19 +10,57 @@ {% if g.user.is_org or g.user.is_admin %} +{% set docs = filter_doc([ + Doc( + min_role=RoleType.garant_okres, + url='https://docs.google.com/document/d/1nHnvxj_XtnMD2loMtTeoMEbVa4Upd4pEVkXoEKklRY8/edit?usp=sharing', + link_text='Podrobnější návod pro okresní garanty', + ), + Doc( + min_role=RoleType.garant_okres, + cat='A', + url=url_for('static', filename='doc/zakladani-skolnich-garantu.pdf'), + link_text='Zakládání školních garantů', + suffix=' (návod pro okresní a krajské garanty, PDF)' + ), + Doc( + min_role=RoleType.garant_skola, + cat='A', + url='https://docs.google.com/document/d/1ghoLETZyykzk-GjU2SrMhVqpvMugg9ed4g0TQwfeqUM/edit?usp=sharing', + link_text='Podrobnější návod pro školní garanty středních škol', + ), + Doc( + min_role=RoleType.garant_skola, + cat='Z', + url='https://docs.google.com/document/d/1OaX8kCcIkk0hK113n0C9SdZV8hMn2Btb2E6J0bshB3c/edit?usp=sharing', + link_text='Podrobnější návod pro školní garanty základních škol', + ), + Doc( + url=url_for('doc_import'), + link_text='Importování', + ), + Doc( + url=url_for('static', filename='doc/import-navod.pdf'), + link_text='Podrobnější návod k importům', + suffix=' (PDF)' + ), + Doc( + min_role=RoleType.garant_okres, + url=url_for('static', filename='doc/import-skolnich-garantu.pdf'), + link_text='Import školních garantů', + suffix=' (PDF)' + ), +]) %} + <h3>Pro organizátory</h3> <ul> <li><a href='{{ url_for('doc_org') }}'>Obecný popis systému pro organizátory</a> -<li><a href='{{ url_for('static', filename='doc/zakladani-skolnich-garantu.pdf') }}'>Zakládání školních garantů</a> (návod pro okresní a krajské garanty, PDF) <li><a href='{{ url_for('static', filename='doc/prace-s-protokoly.pdf') }}'>Tisk a skenování protokolů</a> (PDF) {# <li><a href='{{ url_for('static', filename='doc/skolni-garanti.pdf') }}'>Podrobnější návod pro školní garanty středních škol</a> (PDF) <em>(zastaralý, bude aktualizován)</em> #} -<li><a href='https://docs.google.com/document/d/1ghoLETZyykzk-GjU2SrMhVqpvMugg9ed4g0TQwfeqUM/edit?usp=sharing'>Podrobnější návod pro školní garanty středních škol</a> -<li><a href='https://docs.google.com/document/d/1OaX8kCcIkk0hK113n0C9SdZV8hMn2Btb2E6J0bshB3c/edit?usp=sharing'>Podrobnější návod pro školní garanty základních škol</a> -<li><a href='https://docs.google.com/document/d/1nHnvxj_XtnMD2loMtTeoMEbVa4Upd4pEVkXoEKklRY8/edit?usp=sharing'>Podrobnější návod pro okresní garanty</a> -<li><a href='{{ url_for('doc_import') }}'>Importování</a> -<li><a href='{{ url_for('static', filename='doc/import-navod.pdf') }}'>Podrobnější návod k importům</a> (PDF) -<li><a href='{{ url_for('static', filename='doc/import-skolnich-garantu.pdf') }}'>Import školních garantů</a> (PDF) +{% for d in docs %} +<li><a href='{{ d.url }}'>{{ d.link_text }}</a>{{ d.suffix|none_value("") }} +{% endfor %} </ul> <h3>Exporty</h3> -- GitLab