def save_results(rates, session, hotel, govt): for item in rates: rate = Rate(**item) try: # check if already in database q = session.query(Rate).filter(Rate.hotel == hotel['object'], Rate.arrive == rate.arrive).first() # update inital_rate if that field is empty if q: if 'govt_rate' in item and q.govt_rate_initial is None: q.govt_rate_initial = rate.govt_rate elif 'commercial_rate' in item and q.commercial_rate_initial is None: q.commercial_rate_initial = rate.commercial_rate if q and govt is True: q.updated = datetime.utcnow() q.govt_rate = rate.govt_rate elif q and govt is False: q.updated = datetime.utcnow() q.commercial_rate = rate.commercial_rate else: if govt is True: rate.govt_rate_initial = rate.govt_rate elif govt is False: rate.commercial_rate_initial = rate.commercial_rate hotel['object'].rates.append(rate) session.commit() except: session.rollback() raise
def save_result(arrive, govt_rate, commercial_rate, item, govt_link, commercial_link): # create db session session = create_db_session() # get location and hotel location = get_or_create(session, Location, city=item['city']) hotel = get_or_create(session, Hotel, name=item['name'], location=location) rate = Rate() # check if already in database q = session.query(Rate).filter(Rate.hotel == hotel, Rate.arrive == arrive).first() # update if already exists if q: q.updated = datetime.utcnow() q.govt_rate = govt_rate q.commercial_rate = commercial_rate # update initial rates if not already if govt_rate and q.govt_rate_initial is None: q.govt_rate_initial = govt_rate elif commercial_rate and q.commercial_rate_initial is None: q.commercial_rate_initial = commercial_rate else: # new hotel rate rate.location = location rate.hotel = hotel rate.arrive = datetime.strptime(arrive, '%m/%d/%Y') rate.govt_rate = govt_rate rate.govt_rate_initial = govt_rate rate.commercial_rate_initial = commercial_rate rate.commercial_rate = commercial_rate rate.govt_link = govt_link rate.commercial_link = commercial_link session.add(rate) session.commit() session.close()