Merge branch 'next_feature'
This commit is contained in:
@@ -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")
|
||||||
|
|||||||
33
rep_cli.py
33
rep_cli.py
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user