def create_ancien(): """ Créer un ancien, associé à mon compte personnel. L'ancien est créé et son status est "nouveau". 1. Si l'ancien n'existe pas 1.a. Afficher un formulaire à remplir par l'ancien. 1.b. Si le formulaire est valide, on crée l'ancien 1.c. On ajoute l'ancien 1.d. On linke le nouvel ancien à l'utilisateur courant 2. Si l'ancien existe mais est "nouveau" 2.a. On affiche un message à l'utilisateur actuel 3. Si l'ancien est existe mais n'est pas nouveau 3.a. On flashe une erreur et on redirige l'utilisateur vers son compte :return: None. """ # Trouver si l'utilisateur a un ancien associé ancien = annuaire.find_ancien_by_id(current_user.id_ancien, actif=None, nouveau=None, bloque=None) form = user.create_ancien_form() # Cas #1 : Créer l'ancien if ancien is None: if request.method == "POST": app.logger.info( "CREATE ANCIEN - Creating ancien for user %s", current_user.id ) form = user.create_ancien_form(request.form) # Cas #1.1 : Si le form est valable, on insère l'ancien, on l'associe, et on envoie l'utilisateur # sur la page de l'annuaire if form.validate(): id_ancien = annuaire.create_ancien( prenom=form.prenom.data, nom=form.nom.data, promo=int(form.promo.data), ecole=form.ecole.data, mail_asso=current_user.mail, diplome=form.diplome.data ) user.update_id_ancien(current_user.id, id_ancien) flash( "Félicitations ! Ta fiche ancien a été crée.<br>" "Elle est maintenant en attente de validation par un administrateur.<br>" "Une fois ta fiche validée, tu recevras un mail de confirmation.", "success" ) app.logger.info( "CREATE ANCIEN - Success ! Ancien with id :s; created for user with ID %s", id_ancien, current_user.id ) return redirect(url_for("annuaire_view")) # Cas #1.2 : Si le form n'est pas valide, on flashe une erreur # Puis on tombe dans le cas #1.3 else: app.logger.warning( "CREATE ANCIEN - Failed formulaire for user with ID %s", current_user.id ) flash( "Oops ! Probléme à la création de la fiche." "danger" ) # Cas #1.3 : render le formulaire (avec ou sans erreurs) return render_template( 'user/creation/creation.html', form=form ) # Cas #2 : l'ancien a été créé mais pas activé if ancien is not None and ancien["nouveau"]: return render_template( 'user/creation/attente.html', ancien=ancien ) # Cas #3 : Il y a déjà un ancien ! redir else: flash( "Un ancien existe déjà.", "danger" ) return redirect(url_for("compte"))
def compte(): """ Permet, entre autres, d'associer un utilisateur à un ancien : - Si l'utilisateur U n'a pas d'ancien associé - Trouver si il y a un ancien A tel que A.mail_asso == U.mail - Si oui, vérifier qu'il n'y a pas d'utilisateur U2 tel que U2.id_ancien == A.id_ancien - Si U2 n'existe pas, alors UPDATE U tel que U.id_ancien = A.id_ancien """ # Trouver si l'utilisateur a un ancien associé ancien = annuaire.find_ancien_by_id(current_user.id_ancien, actif=None, bloque=None, nouveau=None) # Si l'utilisateur n'a pas d'ancien, on va vérifier # Via le mail asso, s'il existe un ancien dans la base pour lui if ancien is None: ancien_temp = annuaire.find_ancien_by_mail_asso(current_user.mail) # si il y a effectivement un ancien, vérifier # qu'il n'est pas déjà associé à un utilisateur if ancien_temp is not None: app.logger.info( "USER ASSOCIATION - trying to associate user %s with ancien %s", current_user.id, ancien_temp['id_ancien'] ) user_temp = user.find_user_by_id_ancien(ancien_temp['id_ancien']) # Si ça n'existe pas, alors faire l'association if user_temp is None: # On récupère le nouvel utilisateur sql_res = user.update_id_ancien(current_user.id, ancien_temp['id_ancien']) # Si l'association réussit # réucpérer l'ancien if sql_res : app.logger.info( "USER ASSOCIATION - Success, associated user %s with ancien %s", current_user.id, ancien_temp['id_ancien'] ) return redirect(url_for("ancien", id_ancien=ancien_temp['id_ancien'])) else: app.logger.error( "USER ASSOCIATION - Oops ... update went wrong." ) else: app.logger.warning( "USER ASSOCIATION - user %s already associated with ancien %s", user_temp.id, ancien_temp['id_ancien'] ) else: # Sinon, on le laisse créer sa fiche ! return redirect(url_for("create_ancien")) elif ancien['nouveau']: return redirect(url_for("create_ancien")) # cas spécifique : ancien en cours de création else: return redirect(url_for("ancien", id_ancien=current_user.id_ancien))