Hvis man skriver inn noe som ikke er et gyldig menyvalg og ikke gir
treff som produkt/bruker for hurtigkjøp, eller hvis man skriver noe
som ikke gir et eksakt treff for produkt/bruker og avbryter
valgmenyen, viser hovedmenyen seg selv på nytt (istedenfor at man får
bare prompt).
Foreløpig kan man få produkter sortert etter antall solgt og etter
total inntekt. Flere ting som kan legges til: totalt salg per ukedag,
per time i døgnet, per måned etc.
* Fjernet spørsmål om blippekatten siden denne ikke er i bruk lenger.
* Nytt spørsmål: Hvordan fikse feil.
* Fler detaljer om hvordan man oppdaterer FAQ-en.
Gjorde følgende endring i databasen:
ALTER TABLE products
ALTER COLUMN name
TYPE CHARACTER VARYING(45);
Lagret samtidig lengden på produktnavnfeltet i Product.name_length
istedenfor å hardkode det rundt omkring i formatstrenger og
input-sjekker.
(\ /)
(O.o)
(> <) Bunny approves these changes.
Jeg tror grunnen til at programmet henger iblant er at det finnes
flere åpne sesjoner, og at en annen sesjon har låst noe den aktive
sesjonen vil bruke.
De fleste menyene som ikke gjorde noen endringer lukket ikke sesjonen
sin, og selv de som gjorde endringer lukket sesjonen bare hvis de ble
fullført, ikke hvis de ble avbrutt.
Jeg har flyttet all åpning og lukking av sesjoner til funksjonen
Menu.execute, og lagt til egenskapen Menu.uses_db. For menyer som har
denne egenskapen satt til True lages det en sesjon i begynnelsen av
execute, og den lukkes før execute returnerer (lukkingen er beskyttet
av en finally).
Tips for debugging av denne typen problemer (dersom de vedvarer):
SELECT * FROM pg_stat_activity;
SELECT * FROM pg_locks;
Brukergrensesnittet er forsøkt forbedret. Forandringene er basert på
observasjoner av reelle brukeres handlinger.
* Buy-menyen har fått litt ekstra magi for tilfellet der inputstrengen
ikke gir noe treff i databasen. Hvis strengen ser ut som et
brukernavn (dvs finnes i /etc/passwd) eller kortnummer får man
spørsmål om man vil lage brukeren. For kortnummer får man også
muligheten til å assosiere kortnummeret med en eksisterende bruker.
* AddUserMenu presiserer litt tydeligere hva det forventes at man skal
skrive: at brukernavnet skal være PVV-brukernavn og at kortnummeret
kan utelates.
* Menu.confirm er gjort case-insensitiv, så den godtar strengene 'y',
'n', 'yes', 'no' i alle kombinasjoner av små og store bokstaver.
Har nå mulighet for default-valg i confirm (default-en vises med stor
bokstav, som i '(Y/n)', og velges hvis man skriver en tom linje), og
confirm leser input på samme måte som alt annet (via Menu.input_str).
Har laget en funksjon safe_str som prøver å gjøre om et vilkårlig
objekt til noe Python kan printe uten å bli sur. Tok i bruk denne i
raw_input-kallet i Menu.input_str (det viser seg at raw_input blir
muggen hvis den får et unicode-objekt som inneholder ikke-ASCII-tegn).
Uten dette risikerer man å se informasjon fra forrige gang menyen var
åpen når man sier 'what'. BuyMenu var rammet av dette problemet;
kanskje andre menyer også.