Esempio n. 1
0
def build_entrepreneur(id,
                       firstname="Toto",
                       lastname="Bob",
                       phone="444-444-4444",
                       address="1010 Avenue de la banquise",
                       zipcode="H1S1R1",
                       city="Montreal",
                       mail="*****@*****.**",
                       password="******",
                       birthdate=None,
                       country=None):
    """ Builder to create an entrepreneur in database """

    if birthdate is None:
        birthdate = datetime.datetime(2014, 4, 4)

    if country is None:
        country = build_country(id=id)

    entrepreneur = Entrepreneur(id=id,
                                firstname=firstname,
                                lastname=lastname,
                                birthdate=birthdate,
                                phone=phone,
                                address=address,
                                zipcode=zipcode,
                                city=city,
                                country=country,
                                mail=mail,
                                password=password)
    db.session.add(entrepreneur)

    return entrepreneur
Esempio n. 2
0
def create():
    """ Create entrepreneur

        Method: *POST*
        URI: */entrepreneurs*
    """

    # Get request values
    datas = request.values

    # Check firstname
    if 'firstname' not in datas:
        return make_response(gettext(u"Le nom est obligatoire."), 400)
    if not isinstance(datas['firstname'], (str, unicode)):
        return make_response(gettext(u"Le nom doit être une chaine de caractère."), 400)

    # Check lastname
    if 'lastname' not in datas:
        return make_response(gettext(u"Le prénom est obligatoire."), 400)
    if not isinstance(datas['lastname'], (str, unicode)):
        return make_response(gettext(u"Le prénom doit être une chaine de caractère."), 400)

    # Check mail
    if 'mail' not in datas:
        return make_response(gettext(u"L'adresse mail est obligatoire."), 400)
    if not isinstance(datas['mail'], (str, unicode)):
        return make_response(gettext(u"L'adresse mail doit être une chaine de caractère."), 400)
    if len(db.session.query(Personne).filter(Personne.mail == datas['mail']).all()) > 0:
        return make_response(gettext(u"L'adresse mail est deja utilisee par un utilisateur."), 400)

    # Check password
    if 'password' not in datas:
        return make_response(gettext(u"Le mot de passe est obligatoire."), 400)
    if not isinstance(datas['password'], (str, unicode)):
        return make_response(gettext(u"Le mot de passe doit être une chaine de caractère."), 400)

    # Check phone
    if 'phone' not in datas:
        return make_response(gettext(u"Le numéro de téléphone est obligatoire."), 400)
    if not isinstance(datas['phone'], (str, unicode)):
        return make_response(gettext(u"Le numéro de téléphone doit être une chaine de caractère."), 400)

    # Check address
    if 'address' not in datas:
        return make_response(gettext(u"L'adresse est obligatoire."), 400)
    if not isinstance(datas['address'], (str, unicode)):
        return make_response(gettext(u"L'adresse doit être une chaine de caractère."), 400)

    # Check zipcode
    if 'zipcode' not in datas:
        return make_response(gettext(u"Le code postal est obligatoire."), 400)
    if not isinstance(datas['zipcode'], (str, unicode)):
        return make_response(gettext(u"Le code postal doit être une chaine de caractère."), 400)

    # Check city
    if 'city' not in datas:
        return make_response(gettext(u"La ville est obligatoire."), 400)
    if not isinstance(datas['city'], (str, unicode)):
        return make_response(gettext(u"La ville doit être une chaine de caractère."), 400)

    # Check country
    if 'country_id' not in datas:
        return make_response(gettext(u"Le pays est obligatoire."), 400)
    try:
        country_id = int(datas['country_id'])
    except Exception:
        return make_response(gettext(u"country_id doit être un identifiant."), 400)

    country = db.session.query(Country).get(country_id)
    if country is None:
        return make_response(gettext(u"Le pays n'existe pas."), 404)

    # Create entrepreneur
    entrepreneur = Entrepreneur(firstname=datas['firstname'], lastname=datas['lastname'], phone=datas['phone'], address=datas['address'], zipcode=datas['zipcode'], city=datas['city'], country=country, mail=datas['mail'], password=datas['password'])
    db.session.flush()
    entrepreneur.create_order_address()
    
    # Check birthdate
    if 'birthdate' in datas:
        try:
            birthdate = datetime.datetime.strptime(datas['birthdate'], '%Y-%m-%dT%H:%M:%S.%fZ')
        except:
            return make_response(gettext(u"Le format de la date est invalide."), 400)
        entrepreneur.birthdate = birthdate

    # Add entrepreneur
    db.session.add(entrepreneur)

    # Commit
    try:
        db.session.commit()
    except Exception:  # pragma: no cover
        db.session.rollback()
        return make_response(gettext(u"Dûe à une erreur inconnu, l'entrepreneur ne peut pas être créé."), 500)

    # Build the response
    response = make_response(jsonify(entrepreneur.to_dict()))
    response.status_code = 201
    response.mimetype = 'application/json'
    return response
Esempio n. 3
0
def install_with_data():

    # Create database with fixtures
    install()

    # Add restaurateurs
    from webserver.models import Restaurateur, Country
    ct1 = db.session.query(Country).filter(Country.name == "Canada").one()
    rs1 = Restaurateur(firstname="Valentino", lastname="Rossi", mail="*****@*****.**", password="******", phone="123-456-7890", address="1001 Rue Notre Dame", city="Montreal", zipcode="H3S 1Z1", country=ct1)
    rs2 = Restaurateur(firstname="Fernando", lastname="Alonso", mail="*****@*****.**", password="******", phone="123-456-7890", address="6558 rue de Normanville", city="Montreal", zipcode="H2S2B9", country=ct1)
    rs3 = Restaurateur(firstname="Marcel", lastname="Proust", mail="*****@*****.**", password="******", phone="123-456-7890", address="1001 Rue Notre Dame", city="Montreal", zipcode="H3S 1Z1", country=ct1)

    db.session.add(rs1)
    db.session.add(rs2)
    db.session.add(rs3)

    # Add entrepreneurs
    from webserver.models import Entrepreneur
    import datetime
    e1 = Entrepreneur(firstname="Jay", lastname="UnNom", mail="*****@*****.**", password="******", phone="123-456-7890", address="1001 Rue Notre Dame", city="Montreal", zipcode="H3S 1Z1", country=ct1)
    e2 = Entrepreneur(firstname="Entre", lastname="Preneur", mail="*****@*****.**", password="******", phone="123-456-7890", address="1001 Rue Notre Dame", city="Montreal", zipcode="H3S 1Z1", country=ct1, birthdate=datetime.datetime(2010, 10, 10))
    db.session.add(e1)
    db.session.add(e2)

    # Add clients
    from webserver.models import Client
    c1 = Client(firstname="Yvon", lastname="Gagner", mail="*****@*****.**", password="******", phone="123-456-7890", address="2900 Boulevard Edouard-Montpetit", city="Montreal", zipcode="H3T 1J4", country=ct1)
    c2 = Client(firstname="Leo", lastname="Pard", mail="*****@*****.**", password="******", phone="123-456-7890", address="6548 rue de Normanville", city="Montreal", zipcode="H2S2B9", country=ct1)

    db.session.add(c1)
    db.session.add(c2)

    # !!! Add adresses to personne !!!
    db.session.flush()

    rs1.create_order_address()
    rs2.create_order_address()
    rs3.create_order_address()

    e1.create_order_address()
    e2.create_order_address()

    c1.create_order_address()
    c2.create_order_address()

    # Add restaurants
    from webserver.models import Restaurant
    r1 = Restaurant(name="Subway", phone="514-444-4444", address="1001 Ste-Catherine", city="Montreal", zipcode="H3K 3P2", cooking_type="Fastfood")
    r2 = Restaurant(name="McDonalds", phone="514-444-4444", address="4301 St-Denis", city="Montreal", zipcode="H2S 1R4", cooking_type="Fastfood")
    r3 = Restaurant(name="La Banquise", phone="514-444-4444", address="2167 St-Denis", city="Montreal", zipcode="H4P 2R2", cooking_type="Poutine")
    r4 = Restaurant(name="Le Duc de Lorraine", phone="514-444-4444", address="2983 St-Denis", city="Montreal", zipcode="H1S 1R2", cooking_type="Gastronomie française")
    r5 = Restaurant(name="La Plazza", phone="514-444-4444", address="1893 St-Denis", city="Montreal", zipcode="H4C 2R1", restaurateur=rs3, cooking_type="Plats italiens")
    db.session.add(r1)
    db.session.add(r2)
    db.session.add(r3)
    db.session.add(r4)
    db.session.add(r5)

    # Add livreur
    from webserver.models import Livreur
    liv1 = Livreur(firstname="Steve", lastname="Speed", mail="*****@*****.**", password="******", phone="123-456-7890", address="1001 Rue Notre Dame", city="Montreal", zipcode="H3S 1Z1", country=ct1)
    db.session.add(liv1)

    # Add menus
    from webserver.models import Menu
    m1 = Menu(name="Lunch", restaurant_id=1)
    db.session.add(m1)
    db.session.flush()

    # Add dishes
    from webserver.models import Dish
    d1 = Dish(name="Frites", description="Avec des pomme de terre fraiche", price=4.99, menu_id=1)
    d2 = Dish(name="Bigmac", description="Avec du boeuf tué la veille", price=6.99, menu_id=1)
    d3 = Dish(name="Coca-Cola", description="Du vrai", price=1.99, menu_id=1)
    d4 = Dish(name="Fanta", description="Du vrai", price=1.99, menu_id=1)
    db.session.add(d1)
    db.session.add(d2)
    db.session.add(d3)
    db.session.add(d4)

    db.session.commit()
    print("...Datas test successfully added")
Esempio n. 4
0
def create():
    """ Create entrepreneur

        Method: *POST*
        URI: */entrepreneurs*
    """

    # Get request values
    datas = request.values

    # Check firstname
    if 'firstname' not in datas:
        return make_response(gettext(u"Le nom est obligatoire."), 400)
    if not isinstance(datas['firstname'], (str, unicode)):
        return make_response(
            gettext(u"Le nom doit être une chaine de caractère."), 400)

    # Check lastname
    if 'lastname' not in datas:
        return make_response(gettext(u"Le prénom est obligatoire."), 400)
    if not isinstance(datas['lastname'], (str, unicode)):
        return make_response(
            gettext(u"Le prénom doit être une chaine de caractère."), 400)

    # Check mail
    if 'mail' not in datas:
        return make_response(gettext(u"L'adresse mail est obligatoire."), 400)
    if not isinstance(datas['mail'], (str, unicode)):
        return make_response(
            gettext(u"L'adresse mail doit être une chaine de caractère."), 400)
    if len(
            db.session.query(Personne).filter(
                Personne.mail == datas['mail']).all()) > 0:
        return make_response(
            gettext(u"L'adresse mail est deja utilisee par un utilisateur."),
            400)

    # Check password
    if 'password' not in datas:
        return make_response(gettext(u"Le mot de passe est obligatoire."), 400)
    if not isinstance(datas['password'], (str, unicode)):
        return make_response(
            gettext(u"Le mot de passe doit être une chaine de caractère."),
            400)

    # Check phone
    if 'phone' not in datas:
        return make_response(
            gettext(u"Le numéro de téléphone est obligatoire."), 400)
    if not isinstance(datas['phone'], (str, unicode)):
        return make_response(
            gettext(
                u"Le numéro de téléphone doit être une chaine de caractère."),
            400)

    # Check address
    if 'address' not in datas:
        return make_response(gettext(u"L'adresse est obligatoire."), 400)
    if not isinstance(datas['address'], (str, unicode)):
        return make_response(
            gettext(u"L'adresse doit être une chaine de caractère."), 400)

    # Check zipcode
    if 'zipcode' not in datas:
        return make_response(gettext(u"Le code postal est obligatoire."), 400)
    if not isinstance(datas['zipcode'], (str, unicode)):
        return make_response(
            gettext(u"Le code postal doit être une chaine de caractère."), 400)

    # Check city
    if 'city' not in datas:
        return make_response(gettext(u"La ville est obligatoire."), 400)
    if not isinstance(datas['city'], (str, unicode)):
        return make_response(
            gettext(u"La ville doit être une chaine de caractère."), 400)

    # Check country
    if 'country_id' not in datas:
        return make_response(gettext(u"Le pays est obligatoire."), 400)
    try:
        country_id = int(datas['country_id'])
    except Exception:
        return make_response(gettext(u"country_id doit être un identifiant."),
                             400)

    country = db.session.query(Country).get(country_id)
    if country is None:
        return make_response(gettext(u"Le pays n'existe pas."), 404)

    # Create entrepreneur
    entrepreneur = Entrepreneur(firstname=datas['firstname'],
                                lastname=datas['lastname'],
                                phone=datas['phone'],
                                address=datas['address'],
                                zipcode=datas['zipcode'],
                                city=datas['city'],
                                country=country,
                                mail=datas['mail'],
                                password=datas['password'])
    db.session.flush()
    entrepreneur.create_order_address()

    # Check birthdate
    if 'birthdate' in datas:
        try:
            birthdate = datetime.datetime.strptime(datas['birthdate'],
                                                   '%Y-%m-%dT%H:%M:%S.%fZ')
        except:
            return make_response(
                gettext(u"Le format de la date est invalide."), 400)
        entrepreneur.birthdate = birthdate

    # Add entrepreneur
    db.session.add(entrepreneur)

    # Commit
    try:
        db.session.commit()
    except Exception:  # pragma: no cover
        db.session.rollback()
        return make_response(
            gettext(
                u"Dûe à une erreur inconnu, l'entrepreneur ne peut pas être créé."
            ), 500)

    # Build the response
    response = make_response(jsonify(entrepreneur.to_dict()))
    response.status_code = 201
    response.mimetype = 'application/json'
    return response