Yleisesti koodi on siistiä, tehokasti, selkeää myös rakenteeltaan. Lohkorakenne on toimiva.
On varmaankin hyödyllistä jaa tietokantaan yhteydessä olevat toiminnot erillisiin haku- ja muutostiedostoihin (utils.py ja db_logic.py). Hyvä, että näihin tiedostoihin oli alussa kommentoitu, mitä asioita niissä hoidetaan, koska tiedostonimen perusteella se ei ollut minulle aivan selvää.
Tietokantataulut ja niiden väliset yhteydet on rakennettu enimmäkseen järkevästi. Mietin foreign key -määrittelyn käyttöä, joka itselleni ei ole kovin tuttua, että mitä käytännön hyötyä se tuo tietokannan käyttöön. Lisäksi, (tätä ei päässyt vielä testaamaan) onnistuukohan useamman eri tuotteen lisääminen shopping_cart , completed_orders ja reviews-tauluihin? Vaikuttaisi siltä, että pitäisi käyttää jotain tietorakenteita, mikä ei ole tietokantojen kanssa optimiratkaisu (tai edes mahdollista?).
Lisäisin joitakin aputauluja, kuten esim. TABLE carts_products (cart_id, product_id, amount), TABLE orders_products (order_id, product_id, amount) ja TABLE reviews_products (cart_id, product_id, amount). Silloin voisi jättää pois päätauluista kentät ‘product_id’, ‘quantity’ ja myös ‘total_price’, jonka voisi laskea tarvittaessa sql:n COUNT-funktiolla/komennolla. Muuttujaan ei jäisi vahingossa päivittämättä oikeata kokonaishintaa. Tai joku toinen parempi tapa…?
Versionhallinnassa committien kommentointi informatiivista, osassa voisi olla imperatiivi-muodossa, jolloin kommentti hieman lyhenisi.
Sovelluskokeilua
Hieman tarkemmin nettikauppasovelluksen kokeilusta seuraavia havaintoja.
Korjasin itselleni kloonattuun koodiin saamani virheilmoituksen perusteella:
...
File "~ /store/simple-online-store/venv/lib/python3.10/site-packages/jinja2/environment.py", line 936, in handle_exception
raise rewrite_traceback_stack(source=source)
• File "~/store/simple-online-store/templates/store.html", line 40, in top-level template code
{% elif products|length == 0 %}
•
TypeError: object of type 'NoneType' has no len()
...
KORJATTU:
store.html
rivi 40: {% elif products|length == 0 %}
korjattu: {% elif products == None %}
→ Pääsee jatkamaan :-)
Admin Page
Add New Product
Product Name ei hyväksy välilyöntejä eikä numeroita – oliko niin tarkoitus?
Product Price – miten lisätään sentit? Toki ihan ok, jos käytetään vain täysiä euroja hintoina :-)
Increase Product Stock
Toimii loistavasti! Huomioi myös, jos lisättävää tuotetta ei ole - hienoa!
Paluu Admin-sivulta kirjaa ulos sovelluksesta. Voisiko olla paluu edelliselle sivulle?
Rekisteröinti toimii hyvin ja ohjaa hienosti oikeellisiin syötteisiin. Samoin kirjautuminen.
Tuotehaku nimellä, ja jopa nimen osalla!, toimii hyvin.
Epäonnisen haun jälkeen voisi jollain painikkeella palata takaisin tuoteluetteloon tai siihen haun aloitussivuun tjs. Mutta se ominaisuus on varmasti tuloillaan. Tuotteiden selaamisen toimintoa en vielä löytänyt.
README kaikkine ohjeineen ja tietoineen on tehty todella selkeäksi ja ammattimaisesti, mikä helpotti kovasti sovelluksen käyttöönottoa ja kokeilemista. Omat tietokantasäätöni eivät mene aivan ohjeen mukaisesti, mutta se on ihan oma päänsärkyni.
Kokonaisuutena sovellusta on saatu jo pitkälle ja se näyttää oikein hyvältä jo tässä vaiheessakin sekä koodin että ulkoasun puolesta.
Koodikatselmusta
Yleisesti koodi on siistiä, tehokasti, selkeää myös rakenteeltaan. Lohkorakenne on toimiva. On varmaankin hyödyllistä jaa tietokantaan yhteydessä olevat toiminnot erillisiin haku- ja muutostiedostoihin (utils.py ja db_logic.py). Hyvä, että näihin tiedostoihin oli alussa kommentoitu, mitä asioita niissä hoidetaan, koska tiedostonimen perusteella se ei ollut minulle aivan selvää.
Tietokantataulut ja niiden väliset yhteydet on rakennettu enimmäkseen järkevästi. Mietin foreign key -määrittelyn käyttöä, joka itselleni ei ole kovin tuttua, että mitä käytännön hyötyä se tuo tietokannan käyttöön. Lisäksi, (tätä ei päässyt vielä testaamaan) onnistuukohan useamman eri tuotteen lisääminen shopping_cart , completed_orders ja reviews-tauluihin? Vaikuttaisi siltä, että pitäisi käyttää jotain tietorakenteita, mikä ei ole tietokantojen kanssa optimiratkaisu (tai edes mahdollista?). Lisäisin joitakin aputauluja, kuten esim. TABLE carts_products (cart_id, product_id, amount), TABLE orders_products (order_id, product_id, amount) ja TABLE reviews_products (cart_id, product_id, amount). Silloin voisi jättää pois päätauluista kentät ‘product_id’, ‘quantity’ ja myös ‘total_price’, jonka voisi laskea tarvittaessa sql:n COUNT-funktiolla/komennolla. Muuttujaan ei jäisi vahingossa päivittämättä oikeata kokonaishintaa. Tai joku toinen parempi tapa…?
Versionhallinnassa committien kommentointi informatiivista, osassa voisi olla imperatiivi-muodossa, jolloin kommentti hieman lyhenisi.
Sovelluskokeilua
Hieman tarkemmin nettikauppasovelluksen kokeilusta seuraavia havaintoja.
Korjasin itselleni kloonattuun koodiin saamani virheilmoituksen perusteella: ... File "~ /store/simple-online-store/venv/lib/python3.10/site-packages/jinja2/environment.py", line 936, in handle_exception raise rewrite_traceback_stack(source=source) • File "~/store/simple-online-store/templates/store.html", line 40, in top-level template code {% elif products|length == 0 %} • TypeError: object of type 'NoneType' has no len() ... KORJATTU: store.html rivi 40: {% elif products|length == 0 %} korjattu: {% elif products == None %}
→ Pääsee jatkamaan :-)
Admin Page Add New Product
Increase Product Stock
Paluu Admin-sivulta kirjaa ulos sovelluksesta. Voisiko olla paluu edelliselle sivulle?
Rekisteröinti toimii hyvin ja ohjaa hienosti oikeellisiin syötteisiin. Samoin kirjautuminen. Tuotehaku nimellä, ja jopa nimen osalla!, toimii hyvin.
Epäonnisen haun jälkeen voisi jollain painikkeella palata takaisin tuoteluetteloon tai siihen haun aloitussivuun tjs. Mutta se ominaisuus on varmasti tuloillaan. Tuotteiden selaamisen toimintoa en vielä löytänyt.
README kaikkine ohjeineen ja tietoineen on tehty todella selkeäksi ja ammattimaisesti, mikä helpotti kovasti sovelluksen käyttöönottoa ja kokeilemista. Omat tietokantasäätöni eivät mene aivan ohjeen mukaisesti, mutta se on ihan oma päänsärkyni.
Kokonaisuutena sovellusta on saatu jo pitkälle ja se näyttää oikein hyvältä jo tässä vaiheessakin sekä koodin että ulkoasun puolesta.
Erittäin hyvää työtä!