Exemplo n.º 1
0
def index():
    form = rs.Demande()
    if form.validate_on_submit():
        # Géolocaliser les adresses
        localisation_dep = ' '.join([
            form.numero_dep.data,
            form.adresse_dep.data,
            form.ville_dep.data
        ])

        localisation_arr = ' '.join([
            form.numero_arr.data,
            form.adresse_arr.data,
            form.ville_arr.data
        ])

        depart = {'position': geographie.geocoder(localisation_dep)}
        arrivee = {'position': geographie.geocoder(localisation_arr)}

        adresse_dep = modeles.Adresse(
            adresse=form.adresse_dep.data,
            numero=form.numero_dep.data,
            cp=form.cp_dep.data,
            ville=form.ville_dep.data,
            position='POINT({0} {1})'.format(
                depart['position']['lat'], depart['position']['lon'])
        )

        adresse_arr = modeles.Adresse(
            adresse=form.adresse_arr.data,
            numero=form.numero_arr.data,
            cp=form.cp_arr.data,
            ville=form.ville_arr.data,
            position='POINT({0} {1})'.format(
                arrivee['position']['lat'], arrivee['position']['lon'])
        )
        # Ajouter l'adresse à la BD
        db.session.add(adresse_dep)
        db.session.add(adresse_arr)

        db.session.commit()

        flash('La demande de réservation a été prise en compte.', 'positive')
        return redirect(url_for('index'))
    return render_template('index.html', form=form, titre='Réserver un taxi')
Exemplo n.º 2
0
def inserer_adresse(ligne):
    adresse = modeles.Adresse(nom_rue=ligne['nom_rue'],
                              numero=ligne['numero'],
                              cp=ligne['cp'],
                              ville=ligne['ville'],
                              position='POINT({0} {1})'.format(
                                  ligne['lat'], ligne['lon']))
    db.session.add(adresse)
    db.session.commit()
Exemplo n.º 3
0
def enregistrement():
    form = fu.Enregistrement()
    if form.validate_on_submit():
        # Géolocaliser l'adresse
        localisation = ' '.join([
            form.numero.data,
            form.adresse.data,
            form.ville.data
        ])
        position = geographie.geocoder(localisation)
        # Créer une adresse
        adresse = modeles.Adresse(
            adresse=form.adresse.data,
            numero=form.numero.data,
            cp=form.cp.data,
            ville=form.ville.data,
            position='POINT({0} {1})'.format(position['lat'], position['lon'])
        )
        # Ajouter l'adresse à la BD
        db.session.add(adresse)
        db.session.commit()
        # Créer un utilisateur qui n'a pas confirmé son mail
        utilisateur = modeles.Utilisateur(
            telephone=form.telephone.data,
            email=form.email.data,
            confirmation=False,
            categorie='Normal',
            prenom=form.prenom.data,
            nom=form.nom.data,
            notification_email=True,
            notification_sms=True,
            adresse=adresse.identifiant,
            mdp=form.mdp.data,
            inscription=datetime.utcnow()
        )
        # Insérer un utilisateur dans la BD
        db.session.add(utilisateur)
        db.session.commit()
        # Sujet du mail à envoyer
        sujet = 'Veuillez confirmer votre adresse email.'
        # Générer un token aléatoire
        token = ts.dumps(utilisateur.email, salt='email-confirm-key')
        # Construire un lien de confirmation à partir du token
        urlConfirmation = url_for('utilisateurbp.confirmation',
                                  token=token, _external=True)
        # Le corps du mail est un template écrit en HTML
        html = render_template('email/confirmation.html',
                               url_confirmation=urlConfirmation)
        # Envoyer le mail à l'utilisateur
        email.envoyer(utilisateur.email, sujet, html)
        # On renvoit à la page d'accueil
        signUpMsg = Markup(
            "<i class='mail outline icon'></i>Vérifiez vos mails pour confirmer votre adresse email.")
        flash(signUpMsg, 'positive')
        return redirect(url_for('index'))
    return render_template('utilisateur/enregistrement.html',
                           form=form, titre='Enregistrement')
Exemplo n.º 4
0
def gps():
    string = request.data.decode()
    dt = json.loads(string)

    # Fonction qui charge les données du trajet entre deux points (le départ est en lon,lat. L'arrivée en lon, lat ou textuelle)
    lonposition = dt['lonposition']
    latposition = dt['latposition']

    #encoder l'adresse arriver
    adresse = dt['adresse']
    adresse = geocoder(adresse)
    adresse_arr = modeles.Adresse(
        position='POINT({0} {1})'.format(adresse['lat'], adresse['lon']))
    latdestination = adresse['lat']
    londestination = adresse['lon']

    #URL format
    mode = 'driving'
    base = 'https://maps.googleapis.com/maps/api/directions/json?'
    key = 'AIzaSyCBQSQ2Ze-8wEnZcT1V8__ug2WLdRmtdmA'
    lang = 'fr'
    a = '{lon},{lat}'.format(lat=latposition, lon=lonposition)
    b = '{lat},{lon}'.format(lat=latdestination, lon=londestination)
    url = '{0}origin={1}&destination={2}&language={3}&mode={4}&key={5}'.format(
        base, a, b, lang, mode, key)
    print(url)
    #print(url)

    data = urlopen(url).read().decode('utf-8')
    jsonFile = load_json(data)

    AdressDep = jsonFile['routes'][0]['legs'][0]['start_address']
    AdressArr = jsonFile['routes'][0]['legs'][0]['end_address']
    steps = jsonFile['routes'][0]['legs'][0]['steps']
    distanceTot = jsonFile['routes'][0]['legs'][0]['distance']['text']
    durationTot = jsonFile['routes'][0]['legs'][0]['duration']['text']
    polyline = jsonFile['routes'][0]['overview_polyline']['points']

    return jsonify({
        'AdressDep': AdressDep,
        'AdressArr': AdressArr,
        'steps': steps,
        'distanceTot': distanceTot,
        'durationTot': durationTot,
        'polyline': polyline
    })
Exemplo n.º 5
0
def inserer_adresse_station(ligne):
    adresse = modeles.Adresse(position='POINT({0} {1})'.format(
        ligne['lat'], ligne['lon']),
                              nom_rue=ligne['nom_rue'],
                              numero=ligne['numero'],
                              cp=ligne['cp'],
                              ville=ligne['ville'])
    station = modeles.Station(nom=ligne['nom'],
                              distance_entree=ligne['entree'],
                              distance_sortie=ligne['sortie'])
    db.session.add(station)
    db.session.commit()
    db.session.add(adresse)
    db.session.commit()

    adresse.station = station.nom
    station.adresse = adresse.identifiant
    db.session.commit()
Exemplo n.º 6
0
def index():

    if current_user.is_authenticated == False:
        form = rs.Demande_NonAuth()
    else:
        form = rs.Demande_Auth()

    if form.validate_on_submit():

        # Formattage de la date
        date_course = str(form.date_debut.data) + " " + \
            str(form.heures.data) + ":" + str(form.minutes.data) + ":00"

        # On insère l'utilisateur s'il n'est pas dans la base
        if current_user.is_authenticated == False:
            utilisateur = modeles.Utilisateur(telephone=form.telephone.data,
                                              prenom=form.prenom.data,
                                              nom=form.nom.data,
                                              email=form.mail.data,
                                              categorie=form.categorie.data,
                                              civilite=form.civilite.data)
            db.session.add(utilisateur)
            db.session.commit()

        # On construit les adresses pour les géolocaliser
        localisation_dep = ' '.join(
            [form.numero_dep.data, form.adresse_dep.data, form.ville_dep.data])

        localisation_arr = ' '.join(
            [form.numero_arr.data, form.adresse_arr.data, form.ville_arr.data])

        # Géocalisation des adressses de départ et d'arrivée
        positions = {
            'depart': geographie.geocoder(localisation_dep),
            'arrivee': geographie.geocoder(localisation_arr)
        }

        # Adresse de départ
        adresse_dep = modeles.Adresse(nom_rue=form.adresse_dep.data,
                                      numero=form.numero_dep.data,
                                      cp=form.cp_dep.data,
                                      ville=form.ville_dep.data,
                                      position='POINT({0} {1})'.format(
                                          positions['depart']['lat'],
                                          positions['depart']['lon']))
        db.session.add(adresse_dep)
        db.session.commit()

        # Adresse d'arrivée
        adresse_arr = modeles.Adresse(nom_rue=form.adresse_arr.data,
                                      numero=form.numero_arr.data,
                                      cp=form.cp_arr.data,
                                      ville=form.ville_arr.data,
                                      position='POINT({0} {1})'.format(
                                          positions['arrivee']['lat'],
                                          positions['arrivee']['lon']))
        db.session.add(adresse_arr)
        db.session.commit()

        # Création de la course
        nouvelle_course = modeles.Course(depart=adresse_dep.identifiant,
                                         arrivee=adresse_arr.identifiant,
                                         places=form.nb_passagers.data,
                                         commentaire=form.commentaire.data,
                                         debut=date_course,
                                         trouvee=False,
                                         finie=False)

        if current_user.is_authenticated:
            # Pas sur de ça
            current_user.categorie = form.categorie.data
            nouvelle_course.utilisateur = current_user.telephone
        else:
            nouvelle_course.utilisateur = form.telephone.data

        db.session.add(nouvelle_course)
        db.session.commit()

        # Création d'une nouvelle facture
        facture = modeles.Facture(course=nouvelle_course.numero,
                                  paiement=form.paiement.data,
                                  estimation=0,
                                  montant=0,
                                  rabais=0)

        db.session.add(facture)
        db.session.commit()

        flash('La demande de réservation a été prise en compte.', 'positive')

        donnees = form.data
        return redirect(url_for('devis', form=donnees))
    return render_template('index.html', form=form, titre='Réserver un taxi')
Exemplo n.º 7
0
def accepter():

    # Récupération des données et formatage du JSON
    data = request.get_json()

    data = data.replace('&#39;', '"')

    data = eval(data)

    print(data)

    demande = data['demande']

    # On insère l'utilisateur s'il n'est pas dans la base
    if current_user.is_authenticated == False:
        utilisateur = modeles.Utilisateur(telephone=demande['telephone'],
                                          prenom=demande['prenom'],
                                          nom=demande['nom'],
                                          email=demande['mail'],
                                          civilite=demande['civilite'],
                                          avoir_compte=False,
                                          mdp=" ")
        # L'utilisateur est-il déja dans la BD ?
        check_Utilisateur = modeles.Utilisateur.query.filter_by(
            telephone=demande['telephone']).first()
        # Si l'utilisateur existe
        if check_Utilisateur is not None:
            # Alors on regarde s'il a un compte ou non
            if check_Utilisateur.avoir_compte == False:
                check_Utilisateur.nom = demande['nom']
                check_Utilisateur.prenom = demande['prenom'],
                check_Utilisateur.nom = demande['nom'],
                check_Utilisateur.email = demande['mail'],
                check_Utilisateur.avoir_compte = False,
                # Sauvegarde des modifications
                db.session.commit()

        # S'il n'existe pas, on l'ajoute à la BD
        else:
            db.session.add(utilisateur)
            db.session.commit()

    # Géocalisation des adressses de départ et d'arrivée
    positions = {
        'depart': geographie.geocoder(demande['adresse_dep']),
        'arrivee': geographie.geocoder(demande['adresse_arr'])
    }

    # Adresse de départ
    adresse_dep = modeles.Adresse(position='POINT({0} {1})'.format(
        positions['depart']['lat'], positions['depart']['lon']),
                                  adr_complete=demande['adresse_dep'])
    db.session.add(adresse_dep)
    db.session.commit()

    # Adresse d'arrivée
    adresse_arr = modeles.Adresse(position='POINT({0} {1})'.format(
        positions['arrivee']['lat'], positions['arrivee']['lon']),
                                  adr_complete=demande['adresse_arr'])
    db.session.add(adresse_arr)
    db.session.commit()

    # Création de la course
    nouvelle_course = modeles.Course(depart=adresse_dep.identifiant,
                                     arrivee=adresse_arr.identifiant,
                                     places=demande['nb_passagers'],
                                     commentaire=demande['commentaire'],
                                     debut=demande['debut'],
                                     trouvee=False,
                                     finie=False,
                                     animaux=demande['nb_animaux'],
                                     bagages=demande['nb_bagages'],
                                     animaux_grands=demande['animaux_grands'],
                                     anglais=demande['langue'])

    if current_user.is_authenticated:
        # Pas sur de ça
        nouvelle_course.utilisateur = current_user.telephone
    else:
        nouvelle_course.utilisateur = demande['telephone']

    db.session.add(nouvelle_course)
    db.session.commit()

    devis = data['devis']

    # Création d'une nouvelle facture
    facture = modeles.Facture(course=nouvelle_course.numero,
                              type_paiement=demande['paiement'],
                              estimation_1=devis['prix']['total'],
                              montant=0)

    db.session.add(facture)
    db.session.commit()

    # Envoi d'un email
    if current_user.is_authenticated == False:
        adresse_mail = demande['mail']
    else:
        adresse_mail = current_user.email

    # Sujet du mail à envoyer
    sujet = 'Votre demande de réservation a été prise en compte.'
    # Le corps du mail est un template écrit en HTML
    html = render_template('email/facture.html', devis=devis)
    # Envoyer le mail à l'utilisateur
    email.envoyer(adresse_mail, sujet, html)

    # Appeler la fonction Scheduler
    # planification.scheduler.add_job(attribution_course, demande['debut'], args=[str(nouvelle_course.numero)])

    flash('La demande de réservation a été prise en compte.', 'positive')
    return jsonify({'statut': 'succes'})