minovakovi / akdb

An experimental relational DBMS developed by students @ Faculty of Organization and Informatics, University of Zagreb
6 stars 16 forks source link

Fixed the login problem from 2 attempts of the previous exercise, added a new weather command to the client side #300

Open ababic20 opened 4 months ago

ababic20 commented 4 months ago

Ova iteracija fokusirala se na uvođenje novih naredbi koje korisnici mogu koristiti, kao i na rješavanje problema autentifikacije prilikom drugog pokušaja. U nastavku su detaljnije opisana poboljšanja.

1. Dodavanje vremenske komponente (dnevna i tjedna prognoza)⛅🌦

  1. Za dnevnu prognozu koristi se stranica openweathermap.org, na kojoj je kreiran račun kako bi se dobio key. Metode koje su kreirane su check_weather, kelvin_to_celsius, i display_weather_info. Kroz ove metode dohvaćaju se podaci za bilo koji grad, koji se potom prikazuju korisniku. Neki od prikazanih parametara uključuju opis vremenskih prilika, minimalnu i maksimalnu temperaturu, subjektivni osjećaj temperature, vlažnost, brzinu vjetra itd. Podaci su organizirani u obliku tablice radi preglednosti, pri čemu se koristi modul tabulate.
  2. Za tjednu prognozu koristi se stranica weatherapi.com, na kojoj je također kreiran račun. Za razliku od prve stranice, ova nudi samo dvotjednu besplatnu probnu verziju. Pomoću ključa za pristup, podaci se dohvaćaju i prikazuju korisniku u obliku tablice u terminalu isto koristeći tabulate modul.

1. Riješen problem autentifikacije iz drugog pokušaja prijave 🟢

Problem - u prvom pokušaju korisnik unosi krive podatke (koji nisu u bazi) pa samim time ne može proći autentifikacija, nakon toga traži ga se da ponovi unos, klijent unosi ispravne podatke i nakon toga dobija error koji ne bi trebao biti i koji onemogućava prijavu.

Dodano je da kada dođe do BadHostKeyException, korisnik se pita želi li prihvatiti novi ključ. Ako je odgovor "yes", stari ključ se briše sa self.sock.get_host_keys().clear i ponovno se postavlja politika za automatsko prihvaćanje novih ključeva. Nakon toga, pokušava se ponovno uspostaviti veza s novim ključem. Ako korisnik ne prihvati novi ključ, veza se prekida. Osim toga još je i dodatno poboljšan exception kako bi u slučaju problema lakše se razumijelo što ne valja. U nastavku je prikazan rezultat ->