Merge branch 'next_feature'

This commit is contained in:
2023-11-10 21:48:29 +01:00
2 changed files with 34 additions and 1 deletions

View File

@@ -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`) - Mark movement as mastered for active user (`m number_of_work number_of_movement`)
- Show possible commands (`h`) - Show possible commands (`h`)
- Show mastered movements for activated user (`sm`) - 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) Save recordings per movement in db
- (planned) Listen to saved recordings - (planned) Listen to saved recordings
- (planned) Works are shown sorted (opus, collection e.g. "Walzer", "Sonaten") - (planned) Works are shown sorted (opus, collection e.g. "Walzer", "Sonaten")

View File

@@ -46,7 +46,29 @@ class Session:
def result(self): def result(self):
return self.resultstring 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 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): def create_new_user(self, arguments):
first_name, name = arguments[0], arguments[1] first_name, name = arguments[0], arguments[1]
sql_command = f''' sql_command = f'''
@@ -115,6 +137,10 @@ class Session:
work = work_under_id(work_id, self.db_agent) work = work_under_id(work_id, self.db_agent)
fun_resultstring = '' fun_resultstring = ''
for mov_number in work.values['movements'].keys(): 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' fun_resultstring += f'{mov_number}. {work.pretty_mov(mov_number)}\n'
return fun_resultstring return fun_resultstring
@@ -145,6 +171,13 @@ class Session:
list_of_works.append(work_under_id(item[0], self.db_agent)) list_of_works.append(work_under_id(item[0], self.db_agent))
fun_resultstring = '' fun_resultstring = ''
for work in list_of_works: 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' fun_resultstring += f'{work.id()}: {work.pretty_string()}\n'
return fun_resultstring return fun_resultstring