Open gapo8 opened 2 years ago
Živjo! Sem malo pregledal vajin projekt in nisem našel kakšnih bugov oz. težav. Edino, kar pogrešam je:
JOIN
na tabelah. Na primer, pri sponzorjih bi si želeli vedeti polno ime ekipe, ne samo njeno kratico. Verjamem, da vama dodajanje teh dveh stvari ne bo vzelo preveč časa. Glede ostalega sem zadovoljen: oblikovanje je dobro, vse dela brez težav.
Pravzaprav imam še eno pripombo tehnične narave: redirecte trenutno uporabljata tako, da mu podata naslov. Lokalno sicer dela, vendar je potrebno projekt na koncu zagnati tudi na Binderju
. Zato bosta redirecte povsod morala podati s pomočjo funkcije url
.
Na primer, trenutno imata tako:
@post('/prijava/')
def prijava_post():
...
redirect('/zacetna/')
Pravilno morata narediti tako, da v funkcijo url
podata ime funkcije iz NBA.py
, na katero se želite redirectati.
@post('/prijava/')
def prijava_post():
...
redirect(url('izacetna'))
Podobno morata storiti tudi v .html
-jih. Trenutno imata, na primer:
<div>
<p class="lead">Statistični podatki igralcev:</p>
<p>
<a href='/igralci_statistika_19_20/'><button class="btn btn-outline-dark">2019-2020</button></a>
<a href='/igralci_statistika_20_21/'><button class="btn btn-outline-dark">2020-2021</button></a>
<a href='/igralci_statistika_21_22/'><button class="btn btn-outline-dark">2021-2022</button></a>
</p>
</div>
Pravilno bi bilo:
<div>
<p class="lead">Statistični podatki igralcev:</p>
<p>
<a href="{{url('igralci_statistika_19_20_get')}}"><button class="btn btn-outline-dark">2019-2020</button></a>
<a href="{{url('igralci_statistika_19_20_get')}}"><button class="btn btn-outline-dark">2020-2021</button></a>
<a href="{{url('igralci_statistika_19_20_get')}}"><button class="btn btn-outline-dark">2021-2022</button></a>
</p>
</div>
Lahko si tudi pogledata, kako so redirecte naredili ostali, na primer https://github.com/nezakrzan/Nepremicninske-agencije
Hvala za odgovor. V večini primerov je popravljeno s funkcijo url
. Zanima me kako se to popravi pri funkcijah ki imajo podan argument kot spodaj.
<tr>
<td>{{ekipa}}</td>
<td>{{sponzor}}</td>
<td><a href="/sponzorji/uredi/{{ekipa}}">Uredi sponzorja</a></td>
<td><a href="/sponzorji/izbrisi/{{ekipa}}">Izbriši vrstico</a></td>
</tr>
@get('/sponzorji/uredi/<ekipa>')
def uredi_sponzorja_get(ekipa):
ekipa = ekipa
return template('sponzorji_uredi.html', ekipa=ekipa)
@post('/sponzorji/uredi/<ekipa>')
def uredi_sponzorja_post(ekipa):
sponzor = request.forms.sponzor
ekipa = ekipa
cur.execute("UPDATE sponzorji SET sponzor=%s WHERE ekipa=%s",
(sponzor, ekipa))
conn.commit()
redirect(url('sponzorji_get'))
Živjo! Pri spodnjih primerih argumente dodamo kot parametre funkciji url
. Seveda mora biti ime parametra enako tistemu, ki ga sprejme funkcija iz NBA.py
:
<tr>
<td>{{ekipa}}</td>
<td>{{sponzor}}</td>
<td><a href="{{url('uredi_sponzorja_get', ekipa=ekipa)}}">Uredi sponzorja</a></td>
<td><a href="{{url('izbrisi_sponzorja_get', ekipa=ekipa)}}">Izbriši vrstico</a></td>
</tr>
Mislim da je sedaj vse popravljeno, če pa je še kaj prosim sporočite.
Brisanje in urejanje trenutno ne deluje pravilno. Prva težava je v tem, da bi moglo biti možno dodajati samo "obstoječe" ekipe (torej bi rabil v tabeli sponzor
imeti stolpec ekipa
referenco na tabelo ekipe_osnovni_podatki
, stolpec ekipa
). V primeru, ko bi nekdo želel vstaviti v vajino tabelo neobstoječo ekipo, bi torej moralo vrniti neko napako.
Drugi problem je, da če dodam ekipi ATL
še enega (novega) sponzorja, in ga nato zbrišem, se zbrišeta oba (tudi stari) sponzorja Atlante. Podobno, če urejam prvega sponzorja, želim samo njemu spremeniti ime, trenutno pa vama tako dela, da se spremeni obema. Treba si bo torej shraniti ekipo in sponzorja in ob spreminjanju, nekaj v tem stilu:
@post('/sponzorji/uredi/<ekipa>/<trenutni_sponzor>')
def uredi_sponzorja_post(ekipa, trenutni_sponzor):
sponzor = request.forms.sponzor
ekipa = ekipa
cur.execute("UPDATE sponzorji SET sponzor=%s WHERE ekipa=%s AND sponzor=%s",
(sponzor, ekipa, trenutni_sponzor))
conn.commit()
redirect(url('sponzorji_get'))
Podobno je seveda treba popraviti tudi delete.
Ko bo to popravljeno, je treba dodati še Binder
. To storita tako, da:
binder
in pripadajoče datoteke vanjo (glejta druge projekte)start
)Binder
v README
Če bodo seveda kakšne težave oz. kaj ni razumljivo, vprašajta.
Prosim še za pomoč pri binderju saj zaenkrat ne deluje.
Kot vidim, je težava tukaj:
https://github.com/gapo8/NBA/blob/b61b8a1f4f5c90662e126050c621744599c3f4f1/binder/start#L6
Treba bo vrniti vrednost spremenljivke na 443
. PostgreSQL privzeto res teče na vratih 5432, a Binder žal ne dovoli povezave na ta vrata, tako da naš strežnik teče tudi na vratih 443.
Hvala sedaj deluje. Še enkrat me zanima ali je potrebno pri projektu še kaj popraviti ali dodati. LP Gašper
Sedaj projekt večinoma deluje, tako da bom dodal povezavo na repozitorij predmeta. Če se še nista, se lahko z @alenFMF domenita za termin zagovora. Če bosta do takrat še kaj spreminjala, mi javita, da posodobim povezavo.
Opažam sicer, da na Binderju iskanje ne deluje. Težava je tukaj:
https://github.com/gapo8/NBA/blob/7244bafc7e67edbae84111ac8fb0cf9643fee25c/views/osnova.html#L15
Tako kot drugod bo treba uporabiti funkcijo url
:
<script src="{{url('static', filename='nba.js')}}"></script>
Bi pa pripomnil še nekaj stvari. Trenutno imata potrojene tabele s statistiko igralcev in ekip (za vsako sezono eno) - namesto tega naj bo vsaka od teh tabel samo enkrat, pri čemer referenca na igralca oziroma ekipo ter sezona skupaj sestavljata glavni ključ. Tudi predlog ne potrebujeta za vsako sezono, pač pa lahko naredita eno, ki bo pokrivala vse sezone. Opažam še, da za glavne ključe uporabljata kar imena igralcev in trenerjev, kar ni najboljša praksa - bolje bo, če uporabita ID-je (lahko kar s stolpci tipa SERIAL
, da jih bo baza sama generirala), in se potem nanje tudi sklicujeta. Poleg tega v tabeli sponzor
manjka glavni ključ - če ima lahko posamezna ekipa (ta naj bo ustrezna referenca) več sponzorjev, potem je morda najbolje, da uvedeta še en stolpec z ID-jem, ki ga lahko potem uporabita tudi pri brisanju (tj., se sklicujeta na ID ter ne na ekipo in sponzorja).
Pozdravljeni, prosil bi za pregled projekta ter komentar če je potrebno še kaj narediti.