Closed jaanos closed 6 years ago
Vidim, da je to urejeno, vašo spletno aplikacijo pa sem testiral in lepo deluje. Edino, kar bi pripomnil, je to, da bi bilo lepše, če pri iskanju ne bi bilo potrbno vpisati celotnega imena jadralca, pač pa bi se pri nepopolnih (oziroma ne-enoličnih) vnosih prikazal seznam zadetkov.
Z @alenFMF ste se že domenili za termin zagovora. Če pa boste še kaj spreminjali, mi prosim javite, da posodobim povezavo na repozitoriju predmeta.
Vidim, da v
app.py
uvažate podatke za prijavo izauth.py
(tega seveda ni v repozitoriju zaradi vnosa v.gitignore
). Ker želite, da bo aplikacijo lahko uporabil kdorkoli, tam torej uvoziteauth_public.py
(glejte vzorec. Seveda bo potrebno nastaviti tudi ustrezne pravice - poglejte si pdurcik/Baza-clanstva-RDR#3. Vaše aplikacije tako nisem mogel preizkusiti.Opažam še, da podatke v poizvedbe vstavljate z metodo
format
, kar pa lahko vodi do napadov SQL injection. Da bodo poizvedbe varne, na mesto vsakega podatka postavite%s
(brez morebitnih navednic!), podatke pa podajte v seznamu kot drugi element metodeexecute
, npr.Poleg tega naredite še nekonstantno število začasnih tabel, kar je v nasprotju s samo organizacijo podatkov - kolikor vidim, to počnete samo za potrebe izračuna točk. Začasno tabelo
klubi_plovi
imate lahko kot pogled (VIEW
), izračuna točk se pa lahko lotite nekako tako.Funkcija
array_agg
spravi podatke iz ene skupine v seznam - tako je mogoče leksikografsko urejati po točkah čez vse plove (priORDER BY
array_agg
poskrbi za ustrezno ureditev številskih točk,tocke_plovi
pa potem uredi še po posebnostih, kjer točke niso navedene). Tako boste v Pythonu direktno dobili seznam točk za vsak plov (to bodo nizi, tako da bodo primerni za prikaz, ne pa tudi nadaljnje računanje).Seveda lahko z ustreznimi
JOIN
i v isti poizvedbi pridobite še ostale podatke o tekmovalcih.