class LoginMenu: """Kirjautumisesta vastaava luokka""" def __init__(self): """Luokan konstruktori. Käyttäliittymä ja tietokantayhteys""" self._ui = UI() self._repository = CourseRepository(get_database_connection()) def login(self): """Kirjautuminen Returns: Käyttäjänimi """ username="" while username=="": username = self._ui.read("Anna käyttäjätunnus: ") result = self._repository.find_user(username) if result == []: self._ui.write("Ei tunnusta valmiina") self._singup(username) self.login() else: result=[] while result==[]: password = self._ui.read_password("Anna salasana: ") result = self._repository.find_password(username,password) return username def _singup(self,username): """Uuden tunnuksen luonti Args: username: käyttäjänimi """ result = self._ui.read("Haluatko luoda tunnuksen k/e: ") if result == "k": password_check=False while password_check is False: password=self._ui.read_password("Anna uusi salasana: ") if len(password)>4: password_check=True else: self._ui.write("Liian lyhyt salasana") self._repository.new_user(username, password)
def __init__(self, username): """Luokan konstruktori. Luo päävalikon valinnat Args: username: kirjautuneen käyttäjän nimi """ self._actions = { "x": "x Lopeta", "1": "1 Uusi kurssi", "2": "2 Hae kurssit", "3": "3 Poista kurssi", "4": "4 Muuta tietoja", "5": "5 Syötä tenttipäivämäärä", "6": "6 Ilmoittaudu kurssille", "7": "7 Tulevat tenttini" } self._headers = ["Kurssi", "Opintopisteet"] self._ui = UI() self._repository = CourseRepository(get_database_connection()) self._username = username
class TestLogin(unittest.TestCase): def setUp(self): self.users = CourseRepository(get_database_connection()) self.users.delete_all() self.login = LoginMenu def test_newuser(self): self.users.new_user("tomi", "salasana") result = self.users.find_user("tomi") self.assertEqual(len(result), 1) def test_password(self): self.users.new_user("tomi", "salasana") result = self.users.find_password("tomi", "salasana") self.assertEqual(len(result), 1)
def setUp(self): self.users = CourseRepository(get_database_connection()) self.users.delete_all() self.login = LoginMenu
def setUp(self): self.course = CourseRepository(get_database_connection()) self.users = CourseRepository(get_database_connection()) self.course.delete_all()
class TestData(unittest.TestCase): def setUp(self): self.course = CourseRepository(get_database_connection()) self.users = CourseRepository(get_database_connection()) self.course.delete_all() def test_create(self): self.course.create("english","2") courses = self.course.get() self.assertEqual(len(courses),1) self.assertEqual(courses[0].course_name,"english") self.assertEqual(courses[0].credit,2) def test_find_all(self): self.course.create("english","2") self.course.create("math","5") courses = self.course.get() self.assertEqual(len(courses),2) self.assertEqual(courses[0].course_name,"english") self.assertEqual(courses[0].credit,2) self.assertEqual(courses[1].course_name,"math") self.assertEqual(courses[1].credit,5) def test_find_one(self): self.course.create("english","2") courses = self.course.one_course("english") self.assertEqual(len(courses),1) def test_delete_one(self): self.course.create("swedish","2") self.course.delete_one("swedish") courses = self.course.one_course("swedish") self.assertEqual(len(courses),0) def test_change(self): self.course.create("history","2") self.course.change("history","4") courses = self.course.get() self.assertEqual(courses[0].credit,4) def test_course_date(self): self.course.create("english","3") self.course.course_date("english","20211230") courses = self.course.get() self.assertEqual(courses[0].date,"20211230") def test_register_course(self): self.course.create("english","3") self.users.new_user("tomi","salasana") self.course.register_course("english","tomi") self.course.course_date("english","20211231") register = self.course.my_exam("tomi","20210101") self.assertEqual(len(register),1)
class HomeMenu: """Päävalikon logiikasta vastaava luokka Attributes: username: kirjautuneen käyttäjän nimi """ def __init__(self, username): """Luokan konstruktori. Luo päävalikon valinnat Args: username: kirjautuneen käyttäjän nimi """ self._actions = { "x": "x Lopeta", "1": "1 Uusi kurssi", "2": "2 Hae kurssit", "3": "3 Poista kurssi", "4": "4 Muuta tietoja", "5": "5 Syötä tenttipäivämäärä", "6": "6 Ilmoittaudu kurssille", "7": "7 Tulevat tenttini" } self._headers = ["Kurssi", "Opintopisteet"] self._ui = UI() self._repository = CourseRepository(get_database_connection()) self._username = username def start(self): """Päävalikko""" self._help() while True: action = self._ui.read("Anna komento: ") if not action in self._actions: self._ui.write("virheellinen komento") self._help() continue if action == "1": self._new_course() elif action == "2": self._get_courses() elif action == "3": self._delete_course() elif action == "4": self._change_course() elif action == "5": self._exam_date() elif action == "6": self._register_course() elif action == "7": self._my_exam() elif action == "x": break def _input_course(self): """Kurssin tarkistaminen tietokannasta Returns: Kurssin nimi jos ei löydy niin False """ name = self._ui.read("Anna kurssinimi: ") if self._repository.one_course(name) == []: self._ui.write("Kurssia ei löydy") return False return name def _new_course(self): """Uuden kurssin luominen""" name = self._ui.read("Anna kurssinimi: ") credit = self._ui.read("Anna opintopisteet: ") self._repository.create(name, credit) def _get_courses(self): """Kurssitietojen haku""" self._ui.write("{:<15}{:<18}".format(self._headers[0], self._headers[1])) for i in self._repository.get(): self._ui.write("{:<15}{:<18}".format(i.course_name, i.credit)) def _delete_course(self): """Kurssin poistaminen""" name = self._input_course() if name is not False: self._repository.delete_one(name) def _change_course(self): """Kurssin opintopisteiden vaihtaminen""" name = self._input_course() if name is not False: credit = self._ui.read("Anna uudet opintopisteet: ") self._repository.change(name, credit) def _exam_date(self): """Kurssin tenttipäivän lisääminen""" name = self._input_course() if name is not False: date = self._ui.read("Anna tenttipäivämäärä dd/mm/yyyy: ") day, month, year = date.split('/') try: datetime.datetime(int(year), int(month), int(day)) except ValueError: self._ui.write("Väärä päivämäärä") return today_date = datetime.datetime.today().strftime('%Y%m%d') if date < today_date: self._ui.write("Väärä päivämäärä") return self._repository.course_date(name, year + month + day) def _register_course(self): """Kurssille rekisteröinti""" name = self._input_course() if name is not False: self._repository.register_course(name, self._username) def _my_exam(self): """Käyttäjän tulevat kurssit""" today_date = datetime.datetime.today().strftime('%Y%m%d') for i in self._repository.my_exam(self._username, today_date): self._ui.write("{:<15}{:<18}".format( i[0], i[1][6:8] + "/" + i[1][4:6] + "/" + i[1][2:4])) def _help(self): """Päävalikko""" for i in self._actions: self._ui.write(self._actions[i])
def __init__(self): """Luokan konstruktori. Käyttäliittymä ja tietokantayhteys""" self._ui = UI() self._repository = CourseRepository(get_database_connection())