From f42857eb5695221776bb92e3c88011d6bab13486 Mon Sep 17 00:00:00 2001 From: Jan Bertram Date: Fri, 10 Nov 2023 08:54:11 +0100 Subject: [PATCH 1/3] displays mastered per movement (not yet per work) --- rep_cli.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/rep_cli.py b/rep_cli.py index 14d0ea4..aa39826 100644 --- a/rep_cli.py +++ b/rep_cli.py @@ -46,7 +46,24 @@ class Session: def result(self): return self.resultstring + + def movement_is_mastered(self, work_id, mov_id): + is_mastered = False + if self.user != -1: + sql_command = f''' + SELECT * + FROM is_able_to_play + WHERE work_id = {work_id} + AND mov_id = {mov_id} + AND pianist_id = {self.user} + ''' + if self.db_agent.execute(sql_command).fetchone(): + is_mastered = True + return is_mastered + def work_is_mastered(self, work): + pass + def create_new_user(self, arguments): first_name, name = arguments[0], arguments[1] sql_command = f''' @@ -115,6 +132,10 @@ class Session: work = work_under_id(work_id, self.db_agent) fun_resultstring = '' for mov_number in work.values['movements'].keys(): + if self.movement_is_mastered(work_id, mov_number): + fun_resultstring += '[x] ' + else: + fun_resultstring += '[ ] ' fun_resultstring += f'{mov_number}. {work.pretty_mov(mov_number)}\n' return fun_resultstring From 127e2294e5e0aa973524128e0224f1d53fb3e808 Mon Sep 17 00:00:00 2001 From: Jan Bertram Date: Fri, 10 Nov 2023 21:47:36 +0100 Subject: [PATCH 2/3] New feature: if work is mastered is shown for active user by checkbox --- rep_cli.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/rep_cli.py b/rep_cli.py index aa39826..8ec8455 100644 --- a/rep_cli.py +++ b/rep_cli.py @@ -61,8 +61,13 @@ class Session: is_mastered = True return is_mastered - def work_is_mastered(self, work): - pass + def percentage_of_work_is_mastered(self, work): # work, not work_id, as a work-object is created anyway when there's need to check + number_of_movements = len(work.values['movements']) + count_mastered = 0 + for key in work.values['movements']: + if self.movement_is_mastered(work.id(), key): + count_mastered += 1 + return int(count_mastered / number_of_movements * 100) def create_new_user(self, arguments): first_name, name = arguments[0], arguments[1] @@ -166,6 +171,13 @@ class Session: list_of_works.append(work_under_id(item[0], self.db_agent)) fun_resultstring = '' for work in list_of_works: + mastered = self.percentage_of_work_is_mastered(work) + if mastered == 100: + fun_resultstring += '[x] ' + elif mastered > 0: + fun_resultstring += '[/] ' + else: + fun_resultstring += '[ ] ' fun_resultstring += f'{work.id()}: {work.pretty_string()}\n' return fun_resultstring From 15fd7900deccd1d0d3b5f509998b78df06617e0b Mon Sep 17 00:00:00 2001 From: Jan Bertram Date: Fri, 10 Nov 2023 21:48:10 +0100 Subject: [PATCH 3/3] updates README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 94268e4..c9d77e3 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ At the moment, an alpha version is undertaken, with these features: - Mark movement as mastered for active user (`m number_of_work number_of_movement`) - Show possible commands (`h`) - Show mastered movements for activated user (`sm`) -- (planned) display, if work or movement is mastered from active user when viewing works and movements +- display, if work or movement is mastered from active user when viewing works and movements - (planned) Save recordings per movement in db - (planned) Listen to saved recordings - (planned) Works are shown sorted (opus, collection e.g. "Walzer", "Sonaten")