From 32dc97e1c4b1b9cbf65c7f7763ae046bfc75b4c7 Mon Sep 17 00:00:00 2001 From: "Pavel \"LEdoian\" Turinsky" Date: Wed, 22 Feb 2023 07:19:33 +0100 Subject: [PATCH] =?UTF-8?q?Mo=C5=BEnost=20p=C5=99idat=20si=20do=20n=C3=A1z?= =?UTF-8?q?v=C5=AF=20p=C5=99=C3=ADloh=20=C5=99e=C5=A1en=C3=AD=20i=20jm?= =?UTF-8?q?=C3=A9na=20=C5=99e=C5=A1itele?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Budu zlobit a vysvětlení napíšu až do pull-requestu. Tady to IMHO čtu jen já :-P Pull-Request-URL: https://gitea.ks.matfyz.cz/mam/mamweb/pulls/26 (Adresa platí, pokud mě nikdo nepředběhne :-P) --- .../templates/odevzdavatko/detail.html | 25 +++++++++++++- odevzdavatko/templatetags/__init__.py | 0 odevzdavatko/templatetags/jmena.py | 9 +++++ personalni/utils.py | 11 +++++++ various/utils.py | 33 +++++++++++++++++++ 5 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 odevzdavatko/templatetags/__init__.py create mode 100644 odevzdavatko/templatetags/jmena.py create mode 100644 personalni/utils.py create mode 100644 various/utils.py diff --git a/odevzdavatko/templates/odevzdavatko/detail.html b/odevzdavatko/templates/odevzdavatko/detail.html index 7414b517..7443afa4 100644 --- a/odevzdavatko/templates/odevzdavatko/detail.html +++ b/odevzdavatko/templates/odevzdavatko/detail.html @@ -2,12 +2,26 @@ {% load static %} {% load deadliny %} {% load mail %} +{% load jmena %} {% block content %} {% if edit %} + {% endif %} @@ -40,11 +54,20 @@ SouborŘešitelova poznámkaDatum {% for priloha in object.prilohy.all %} - {{ priloha.split | last }} + {{ priloha.split | last }} {{ priloha.res_poznamka }} {{ priloha.vytvoreno }} {% endfor %} +{% if edit %} {# FIXME: tohle nesouvisí s editací, ale s tím, jestli je člověk org… #} + {# FIXME: vypadá to hnusně. #} + + +{% endif %} {% else %}

Žádné přílohy

{% endif %} diff --git a/odevzdavatko/templatetags/__init__.py b/odevzdavatko/templatetags/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/odevzdavatko/templatetags/jmena.py b/odevzdavatko/templatetags/jmena.py new file mode 100644 index 00000000..9fe91ff5 --- /dev/null +++ b/odevzdavatko/templatetags/jmena.py @@ -0,0 +1,9 @@ +from django import template +register = template.Library() + +from personalni.utils import normalizuj_jmeno +import seminar.models as m # jen kvůli typové anotaci… + +@register.filter +def jmeno_jako_prefix(o: m.Osoba): + return normalizuj_jmeno(o).replace(' ', '_') diff --git a/personalni/utils.py b/personalni/utils.py new file mode 100644 index 00000000..0701d66a --- /dev/null +++ b/personalni/utils.py @@ -0,0 +1,11 @@ +import seminar.models as m +from various.utils import bez_diakritiky_translate +import re + +def normalizuj_jmeno(o: m.Osoba) -> str: + # FIXME: Možná není potřeba vázat na model? + cele_jmeno = f'{o.jmeno} {o.prijmeni}' + cele_jmeno = cele_jmeno.translate(bez_diakritiky_translate) + cele_jmeno = re.sub(r'[^a-zA-Z- ]', '', cele_jmeno) + return cele_jmeno + diff --git a/various/utils.py b/various/utils.py new file mode 100644 index 00000000..5905b2f6 --- /dev/null +++ b/various/utils.py @@ -0,0 +1,33 @@ +bez_diakritiky = ({} + # FIXME: funguje jen pro český a slovenský text, jinak jsou špatně + # transliterace. Potenciální řešení: + # https://stackoverflow.com/questions/517923/what-is-the-best-way-to-remove-accents-normalize-in-a-python-unicode-string + # (ale přidává to další závislosti…) + + # Tisknutelné ASCII + | {chr(a): chr(a) for a in range(32, 126+1)} + + # České, slovenské a blízké diakritiky a divnoznaky + | { x: 'a' for x in 'áÁäÄ'} + | { x: 'c' for x in 'čČ'} + | { x: 'd' for x in 'ďĎ'} + | { x: 'e' for x in 'éÉěĚëË'} + | { x: 'i' for x in 'íÍ'} + | { x: 'l' for x in 'ľĽĺĹ'} + | { x: 'n' for x in 'ňŇ'} + | { x: 'o' for x in 'óÓöÖôÔ'} + | { x: 'r' for x in 'řŘŕŔ'} + | { x: 's' for x in 'šŠßẞ'} + | { x: 't' for x in 'ťŤ'} + | { x: 'u' for x in 'úÚůŮ'} + | { x: 'y' for x in 'ýÝ'} + | { x: 'z' for x in 'žŽ'} + ) + +# Tabulka pro str.translate +class _bez_diakritiky_translate: + def __getitem__(self, it): + return ord(bez_diakritiky.get(chr(it), None)) +bez_diakritiky_translate = _bez_diakritiky_translate() + +# TODO: testy?