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