diff --git a/gestion/gest_crans_lc.py b/gestion/gest_crans_lc.py index eb674b26..14d6d230 100755 --- a/gestion/gest_crans_lc.py +++ b/gestion/gest_crans_lc.py @@ -1975,17 +1975,28 @@ les valeurs valident sont : def adherent_adhesion(self, cont, adherent): self.dialog.msgbox("todo", width=0, height=0) return cont - def adherent_connexion(self, cont, adherent): + def adherent_connexion(self, cont, adherent, cancel_cont=None): self.dialog.msgbox("todo", width=0, height=0) return cont - def adherent_carte_etudiant(self, cont, adherent, values={}): + def adherent_carte_etudiant(self, cont, adherent, values={}, cancel_cont=None): # Dictionnaire décrivant quelle est la valeur booléenne à donner à l'absence de l'attribut a = attributs choices = [] - choices.append((a.carteEtudiant.ldap_name, "Carte étudiant présentée", 1 if adherent.carte_ok() or values.get(a.carteEtudiant.ldap_name, False) else 0)) + if self.has_right(a.tresorier, adherent) or not adherent.carte_controle(): + choices.append((a.carteEtudiant.ldap_name, "Carte étudiant présentée", 1 if adherent.carte_ok() or values.get(a.carteEtudiant.ldap_name, False) else 0)) if self.has_right(a.tresorier, adherent): choices.append(("controleCarte", "La carte a-t-elle été controlée", 1 if adherent.carte_controle() or values.get("controleCarte", False) else 0)) + if not choices: + self.dialog.msgbox("Carte d'étudiant déjà validée et non modifiable", title="Gestion de la carte étudiant", width=0, height=0) + if cancel_cont: + cancel_cont(cont=cont) + try: + cont(cancel_cont=cancel_cont) + except TypeError: + pass + raise Continue(cont) + def box(): return self.dialog.checklist("Gestion de la carte étudiant", height=0, @@ -2031,7 +2042,7 @@ les valeurs valident sont : return self.handle_dialog_result( code=code, output=output, - cancel_cont=cont, + cancel_cont=cancel_cont if cancel_cont else cont, error_cont=retry_cont, codes_todo=[([self.dialog.DIALOG_OK], todo, [values, adherent, cont])] ) @@ -2173,7 +2184,7 @@ les valeurs valident sont : codes_todo=[([self.dialog.DIALOG_OK], todo, [to_display, non_empty, tags, adherent, separateur, make_compte_crans, force_create, retry_cont, cont])] ) - def adherent_etudes(self, adherent, cont): + def adherent_etudes(self, adherent, cont, cancel_cont=None): """Gestion des études de l'adhérent""" self.dialog.msgbox("todo", width=0, height=0) return cont @@ -2920,7 +2931,15 @@ les valeurs valident sont : """Crée un adhérent et potentiellement son compte crans avec lui""" def mycont(adherent=None, **kwargs): if adherent: - raise Continue(TailCall(self.modif_adherent, cont=cont, adherent=adherent)) + # Une fois l'adhérent créé, on vois s'il donne sa carte étudiant et s'il adhére/prend la connexion internet + adh_cont = TailCall(self.modif_adherent, cont=cont, adherent=adherent) + conn_cont = TailCall(self.adherent_connexion, cont=adh_cont, adherent=adherent) + carte_cont = TailCall(self.adherent_carte_etudiant, cont=conn_cont, adherent=adherent) + etude_cont = TailCall(self.adherent_etudes, cont=carte_cont, adherent=adherent) + etude_cont(cancel_cont=etude_cont) + carte_cont(cancel_cont=etude_cont) + conn_cont(cancel_cont=carte_cont) + raise Continue(etude_cont) else: raise Continue(cont) return self.adherent_personnel(cont=TailCall(mycont))