Compare commits
4 Commits
7352af038b
...
327aae5130
| Author | SHA1 | Date | |
|---|---|---|---|
| 327aae5130 | |||
| 2e9fc3655a | |||
| d549b98a82 | |||
| 76d44e0dfe |
@@ -22,7 +22,8 @@ At the moment, an alpha version is undertaken, with these features:
|
|||||||
- Show movements through works (`sw work_number`)
|
- Show movements through works (`sw work_number`)
|
||||||
- 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`)
|
||||||
- (planned) Show mastered works/movements for activated user
|
- Show mastered movements for activated user (`sm`)
|
||||||
|
- (planned) 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")
|
||||||
|
|||||||
34
rep_cli.py
34
rep_cli.py
@@ -12,6 +12,7 @@ class Session:
|
|||||||
'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'),
|
||||||
'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'),
|
||||||
'sw': (self.show_movements, 'Show movements of a work\n Usage: sw work_number'),
|
'sw': (self.show_movements, 'Show movements of a work\n Usage: sw work_number'),
|
||||||
'su': (self.show_users, 'Show all users'),
|
'su': (self.show_users, 'Show all users'),
|
||||||
'q': (self.quit, 'Quits the program')
|
'q': (self.quit, 'Quits the program')
|
||||||
@@ -80,6 +81,35 @@ class Session:
|
|||||||
fun_resultstring += f'{key}: {value[1]}\n'
|
fun_resultstring += f'{key}: {value[1]}\n'
|
||||||
return fun_resultstring
|
return fun_resultstring
|
||||||
|
|
||||||
|
def show_mastered(self, _):
|
||||||
|
fun_resultstring = 'Please activate user'
|
||||||
|
if not self.user == -1:
|
||||||
|
sql_command = f'''
|
||||||
|
SELECT work_id
|
||||||
|
FROM is_able_to_play
|
||||||
|
WHERE pianist_id = {self.user}
|
||||||
|
GROUP BY work_id
|
||||||
|
'''
|
||||||
|
list_of_work_ids = self.db_agent.execute(sql_command).fetchall()
|
||||||
|
list_of_works = list()
|
||||||
|
for item in list_of_work_ids:
|
||||||
|
list_of_works.append(work_under_id(item[0], self.db_agent))
|
||||||
|
fun_resultstring = 'All mastered movements:\n'
|
||||||
|
for work in list_of_works:
|
||||||
|
for mov_number in work.values['movements'].keys():
|
||||||
|
# check if movement is mastered
|
||||||
|
sql_command = f'''
|
||||||
|
SELECT *
|
||||||
|
FROM is_able_to_play
|
||||||
|
WHERE work_id = {work.id()}
|
||||||
|
AND mov_id = {mov_number}
|
||||||
|
AND pianist_id = {self.user}
|
||||||
|
'''
|
||||||
|
is_mastered = len(self.db_agent.execute(sql_command).fetchall()) > 0
|
||||||
|
if is_mastered:
|
||||||
|
fun_resultstring += f'{work.id()} {mov_number}. {work.pretty_mov(mov_number)}\n'
|
||||||
|
return fun_resultstring
|
||||||
|
|
||||||
def show_movements(self, arguments):
|
def show_movements(self, arguments):
|
||||||
work_id = arguments[0]
|
work_id = arguments[0]
|
||||||
work = work_under_id(work_id, self.db_agent)
|
work = work_under_id(work_id, self.db_agent)
|
||||||
@@ -122,7 +152,7 @@ class Session:
|
|||||||
work_id = arguments[0]
|
work_id = arguments[0]
|
||||||
resultstring = 'adding:\n'
|
resultstring = 'adding:\n'
|
||||||
work = work_under_id(work_id, self.db_agent)
|
work = work_under_id(work_id, self.db_agent)
|
||||||
if len(arguments) > 1:
|
if len(arguments) > 1: # in case there is a movement number given
|
||||||
mov_number = int(arguments[1])
|
mov_number = int(arguments[1])
|
||||||
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)
|
||||||
@@ -130,7 +160,7 @@ class Session:
|
|||||||
'''
|
'''
|
||||||
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:
|
else: # mark all movements of the work as mastered
|
||||||
for mov_number in work.values['movements'].keys():
|
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)
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ CREATE TABLE is_able_to_play(
|
|||||||
mov_id INTEGER NOT NULL,
|
mov_id INTEGER NOT NULL,
|
||||||
pianist_id INTEGER NOT NULL,
|
pianist_id INTEGER NOT NULL,
|
||||||
days_to_practice INTEGER DEFAULT 7,
|
days_to_practice INTEGER DEFAULT 7,
|
||||||
recording BLOB,
|
recording VARCHAR(255),
|
||||||
PRIMARY KEY(work_id, mov_id, pianist_id),
|
PRIMARY KEY(work_id, mov_id, pianist_id),
|
||||||
FOREIGN KEY(work_id, mov_id) REFERENCES movement(work_id, mov_number),
|
FOREIGN KEY(work_id, mov_id) REFERENCES movement(work_id, mov_number),
|
||||||
FOREIGN KEY(pianist_id) REFERENCES pianist(id)
|
FOREIGN KEY(pianist_id) REFERENCES pianist(id)
|
||||||
|
|||||||
Reference in New Issue
Block a user