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)
|
person = Person.query.get(id)
|
||||||
if 'delete' in request.form:
|
if 'delete' in request.form:
|
||||||
st.SetMessage("Successfully deleted Person: ({})".format( person.tag ) )
|
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 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 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()
|
Person.query.filter(Person.id==id).delete()
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return redirect( url_for( 'persons' ) )
|
return redirect( url_for( 'persons' ) )
|
||||||
@@ -148,6 +151,8 @@ def person(id):
|
|||||||
if new_refs != person.refimg:
|
if new_refs != person.refimg:
|
||||||
deld = list(set(person.refimg) - set(new_refs));
|
deld = list(set(person.refimg) - set(new_refs));
|
||||||
person.refimg = 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()
|
Refimg.query.filter(Refimg.id==deld[0].id).delete()
|
||||||
st.SetMessage( f"Successfully Updated Person: removed reference image {deld[0].fname}" )
|
st.SetMessage( f"Successfully Updated Person: removed reference image {deld[0].fname}" )
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user