Giter Club home page Giter Club logo

toto-betting's Introduction

toto-betting

This repository contains a web app for University of Helsinki's course database app project.

The app can be found on heroku

User stories

User guide

Installation guide

Improvements & missing features

Overview

The idea is to implement toto-betting site where users can place bets on horse racing.

Use these user credentials to gain admin access on heroku:

Username: admin

password: password123

Database diagram

toto-betting's People

Contributors

tykky avatar

Watchers

James Cloos avatar  avatar

toto-betting's Issues

Vertaisarviointi

Vertaisarviointi

Lataamisen ja arvioinnin aikaleima: 31.03.2020 - 15:30

Sovelluksen Toiminta

Sovellus oli arviointivaiheessa hyvin barebones-muodossa, tuettuja toimintoja olivat käyttäjän luominen ja luodulle käyttäjälle kirjautuminen. Molemmat toiminnot toimivat kuitenkin mallikkaasti. Käyttäjän luominen on yksinkertaista, kaikki lomakkeen kentät on validoitu ja kahden salasanakentän sisältöjen samuus tarkistetaan ennen käyttäjän luomista. Käyttäjän luomisen jälkeen sovellus ohjautuu takaisin etusivulle, joten myös saavutettavuuden puolesta toiminnallisuus on kunnossa.

Myös kirjautuminen toimii odotettavasti. Lomake on validoitu, ja kirjautumisen onnistuttua sovellus ohjautuu jälleen etusivulle. Kirjautuminen myös kestää sivun uudelleenlataamiset.

Lyhyesti: Toiminnallisuus on rajoitettua, osasyynä tosin vertaisarvion aikaisuus. Toteutettu toiminnallisuus toimii kuitenkin erinomaisesti.

Rakenne ja Ohjelmakoodi

Projektin rakenne on kaikkiaan selkeä. Tällä hetkellä ainoa muualle eriytetty luokka on auth, mutta näiltä osin eri osille on omat kansionsa, ja tiedostot on nimetty kuten pitääkin. Myös .gitignore on kunnossa, ja projektia kloonatessa "ylimääräisenä" mukaan tulee vain juurihakemiston .idea, joka sekin on omalla tavallaan hyödyllinen jos kloonaaja sattuu Ideaa käyttämään.

Samoin ohjelmakoodi on selkeää ja helppolukuista. Perustoiminnallisuudet on toteutettu kuten kurssimateriaalissa, ja ylimääräiset omaksi toteutukseksi jätetyt osat kuten salasanakenttien syötteiden samuuden ja olemassa olevien käyttäjätunnusten tarkistus sekä salasanojen salaaminen bcrypt:n avulla ovat onnistuneet mallikkaasti.

Ainoa ongelma projektin rakenteessa kloonaushetkellä oli dokumentaation niukkuus. Tietokantakaavio on olemassa ja se on selkeä, mutta esimerkiksi määrittelydokumentti ja käyttötapaukset puuttuvat kokonaan. Tästä siis huomautus, muuten tämän osuuden osalta asiat hyvässä kunnossa.

Lyhyesti: Projekti on selkeä sekä rakenteeltaan että ohjelmakoodiltaan. Dokumentaatiossa kuitenkin puutteita.

Yhteenveto

Projekti on tosiaan hyvin alkuvaiheessa. Kuitenkin kaikki tähän mennessä toteutettu toimii kuten pitääkin ja projekti on rakenteeltaan ja koodiltaan selkeä. Suurin osa dokumentaatiosta puuttuu vielä, mutta tämä onkin oikeastaan projektin ainoa varsinainen ongelma. Kaikkiaan hyvää työtä.

Vertaisarviointi 2

Projektin lataus

  • Latasin ohjelman ohjeiden mukaisesti (latausohjeisiin voisi lisätä vielä komennon:
source venv/bin/activate
  • ennen riippuvuuksien lataamista. Tämä kuitenkin siis onnistui hyvin.

Käyttäjätestaus

  • Kun suoritin ohjelman, tuli selaimeen saman tien sqlalchemysta operation error "no such column: true". Tarkemmin virhe tulee riviltä:
SELECT COUNT(bet.betid) 
    FROM bet INNER JOIN race ON race.raceid = bet.raceid 
    WHERE race.isopen IS true
  • Tämä korjautui osaltani niin, että muutin modelsiin SQL-kyselyyn "...WHERE race.isopen = 1" ja viewsiin place_bet -metodiin:
db.create_all()

seuraavan sijaan:

db.session().add(bet)
  • Omalla koneellani ongelmia tuli siis niissä kohdissa, joissa SQL-kyselyssä oli boolean-attribuutteja käsitelty muuten kuin 0 tai 1. Bets-luokan models.py -tiedostossa oli kaksi moista kohtaa.

  • Yllämainittujen korjausten jälkeen sain ohjelman käyntiin ja loin itselleni tunnukset, jolle tein admin-oikeudet ohjeiden mukaisesti. Tämä onnistui hyvin.

  • Admin-oikeuksillani loin uusia raceja. Tämä onnistui hyvin. Huomasin, että "Add races" -nappi näkyi ainoastaan pääkäyttäjälle, mikä oli kätevää.

  • Uuden kisan lisättyä tuli alle lista kisoista. Listalta pystyy muuttamaan kisan statusta ja poistamaan kisan. Yksi CRUD-ominaisuus siis on olemassa ja toimii hyvin.

  • Sitten lisäsin vetoja kahdelle luomalleni racelle, mutta ne eivät näkyneet "Current bets" -taulukossa vielä.

  • Sitten kirjauduin pääkäyttäjältä ulos, loin uuden käyttäjätunnuksen ja kirjauduin sisään. Tällöin avautui "Available races" -lista, josta pääsi kätevästi vedonlyöntiin. Uusia kisoja ei pystynyt käyttäjällä luomaan (hyvä), eikä ylävalikossa edes ollut tähän ominaisuuteen painiketta (hyvä).

  • Etusivulla näkyy vedonlyönnin jälkeenkin vielä "Bets in total: 0, open bets in total: 0" jne. Tähän ei vielä ole linkitetty yhteenvetokyselyä?

Koodi

  • Luokat vastaavat tietokantakaaviota

  • Koodi on selkeää lukea ja metodien nimet loogisia

  • Muuttujien nimet ovat kuvaavia

  • horses/form.py -tiedostossa on rivi 8 jäänyt hieman kesken

  • Herokussa sovellus bugii kun yrittää lyödä vetoa - Internal Server Error

Muuta

  • Dokumentointi on kivasti tehty - lyhyt, mutta ytimekäs.

  • Käyttöliittymä tyylit ovat yhtenäiset ja käyttöliittymä on hyvin intuitiivinen käyttää.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.