def getActiveRideOffersSortedAbitualiAndPerDay(percorso_passeggero): import route import params import date_time_util as dtu from datetime import timedelta nowWithTolerance = dtu.removeTimezone(dtu.nowCET()) - timedelta(minutes=params.TIME_TOLERANCE_MIN) percorsi_compatibili = route.getPercorsiCompatibili(percorso_passeggero) if percorsi_compatibili: qry_rides = RideOffer.query( ndb.AND( RideOffer.percorso.IN(percorsi_compatibili), RideOffer.active == True, ndb.OR( RideOffer.programmato == True, RideOffer.start_datetime >= nowWithTolerance ) ) ) offers = qry_rides.fetch() else: offers = [] return filterAndSortOffersAbitualiAndPerDay(offers) #abituali, perDay
def getActiveRideOffersQry(): import params import date_time_util as dtu from datetime import timedelta qry = RideOffer.query( ndb.AND( RideOffer.active == True, ndb.OR( RideOffer.programmato == True, RideOffer.start_datetime >= dtu.removeTimezone(dtu.nowCET()) - timedelta(minutes=params.TIME_TOLERANCE_MIN)))) return qry
def getActiveRideOffersDriver(driver_id): import params import date_time_util as dtu from datetime import timedelta now_with_tolerance = dtu.removeTimezone( dtu.nowCET()) - timedelta(minutes=params.TIME_TOLERANCE_MIN) qry = RideOffer.query( ndb.AND( RideOffer.active == True, RideOffer.driver_id == driver_id, ndb.OR(RideOffer.programmato == True, RideOffer.start_datetime >= now_with_tolerance))).order( RideOffer.start_datetime) return qry.fetch()
def addRideOffer(driver, start_datetime, percorso, time_mode, programmato, giorni): import date_time_util as dtu o = RideOffer(driver_id=driver.getId(), driver_name_lastname=driver.getFirstNameLastName(), driver_username=driver.getUsername(), start_datetime=start_datetime, percorso=percorso, registration_datetime=dtu.removeTimezone(dtu.nowCET()), active=True, time_mode=time_mode, programmato=programmato, programmato_giorni=giorni) o.put() return o
def getActiveRideOffers(): import params import date_time_util as dtu from datetime import timedelta qry = RideOffer.query( ndb.AND( RideOffer.active == True, ndb.OR( RideOffer.programmato == True, RideOffer.start_datetime >= dtu.removeTimezone(dtu.nowCET()) - timedelta(minutes=params.TIME_TOLERANCE_MIN) # might be redundant as the filter is also applied afterwards ))) offers = qry.fetch() return offers
def filterAndSortOffersPerDay(offers): import params import date_time_util as dtu from datetime import timedelta result = [[], [], [], [], [], [], []] today = dtu.getWeekday() now_dt = dtu.removeTimezone( dtu.nowCET()) - timedelta(minutes=params.TIME_TOLERANCE_MIN) now_time = now_dt.time() for o in offers: if o.programmato: for g in o.programmato_giorni: # exclude those of today which have already happened if g != today or o.start_datetime.time( ) > now_time: #o.programmato_time > now_time: result[g].append(o) elif o.start_datetime > now_dt: g = dtu.getWeekday(o.start_datetime) result[g].append(o) for results_days in result: results_days.sort(key=lambda x: x.getDepartingTime()) return result
def disactivate(self, put=True): import date_time_util as dtu self.active = False self.disactivation_datetime = dtu.removeTimezone(dtu.nowCET()) if put: self.put()
def getRideOfferInsertedLastDaysQry(days): import date_time_util as dtu from datetime import timedelta return RideOffer.query( RideOffer.start_datetime >= dtu.removeTimezone(dtu.nowCET()) - timedelta(days=days))