diff --git a/person.py b/person.py index 337a840..8f2d076 100644 --- a/person.py +++ b/person.py @@ -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: