new feature: delete user including all other related records
This commit is contained in:
@@ -26,7 +26,7 @@ At the moment, an alpha version is undertaken, with these features:
|
|||||||
- 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`)
|
||||||
- Remove work or movement from being mastered for active user (`r number_of_work` or `r number_of_work number_of_movement`)
|
- 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
|
- Remove user (`delete_my_user_record_including_all_mastered_works`)
|
||||||
- (planned) Fix known bugs
|
- (planned) Fix known bugs
|
||||||
|
|
||||||
_(planned) Release piano_repertoire_cli V 0.0.1 alpha (learn about versioning before)_
|
_(planned) Release piano_repertoire_cli V 0.0.1 alpha (learn about versioning before)_
|
||||||
|
|||||||
18
rep_cli.py
18
rep_cli.py
@@ -9,6 +9,7 @@ class Session:
|
|||||||
self.resultstring = 'no results yet'
|
self.resultstring = 'no results yet'
|
||||||
self.commands = {'a': (self.set_user, 'Set an active user\n Usage: a number_of_user'),
|
self.commands = {'a': (self.set_user, 'Set an active user\n Usage: a number_of_user'),
|
||||||
'c': (self.show_composers, 'Shows composers'),
|
'c': (self.show_composers, 'Shows composers'),
|
||||||
|
'delete_my_user_record_including_all_mastered_works': (self.delete_user, 'DangerZone: deletes user and all marks of mastered works'),
|
||||||
'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'),
|
||||||
@@ -81,6 +82,21 @@ class Session:
|
|||||||
self.db_agent.execute(sql_command)
|
self.db_agent.execute(sql_command)
|
||||||
return f'Created new user {first_name} {name}.'
|
return f'Created new user {first_name} {name}.'
|
||||||
|
|
||||||
|
def delete_user(self, _):
|
||||||
|
resultstring = ''
|
||||||
|
if self.user == -1:
|
||||||
|
resultstring += 'Please activate user'
|
||||||
|
else:
|
||||||
|
user_name = self.get_active_user()
|
||||||
|
sql_command = f'''
|
||||||
|
DELETE FROM pianist
|
||||||
|
WHERE id = {self.user}
|
||||||
|
'''
|
||||||
|
self.db_agent.execute(sql_command)
|
||||||
|
resultstring += f'Deleted user {user_name}'
|
||||||
|
return resultstring
|
||||||
|
|
||||||
|
|
||||||
def show_composers(self, _):
|
def show_composers(self, _):
|
||||||
sql_command = '''
|
sql_command = '''
|
||||||
SELECT id, first_name, name
|
SELECT id, first_name, name
|
||||||
@@ -406,6 +422,8 @@ def command_line_loop(session):
|
|||||||
def main():
|
def main():
|
||||||
con = sqlite3.connect('repertoire.db')
|
con = sqlite3.connect('repertoire.db')
|
||||||
db_agent = con.cursor()
|
db_agent = con.cursor()
|
||||||
|
sql_command = 'PRAGMA foreign_keys = ON'
|
||||||
|
db_agent.execute(sql_command)
|
||||||
session = Session(db_agent)
|
session = Session(db_agent)
|
||||||
command_line_loop(session)
|
command_line_loop(session)
|
||||||
con.commit()
|
con.commit()
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ CREATE TABLE is_able_to_play(
|
|||||||
recording VARCHAR(255),
|
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) ON DELETE CASCADE
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE plays_in(
|
CREATE TABLE plays_in(
|
||||||
@@ -63,5 +63,5 @@ CREATE TABLE plays_in(
|
|||||||
PRIMARY KEY(concert_id, pianist_id, work_id, mov_id),
|
PRIMARY KEY(concert_id, pianist_id, work_id, mov_id),
|
||||||
FOREIGN KEY(concert_id) REFERENCES concert(id),
|
FOREIGN KEY(concert_id) REFERENCES concert(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) ON DELETE CASCADE
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user