new feature: remove works or movements from being mastered
This commit is contained in:
@@ -25,7 +25,7 @@ At the moment, an alpha version is undertaken, with these features:
|
|||||||
- Show mastered movements for activated user (`sm`)
|
- Show mastered movements for activated user (`sm`)
|
||||||
- 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
|
||||||
- Works are shown sorted by composer and opus/work_directory-number (`s`, `smo`) or by composer and collection (`sm`)
|
- Works are shown sorted by composer and opus/work_directory-number (`s`, `smo`) or by composer and collection (`sm`)
|
||||||
- (planned) Remove work or movement from being mastered for active user
|
- Remove work or movement from being mastered for active user (`r number_of_work` or `r number_of_work number_of_movement`)
|
||||||
- (planned) Remove user
|
- (planned) Remove user
|
||||||
- (planned) Fix known bugs
|
- (planned) Fix known bugs
|
||||||
|
|
||||||
|
|||||||
65
rep_cli.py
65
rep_cli.py
@@ -12,6 +12,7 @@ class Session:
|
|||||||
'h': (self.show_help, 'Displays this help document'),
|
'h': (self.show_help, 'Displays this help document'),
|
||||||
'm': (self.mark_work_as_mastered, 'Marks work or movement as mastered for the active user\n Usage: m number_of_work, m number_of_work number_of_movement'),
|
'm': (self.mark_work_as_mastered, 'Marks work or movement as mastered for the active user\n Usage: m number_of_work, m number_of_work number_of_movement'),
|
||||||
'n': (self.create_new_user, 'Creates new user\n Usage: n firstname name'),
|
'n': (self.create_new_user, 'Creates new user\n Usage: n firstname name'),
|
||||||
|
'r': (self.remove_work_as_mastered, 'Unmarks work or movement as mastered for the active user\n Usage: r number_of_work, r number_of_work number_of_movement'),
|
||||||
's': (self.show_works, 'Show the works stored in the database\n Usage: s, s number_of_composer'),
|
's': (self.show_works, 'Show the works stored in the database\n Usage: s, s number_of_composer'),
|
||||||
'sm': (self.show_mastered, 'Show mastered movements for activated user'),
|
'sm': (self.show_mastered, 'Show mastered movements for activated user'),
|
||||||
'smo': (self.show_mastered_opus, 'Show mastered movements for activated user, sorted by opus.'),
|
'smo': (self.show_mastered_opus, 'Show mastered movements for activated user, sorted by opus.'),
|
||||||
@@ -193,25 +194,63 @@ class Session:
|
|||||||
return fun_resultstring
|
return fun_resultstring
|
||||||
|
|
||||||
def mark_work_as_mastered(self, arguments):
|
def mark_work_as_mastered(self, arguments):
|
||||||
work_id = arguments[0]
|
if self.user == -1:
|
||||||
resultstring = 'adding:\n'
|
resultstring = 'Please activate user'
|
||||||
work = work_under_id(work_id, self.db_agent)
|
else:
|
||||||
if len(arguments) > 1: # in case there is a movement number given
|
work_id = arguments[0]
|
||||||
mov_number = int(arguments[1])
|
resultstring = 'adding:\n'
|
||||||
sql_command = f'''
|
work = work_under_id(work_id, self.db_agent)
|
||||||
INSERT INTO is_able_to_play (work_id, mov_id, pianist_id)
|
if len(arguments) > 1: # in case there is a movement number given
|
||||||
VALUES ({work_id}, {mov_number}, {self.user})
|
mov_number = int(arguments[1])
|
||||||
'''
|
|
||||||
self.db_agent.execute(sql_command)
|
|
||||||
resultstring += f'{work.pretty_mov(mov_number)}\n'
|
|
||||||
else: # mark all movements of the work as mastered
|
|
||||||
for mov_number in work.values['movements'].keys():
|
|
||||||
sql_command = f'''
|
sql_command = f'''
|
||||||
INSERT INTO is_able_to_play (work_id, mov_id, pianist_id)
|
INSERT INTO is_able_to_play (work_id, mov_id, pianist_id)
|
||||||
VALUES ({work_id}, {mov_number}, {self.user})
|
VALUES ({work_id}, {mov_number}, {self.user})
|
||||||
'''
|
'''
|
||||||
self.db_agent.execute(sql_command)
|
self.db_agent.execute(sql_command)
|
||||||
resultstring += f'{work.pretty_mov(mov_number)}\n'
|
resultstring += f'{work.pretty_mov(mov_number)}\n'
|
||||||
|
else: # mark all movements of the work as mastered
|
||||||
|
for mov_number in work.values['movements'].keys():
|
||||||
|
sql_command = f'''
|
||||||
|
INSERT INTO is_able_to_play (work_id, mov_id, pianist_id)
|
||||||
|
VALUES ({work_id}, {mov_number}, {self.user})
|
||||||
|
'''
|
||||||
|
self.db_agent.execute(sql_command)
|
||||||
|
resultstring += f'{work.pretty_mov(mov_number)}\n'
|
||||||
|
return resultstring
|
||||||
|
|
||||||
|
def remove_work_as_mastered(self, arguments):
|
||||||
|
if self.user == -1:
|
||||||
|
resultstring = 'Please activate user'
|
||||||
|
else:
|
||||||
|
work_id = arguments[0]
|
||||||
|
resultstring = 'removing:\n'
|
||||||
|
work = work_under_id(work_id, self.db_agent)
|
||||||
|
if len(arguments) > 1: # in case there is a movment number given
|
||||||
|
mov_number = int(arguments[1])
|
||||||
|
if self.movement_is_mastered(work_id, mov_number):
|
||||||
|
sql_command = f'''
|
||||||
|
DELETE FROM is_able_to_play
|
||||||
|
WHERE work_id = {work_id}
|
||||||
|
AND mov_id = {mov_number}
|
||||||
|
AND pianist_id = {self.user}
|
||||||
|
'''
|
||||||
|
self.db_agent.execute(sql_command)
|
||||||
|
resultstring += f'{work.pretty_mov(mov_number)}\n'
|
||||||
|
else:
|
||||||
|
resultstring += f'Movement was not marked as mastered: {work.pretty_mov(mov_number)}\n'
|
||||||
|
else:
|
||||||
|
for mov_number in work.values['movements'].keys():
|
||||||
|
if self.movement_is_mastered(work_id, mov_number):
|
||||||
|
sql_command = f'''
|
||||||
|
DELETE FROM is_able_to_play
|
||||||
|
WHERE work_id = {work_id}
|
||||||
|
AND mov_id = {mov_number}
|
||||||
|
AND pianist_id = {self.user}
|
||||||
|
'''
|
||||||
|
self.db_agent.execute(sql_command)
|
||||||
|
resultstring += f'{work.pretty_mov(mov_number)}\n'
|
||||||
|
else:
|
||||||
|
resultstring += f'Movement was not marked as mastered: {work.pretty_mov(mov_number)}\n'
|
||||||
return resultstring
|
return resultstring
|
||||||
|
|
||||||
def quit(self, _):
|
def quit(self, _):
|
||||||
|
|||||||
Reference in New Issue
Block a user