@@ -440,32 +440,33 @@ def do_deletes(cls, session: Session, to_delete: List[ClassifIDT]) -> None:
440440 sql = text ("SELECT DISTINCT id FROM taxonomy" )
441441 res : Result = session .execute (sql , {"een" : list (to_delete )})
442442 present = {an_id for an_id , in res }
443- final_delete = present .intersection (to_delete )
443+ final_delete = sorted ( list ( present .intersection (to_delete )) )
444444 # We want to protect 1. and 2.
445- logger .info ("Taxo delete, list: %s" , final_delete )
446445 sql = text ("SELECT DISTINCT objid FROM obj_head WHERE classif_id = ANY (:een)" )
447446 res2 : Result = session .execute (sql , {"een" : list (final_delete )})
448447 prevent_obj_head = {an_id for an_id , in res2 }
449448 if len (prevent_obj_head ) > 0 :
450449 logger .error ("Unsafe deletion due to objects %s" , prevent_obj_head )
451- sql = text ("SELECT DISTINCT objid FROM objectsclassifhisto WHERE classif_id = ANY (:een)" )
450+ sql = text (
451+ "SELECT DISTINCT objid FROM objectsclassifhisto WHERE classif_id = ANY (:een)"
452+ )
452453 res3 : Result = session .execute (sql , {"een" : list (final_delete )})
453454 prevent_obj_histo = {an_id for an_id , in res3 }
454455 if len (prevent_obj_histo ) > 0 :
455456 logger .error ("Unsafe deletion due to objects history %s" , prevent_obj_histo )
456457 # assert len(prevent_obj_head) == 0 and len(prevent_obj_histo) == 0, "Cannot achieve safe deletion"
457458 logger .info ("deleting categories" )
458459 session .execute (text ("alter table taxonomy disable trigger all" ))
460+ for i in range (0 , len (final_delete ), 20 ):
461+ logger .info ("Taxo delete, list: %s" , final_delete [i : i + 20 ])
459462 try :
460463 for a_taxon in final_delete :
461- logger .info ("deleting category %s" , a_taxon )
462464 taxon = session .query (Taxonomy ).get (a_taxon )
463465 session .delete (taxon )
464466 finally :
465467 session .execute (text ("alter table taxonomy enable trigger all" ))
466468
467469
468-
469470class TaxonBOSet (object ):
470471 """
471472 Many taxa.
0 commit comments