Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
 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()
Ejemplo n.º 8
0
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))