From b949b423646ae9e9364753aa82562dc9b33daecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre-Elliott=20B=C3=A9cue?= Date: Sun, 30 Aug 2015 14:43:29 +0200 Subject: [PATCH] =?UTF-8?q?Pr=C3=A9vient=20la=20suppression=20d'adh=C3=A9r?= =?UTF-8?q?ent=20ou=20de=20factures=20dans=20certaines=20conditions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gestion/config/cotisation.py | 6 ++++++ gestion/ldap_crans.py | 12 +++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/gestion/config/cotisation.py b/gestion/config/cotisation.py index 3544287c..65825393 100644 --- a/gestion/config/cotisation.py +++ b/gestion/config/cotisation.py @@ -15,6 +15,12 @@ delai_readh = delai_readh_jour * 86400 duree_adh_an = 1 +# Un compte avec une adhésion valide ne peut être détruit que lorsque celle-ci +# est expirée depuis plus que le délai indiqué ici. (secondes) +# Ici, on choisit 90 jours. +del_post_adh_jours = 90 +del_post_adh = del_post_adh_jours * 86400 + # Cotisation pour adhérer à l'association. Les services autres que l'accès à # Internet sont offerts une et une fois pour toute aux personnes qui adhèrent, # et ce dès leur première fois. (comprendre : le compte Crans et cie ne sont pas diff --git a/gestion/ldap_crans.py b/gestion/ldap_crans.py index f4782d4d..8629f72b 100755 --- a/gestion/ldap_crans.py +++ b/gestion/ldap_crans.py @@ -1948,6 +1948,9 @@ class BaseProprietaire(BaseClasseCrans): def delete(self, comment=''): """Destruction du propriétaire""" + if max(self.connexion(), self.adhesion()) + cotisation.del_post_adh >= time.time(): + raise EnvironmentError("Vous ne pouvez supprimer un adhérent que %s jours après l'expiration de son adhésion et de sa connexion" % (cotisation.del_post_adh_jours,)) + for m in self.machines(): # Destruction machines m.delete(comment) @@ -4161,9 +4164,9 @@ class Facture(BaseClasseCrans): _ = arts.pop() # on supprime les anciens articles - if type(supprime)==dict: + if type(supprime) == dict: supprime = [supprime] - if type(supprime)==list: + if type(supprime) == list: for art in supprime: arts.remove(art) @@ -4233,8 +4236,11 @@ class Facture(BaseClasseCrans): def delete(self, comment=''): """Suppression de la facture""" + if self.controle(): - raise EnvironmentError(u"La facture a déjà été controlée, contacter trésorerie") + if max(self.proprietaire().connexion(), self.proprietaire().adhesion()) + cotisation.del_post_adh >= time.time(): + raise EnvironmentError(u"La facture a déjà été controlée, contacter trésorerie") + self.__proprietaire = None self._delete(self.dn, comment)