ul-fmf / projekt-tomo

Spletna storitev za poučevanje programiranja
https://www.projekt-tomo.si
GNU Affero General Public License v3.0
14 stars 23 forks source link

Šumniki #246

Closed matijapretnar closed 2 years ago

matijapretnar commented 3 years ago

Nekaj se očitno zaštrika pri prenosu iz ArnesAAIja, zato se šumniki v uporabniških imenih nastavijo narobe. Videti je povezano z https://github.com/Brown-University-Library/django-shibboleth-remoteuser/issues/73, saj je to knjižnica, ki jo uporabljamo za povezavo z ArnesAAI. Težavo trenutno rešujemo tako, da jaz na vsake toliko časa poženem sledečo skripto:

from users.models import User

NADOMESTKI = {
    '\xc4\x8d': '\u010d', '\xc4\x8c': '\u010c', '\xc5\xbd': '\u017d',
    '\xc5\xbe': '\u017e', '\xc5\xa1': '\u0161', '\xe5\xa0': '\u0161',
    '\xc5\xa0': '\u0160', '\xe4\x87': '\u0107', '\xc4\x90': '\u0110',
    '\xe4\x91': '\u0111', '\xe4\x91': '\u0106', '\xc4\x86': '\u0106'
}
for user in User.objects.all():
    ime, priimek = user.first_name, user.last_name
    for stara, nova in NADOMESTKI.items():
        ime = ime.replace(stara, nova)
        priimek = priimek.replace(stara, nova)
    ime, priimek = ime.title().strip(), priimek.title().strip()
    if user.first_name != ime or user.last_name != priimek:
        user.first_name = ime
        user.last_name = priimek
        user.save()

Ampak verjetno obstaja boljši način…

sijanec commented 2 years ago

Na žalost pojma nimam, kako delujejo uporabniki tukaj, ampak verjetno bi lahko spremenili metodo User.get_full_name(), ki bi pognala ta replacement hack vsakič, ko bi bilo potrebno... Ali pa bi se vaš replacement loop pognal na vsakem requestu, da slučajno ne bi kazali grdih ISO-8859-Ž napak. Tale sicer pove za možen razlog napake.

matijapretnar commented 2 years ago

Ko sem posodobil pakete, se uporabnikovi podatki posodobijo ob vsaki prijavi, tako da zgornja skripta nima več smisla in je treba najti sistematično rešitev.