nanterre: changement des règles de suppression sur inactivité (fixes #28080)
* supprime tous les enfants inactifs depuis 12 mois et sans fédérations, * supprime tous les parents inactifs depuis 6 mois, sans fédération, sans enfants ou dont les enfants sont à supprimer.
This commit is contained in:
parent
9daf983e8b
commit
3100eb40e8
|
@ -85,24 +85,7 @@ class Inactivity(object):
|
|||
|
||||
@cached_property
|
||||
def deletable_children(self):
|
||||
deletable_adults = self.exclude_newer_than_threshold(self.filter_no_federation(self.adults),
|
||||
self.adult_threshold)
|
||||
non_deletable_adults = self.adults.exclude(id__in=deletable_adults.values_list('id', flat=True))
|
||||
|
||||
potent = self.exclude_newer_than_threshold(self.filter_no_federation(self.children), self.child_threshold)
|
||||
potent = potent.exclude(right_relations__left__in=non_deletable_adults)
|
||||
potent_ids = potent.values_list('id', flat=True)
|
||||
|
||||
def filter_siblings_are_potent():
|
||||
for child in potent:
|
||||
for sibling in utils.fratrie(child):
|
||||
if sibling.id not in potent_ids:
|
||||
break
|
||||
else:
|
||||
yield child.id
|
||||
potent2_ids = list(filter_siblings_are_potent())
|
||||
|
||||
return potent.filter(id__in=potent2_ids)
|
||||
return self.exclude_newer_than_threshold(self.filter_no_federation(self.children), self.child_threshold)
|
||||
|
||||
@cached_property
|
||||
def deletable_adults(self):
|
||||
|
@ -116,13 +99,5 @@ class Inactivity(object):
|
|||
break
|
||||
else:
|
||||
yield adult
|
||||
potent2 = list(filter_children_are_deletable())
|
||||
potent2_ids = [adult.id for adult in potent2]
|
||||
|
||||
def filter_spouse_is_deletable():
|
||||
for adult in potent2:
|
||||
conjoint = utils.conjoint(adult)[0]
|
||||
if conjoint and conjoint.id not in potent2_ids:
|
||||
continue
|
||||
yield adult.id
|
||||
return potent.filter(id__in=filter_spouse_is_deletable())
|
||||
potent2_ids = [adult.id for adult in filter_children_are_deletable()]
|
||||
return potent.filter(id__in=potent2_ids)
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
<li>Une fiche sans activité est une fiche dont la dernière date de modification et les dernières lignes du journal n'ont pas bougé depuis un certain nombre de jours</li>
|
||||
<li>Les fiches enfants sans activité depuis {{ child_delay }} jours sont considérées inactives.</li>
|
||||
<li>Les fiches adultes sans activité depuis {{ adult_delay }} jours sont considérées inactives.</li>
|
||||
<li>Les enfants dont les parents sont inactifs et sans fédérations et dont tous les enfants de la même fratrie (tous les enfants partageant au moins un parent commun) sont inactifs et sans fédération sont à supprimer.</li>
|
||||
<li>Les enfants inactifs et sans fédérations sont à supprimer.</li>
|
||||
<li>Les adultes sans liens matrimoniaux, inactifs, sans fédérations et dont tous les enfants sont à supprimer sont à supprimer.</li>
|
||||
<li>Les couples inactifs, sans fédérations et dont tous les enfants sont à supprimer sont à supprimer.</li>
|
||||
</ul>
|
||||
|
|
|
@ -209,8 +209,8 @@ def synchronize_federations_delete(request, job_id, model_admin, *args, **kwargs
|
|||
|
||||
def fiches_inactives():
|
||||
inactivity = Inactivity(
|
||||
child_delay=getattr(settings, 'ZOO_NANTERRE_INACTIVITY_CHILD_DELAY', 365),
|
||||
adult_delay=getattr(settings, 'ZOO_NANTERRE_INACTIVITY_ADULT_DELAY', 365),
|
||||
child_delay=getattr(settings, 'ZOO_NANTERRE_INACTIVITY_CHILD_DELAY', 365), # default 12 months
|
||||
adult_delay=getattr(settings, 'ZOO_NANTERRE_INACTIVITY_ADULT_DELAY', 182), # default 6 months
|
||||
)
|
||||
fiches = []
|
||||
for child in itertools.chain(inactivity.deletable_children, inactivity.deletable_adults):
|
||||
|
|
Loading…
Reference in New Issue