@@ -336,9 +336,17 @@ def get_first(cls, pid_v2=None, sps_pkg_name=None, pid_v3=None, delete=False):
336336 if obj is None :
337337 raise cls .DoesNotExist
338338 if delete :
339- qs .exclude (pk = obj .pk ). delete ( )
339+ cls . delete_queryset ( qs .exclude (pk = obj .pk ))
340340 return obj
341341
342+ @classmethod
343+ def delete_queryset (cls , qs ):
344+ ArticleDOIWithLang .objects .filter (article__in = qs ).delete ()
345+ ArticleTitle .objects .filter (parent__in = qs ).delete ()
346+ ArticleCollection .objects .filter (article__in = qs ).delete ()
347+ ArticleWebPage .objects .filter (article__in = qs ).delete ()
348+ return qs .delete ()
349+
342350 # ── create_or_update ──
343351
344352 @classmethod
@@ -914,7 +922,7 @@ def exclude_invalid_records(cls, user, issue, sps_pkg_id_list, timeout=None):
914922 sps_pkg_to_delete .add (sps_pkg_id )
915923 sps_pkg_names .append (sps_pkg_name )
916924 response ["sps_pkg_with_invalid_pid_v2" ] = sps_pkg_names
917- qtd_deleted , _ = qs . delete ( )
925+ qtd_deleted , _ = cls . delete_queryset ( qs )
918926 total_deletado += qtd_deleted
919927
920928 # 1. Remoção por falta de pp_xml
@@ -933,7 +941,7 @@ def exclude_invalid_records(cls, user, issue, sps_pkg_id_list, timeout=None):
933941 sps_pkg_names .append (item .sps_pkg .sps_pkg_name )
934942 if article_ids :
935943 response ["ppxml_invalid" ] = sps_pkg_names
936- qtd_deleted , _ = qs .filter (id__in = article_ids ). delete ( )
944+ qtd_deleted , _ = cls . delete_queryset ( qs .filter (id__in = article_ids ))
937945 total_deletado += qtd_deleted
938946
939947 # 2. Remoção por duplicidade
@@ -945,7 +953,7 @@ def exclude_invalid_records(cls, user, issue, sps_pkg_id_list, timeout=None):
945953 for value in list (multiple_values or []):
946954
947955 # Filtra os registros que possuem este valor específico duplicado
948- duplicados = qs .filter (** {field_name : value }).order_by ("-update " )
956+ duplicados = qs .filter (** {field_name : value }).order_by ("-updated " )
949957
950958 if not duplicados .exists ():
951959 continue
@@ -982,23 +990,23 @@ def exclude_invalid_records(cls, user, issue, sps_pkg_id_list, timeout=None):
982990 response [f"repeated_{ field_name } " ].append ((value , sps_pkg_names ))
983991
984992 # Executa a deleção e soma ao totalizador
985- qtd_deletada , _ = remover_qs . delete ( )
993+ qtd_deletada , _ = cls . delete_queryset ( remover_qs )
986994 total_deletado += qtd_deletada
987995
988996 # Se você precisar retornar o total_deletado junto com o dicionário,
989997 # pode adicioná-lo ao dicionário ou retornar uma tupla.
990998 # Como o seu esqueleto final pedia apenas o retorno do dicionário, mantive assim:
991999 if ppxml_to_delete :
992- PidProviderXML .objects .filter (id__in = ppxml_to_delete ). delete ( )
1000+ PidProviderXML .delete_queryset ( PidProviderXML . objects .filter (id__in = ppxml_to_delete ))
9931001 if sps_pkg_to_delete :
994- SPSPkg .objects .filter (id__in = sps_pkg_to_delete ). delete ( )
1002+ SPSPkg .delete_queryset ( SPSPkg . objects .filter (id__in = sps_pkg_to_delete ))
9951003
9961004 response ["deleted_ppxml_ids" ] = list (ppxml_to_delete )
9971005 response ["deleted_sps_pkg_ids" ] = list (sps_pkg_to_delete )
9981006
9991007 qs = cls .objects .filter (Q (sps_pkg__isnull = True ) | Q (pp_xml__isnull = True ), issue = issue )
10001008 response ["deleted_article_ids" ] = list (qs .values_list ("id" , flat = True ))
1001- qtd_deleted , _ = qs . delete ( )
1009+ qtd_deleted , _ = cls . delete_queryset ( qs )
10021010 total_deletado += qtd_deleted
10031011
10041012 response ["total_deleted_items" ] = total_deletado
0 commit comments