Code Monkey home page Code Monkey logo

aanestys's Introduction

Äänestystietokanta

Eduskuntavaalit kilpailutetaan yksityiselle sektorille. Google tekee tarjouksensa yhteydessä prototyyppitetokannan, joka tallentaa useiden vaalien ehdokkaita, äänestäjiä ja tuloksia. Ehdokkaita tarvitsee tallentaa suuruusluokassa tuhat, ja heidän puolueensa tallennetaan. Tässä vaiheessa ei oteta huomioon loikkauksia. Jokainen äänestäjä voi antaa jokaisessa vaalissa yhden äänen yhdelle ehdokkaalle.

Tietokanta on arkaluontoinen ja tarvitsee tietosujaa.

Ominaisuuksia:

  1. Kirjautuminen
  2. Ehdokkaan lisääminen ja muokkaaminen
  3. Äänestäjän lisääminen ja muokkaaminen
  4. Äänen kirjaaminen
  5. Vaalin tuloksen laskeminen
  6. Ehdokkaiden listaaminen
  7. Äänestäjien ja eri vaaleissa läsnäolon listaaminen

Tietokannan normalisointi suurin piirtein ok.

Ohjelma herokussa Heroku ei toimi , eikä millään parannu; jos tähän löytyy jotain taikaa, sitä en valitettavasti löydä

Tietokantakaavio

Käyttötapauksia

Admin-tunnus:

login: admin

password: admin

Asennus

  1. Varmista että python ja pip ovat asennettu ja toimivat.
  2. Lataa zip ja siirrä sen sisältämä kansio haluamaasi paikkaan.
  3. Avaa komentorivi ja navigoi siirtämääsi kansioon.
  4. Suorita komento: pip install -r requirements.txt
  5. Assenna virtuaaliympäristö komennolla: python3 -m venv venv

Käynnistys

  1. Avaa komentorivi ja navigoi siirtämääsi kansioon.
  2. Aktivoi venv.
  • Windowsilla venv\Scripts\activate.bat
  • Linuxilla source venv/bin/activate
  1. Suorita komento: python run.py

Käyttö

  1. Kirjaudu selaimellasi sivulle localhost:5000
  2. Sivun ylälaidassa on navigaatiopalkki. Palkista löydät linkit sivuille jossa voit:
  • Listata tietokannassa olevat ehdokkaat (kun olet kirjautunut, voit tässä näkymässä myös muokata tai poistaa ehdokkaita, ja äänestää.
  • Lisätä ehdokkaan.
  • Laskea äänet.
  • Kirjautua sisään tai ulos.
  • Luoda käyttäjätunnuksen. Tämä on näkyvissä vain jos et ole kirjautunut sisään.
  1. Tilin luomiseksi paina yläpalkin oikeassa laidassa "Create Account" -linkkiä. Täytä kentät paina tunnus mieleen. Username on se jolla kirjaudutaan, name antaa vain henkilökohtaisen tekstin uloskirjautumislinkkiin.
  2. Kirjautuaksesi sisään paina yläpalkin oikeassa laidassa "Login" -linkkiä. Täytä kentät juuri luomasi tunnuksen tiedoilla tai tässä dokumentissa annetulla admin-tunnuksella.
  3. Luodaksesi ehdokkaan paina yläpalkin vasemmassa laidassa "Add candidate" -linkkiä. Tämä vaatii admin-tilin käyttöä.
  4. Avataksesi vaalit paina yläpalkin keskellä "Open election" -linkkiä. Tämä vaatii admin-tilin käyttöä.
  5. Sulkeaksesi vaalit paina yläpalkin keskellä "Close election" -linkkiä. Tämä vaatii admin-tilin käyttöä.
  6. Nähdäksesi listan ehdokkaista paina yläpalkin vasemmassa laidassa "List candidates" -linkkiä. Tässä näkymässä on lista kaikista tietokannassa olevista ehdokkaista ja heidän puolueistaan (jos olet kirjautunut sisään) niiden vieressä on napit muuttaa ehdokkaan puoluetta, poistaa ehdokkaan tiedot ja äänestää ehdokasta. Voit äänestää vain jos vaalit ovat meneillään.
  7. Laskeaksesi äänet paina yläpalkin vasemmassa laidassa "Tally votes" -linkkiä. Tässä näkymässä on lista ehdokkaista ja heidän äänistä. Voit laskea äänet vain jos vaalit ovat meneillään.

aanestys's People

Contributors

skajanti avatar

aanestys's Issues

Koodikatselmointi pt2

Buildi otettu 29/04/2019 10:36

Tyylitys äänien tulostukseen, form validation esim merkkeihin, kirjaimiin ja määrään tulivat ensimmäisinä puutteina vastaan.
Kun kirjaudun sisään normaalina käyttäjänä, olisi kiva olle näkemättä ominaisuuksia, jota en pysty käyttämään.

Herokussa jos yritän kirjautua tulee error 500, jos yritän tehdä uuden accountin tulee error 500

Kiva idea, mutta parannusehdotuksina: Anna ainoastaan Adminille oikeus lisätä puolueita ja anna puoluevaihtoehdot listana ehdokkaalle josta voi valita yhden, eli ylläpidä erillista taulua puolueille.

Muuten kaikki toimii lokaalisti ilman ongelmia, dokumentaatio on selvää ja asennus oli mutkaton

Koodikatselmointi

Projektin ZIP tiedosto ladattu 7.4. 16:57

Suurin osa listatusta toiminnallisuudesta toimii ongelmitta. Erityisesti testasin kirjautumista, ehdokkaan lisäämistä, äänestämistä, ääntenlaskentaa ja puolueen päivitystä kohtaamatta ongelmia. Seuraavassa kuitenkin pari tapausta, jossa koodi ei toiminut:

Remove candidate poistaa ehdokkaan puolueen ehdokkaan sijasta (nappi on siis oudosti nimetty jos tämä on tarkoitettu toiminnallisuus). Kommentoitu koodi ja debug printtaus viittaa ehkä siihen, että tämä olikin jo tiedossa. Ongelmana taitaa olla se, että sekä metodi candidate_set_party että candidate_remove ovat "POST" pyyntöjä votes/x osoitteeseen, joten selain sovellus tekee aina koodissa ensimmäisenä määritellyn, joka on candidate_set_party.

Kannattaisikin ehkä pitää yleisesti candidates ja votes erillisissä pakkauksissa ja yksilöllisillä url poluilla, jotta tällaisilta ongelmilta välttyisi. Toki tästä tulee kohtuupaljon työtä, mutta uskoisin että se saattaa olla sen arvoista.

Toinen havaittu ongelma on myös vote count sivun tietojen tulostusasu. Nykyinen ratkaisu ei toimi, koska responseen ei talleteta nimettyyn kenttään "name" mitään, vaan nimi löytyy responsen toisesta indexistä. Lisäksi votes_count olion kutsuminen tulostaa koko taulukon jokaisessa loopin kierroksessa. Tämän korjaamista voi lähestyä monella tavalla. Yksi tapa on esimerkiksi tehdä ylimääräinen for lauseke, jossa käydään läpi responsen kentät. Eli siis vote_count.html näyttäisi tältä:

Vertaisarviointi_1

Yksi ongelma tähän ratkaisuun vielä jää, joka on läsnä alkuperäisessäkin, eli se että ehdokkaat, jotka eivät saaneet lainkaan ääniä jäävät listaamatta kokonaan ääntenlaskusivulla. Tällä hetkellä taulukkoa votes ei hyödynnetä mitenkään, joten sitä ei sivulle tarvitse sinänsä hakea. Toisaalta se varmaan on hyödyllinen tämän ongelman ratkaisuun.

Muilta osin sovellus tosiaan toimii niinkuin sen tällä hetkellä pitäisikin ja koodi on ihan laadukasta. Ehkä vielä pikkuhuomautuksena kommentoitua koodia voisi poistaa, sitä on projektissa aika paljon.

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.