handle deleting properly - e.g. if had a refimg that was used for a match earlier then deal with it, and when deleting a person, dont leave behind orphaned refimgs
This commit is contained in:
@@ -134,9 +134,12 @@ def person(id):
|
||||
person = Person.query.get(id)
|
||||
if 'delete' in request.form:
|
||||
st.SetMessage("Successfully deleted Person: ({})".format( person.tag ) )
|
||||
# do the linkage tables by hand
|
||||
# do linkages by hand, or one day replace with delete cascade in the DB defintions
|
||||
db.session.execute( f"delete from face_refimg_link frl where refimg_id in ( select refimg_id from person_refimg_link where person_id = {id} )" )
|
||||
db.session.execute( f"delete from person_refimg_link where person_id = {id}" )
|
||||
db.session.execute( f"delete from refimg where id not in ( select refimg_id from person_refimg_link )" )
|
||||
|
||||
# now can delete the person entry with no foreign key data left
|
||||
Person.query.filter(Person.id==id).delete()
|
||||
db.session.commit()
|
||||
return redirect( url_for( 'persons' ) )
|
||||
@@ -148,6 +151,8 @@ def person(id):
|
||||
if new_refs != person.refimg:
|
||||
deld = list(set(person.refimg) - set(new_refs));
|
||||
person.refimg = new_refs
|
||||
# delete the "match" between a face found in a file and this ref img
|
||||
FaceRefimgLink.query.filter(FaceRefimgLink.refimg_id==deld[0].id).delete()
|
||||
Refimg.query.filter(Refimg.id==deld[0].id).delete()
|
||||
st.SetMessage( f"Successfully Updated Person: removed reference image {deld[0].fname}" )
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user