Esempio n. 1
0
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&eacute;licitations ! Ta fiche ancien a &eacute;t&eacute; cr&eacute;e.<br>"
                    "Elle est maintenant en attente de validation par un administrateur.<br>"
                    "Une fois ta fiche valid&eacute;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&eacute;me &agrave; la cr&eacute;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&eacute;j&agrave;.",
            "danger"
        )
        return redirect(url_for("compte"))
Esempio n. 2
0
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))