From cebfa63bed4981856de5fda4fb9d5c958f3c8155 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Fri, 15 Jan 2021 22:43:29 +0100
Subject: [PATCH] =?UTF-8?q?P=C5=99id=C3=A1na=20role=20=C5=A1koln=C3=ADho?=
 =?UTF-8?q?=20garanta?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Zatím má dost velka práva, časem omezíme.
---
 db/db.ddl                |  1 +
 db/upgrade-20210115b.sql |  3 +++
 mo/db.py                 |  2 ++
 mo/rights.py             | 15 +++++++++++++++
 4 files changed, 21 insertions(+)
 create mode 100644 db/upgrade-20210115b.sql

diff --git a/db/db.ddl b/db/db.ddl
index 83bfb7a4..52b984df 100644
--- a/db/db.ddl
+++ b/db/db.ddl
@@ -197,6 +197,7 @@ CREATE TYPE role_type AS ENUM (
 	'garant',		-- celostátní garant (může být omezený na kategorii)
 	'garant_kraj',		-- krajský garant
 	'garant_okres',		-- okresní garant
+	'garant_skola',		-- školní garant
 	'dozor',		-- dozor na soutěži (může odevzdávat řešení za účastníky)
 	'opravovatel'		-- opravovatel
 );
diff --git a/db/upgrade-20210115b.sql b/db/upgrade-20210115b.sql
new file mode 100644
index 00000000..1262c923
--- /dev/null
+++ b/db/upgrade-20210115b.sql
@@ -0,0 +1,3 @@
+SET ROLE 'mo_osmo';
+
+ALTER TYPE role_type ADD VALUE 'garant_skola' AFTER 'garant_okres';
diff --git a/mo/db.py b/mo/db.py
index ec1dfe01..cd9d0a39 100644
--- a/mo/db.py
+++ b/mo/db.py
@@ -348,6 +348,7 @@ class RoleType(MOEnum):
     garant = auto()
     garant_kraj = auto()
     garant_okres = auto()
+    garant_skola = auto()
     dozor = auto()
     opravovatel = auto()
 
@@ -359,6 +360,7 @@ role_type_names = {
     RoleType.garant: 'celostátní garant',
     RoleType.garant_kraj: 'krajský garant',
     RoleType.garant_okres: 'okresní garant',
+    RoleType.garant_skola: 'školní garant',
     RoleType.dozor: 'dozor',
     RoleType.opravovatel: 'opravovatel',
 }
diff --git a/mo/rights.py b/mo/rights.py
index a9daeb9c..63a4e5db 100644
--- a/mo/rights.py
+++ b/mo/rights.py
@@ -84,6 +84,21 @@ roles: List[Role] = [
             Right.edit_users,
         },
     ),
+    Role(
+        role=db.RoleType.garant_skola,
+        rights={
+            # FIXME: Až se pořádně rozjedou školní kola, asi chceme školním správcům omezit
+            # práva na editaci uživatelů. Viz issue #66.
+            Right.assign_rights,
+            Right.edit_place,
+            Right.manage_contest,
+            Right.view_submits,
+            Right.upload_submits,
+            Right.edit_points,
+            Right.add_users,
+            Right.edit_users,
+        },
+    ),
     Role(
         role=db.RoleType.dozor,
         rights={
-- 
GitLab