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
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
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")
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