From 5df7fe62028ec8d83f90c11b1a6f39fc5a9e5dca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ji=C5=99=C3=AD=20Setni=C4=8Dka?= <setnicka@seznam.cz>
Date: Sun, 21 Feb 2021 23:29:53 +0100
Subject: [PATCH] =?UTF-8?q?Funkce=20na=20normalizaci=20ro=C4=8Dn=C3=ADku?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Normalizujeme na rok školní docházky. Nutné pro jednoznačné řazení výsledkovek.
---
 mo/util.py | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/mo/util.py b/mo/util.py
index 7021284e..aaf520c6 100644
--- a/mo/util.py
+++ b/mo/util.py
@@ -184,3 +184,25 @@ def unlink_if_exists(name: str):
         os.unlink(name)
     except FileNotFoundError:
         pass
+
+
+def normalize_grade(grade: str) -> int:
+    """Pokusí se převést třídu ve formátu 7 nebo 3/4 na číslo odpovídající
+    třídě na základní škole (maturitní ročník gymnázia je tedy 9+4 = 13).
+    * Základní škola: nic
+    * Gymnázia: /8, /6 nebo /4
+    * Nerozpoznané ročníky a chyby při převodu: -1"""
+    try:
+        parts = grade.split('/')
+        if len(parts) == 1:
+            return int(parts[0])
+        if len(parts) > 2:
+            return -1
+        year = int(parts[0])
+        school_type = int(parts[1])
+        if school_type in (8, 6, 4):
+            return year + 13 - school_type
+        else:
+            return -1
+    except ValueError:
+        return -1
-- 
GitLab