def get(self): # Get params and conditions to filter the DB with: params = get_arguments(request.args, "operator", "date", "line", "mkt", "direction") conditions = [ oper_cond(params['operator']), date_cond(params['date']), line_cond(params['line']) ] if params['mkt']: conditions.append(mkt_cond(params['mkt'])) direction_ignore_terms = [None, 'all'] if params['direction'] not in direction_ignore_terms: conditions.append(direction_cond(params['direction'])) # Query the DB cols_to_load = [ "route_id", "file_date", "route_short_name", "route_mkt", "route_direction", "planned_start_time" ] trips = db.session.query(Trip_Model).filter(*conditions) \ .order_by(Trip_Model.planned_start_time) \ .options(load_only(*cols_to_load)) # is the lazy load necessary? # Parse results and return as json output = trips_schema.dump(trips) return {'Trips': output}
def get(self): # Get params and conditions to filter the DB with: params = get_arguments(request.args, "operator", "date") conditions = [oper_cond(params['operator']), date_cond(params['date'])] # Query the DB and return the results as json lines = db.session.query( Trip_Model.route_short_name).filter(*conditions).distinct() lines_list = [x.route_short_name for x in lines] return {'Lines': sorted(lines_list)}
def get(self): # Get params and conditions to filter the DB with: params = get_arguments(request.args, "operator", "date", "line") conditions = [ oper_cond(params['operator']), date_cond(params['date']), line_cond(params['line']) ] # Query the DB and return the results as json routes_mkts = db.session.query( Trip_Model.route_mkt).filter(*conditions).distinct() return {'MKTs': [x.route_mkt for x in routes_mkts]}
def get(self): params = get_arguments(request.args, "date", "oper", "cluster", "desc", "ignoreRareTrips") conditions = [] filters = [ True ] # if nothing to filter by... will use 'True' as filter to return all ignore_terms = [None, 'all'] if params['date'] not in ignore_terms: conditions.append(date_cond(params['date'])) if params['oper'] not in ignore_terms: conditions.append(oper_cond(params['oper'])) if params['cluster'] not in ignore_terms: conditions.append(cluster_cond(params['cluster'])) if params['ignoreRareTrips'] not in ['false']: conditions.append(Trip_Model.num_trips >= 15) if params['desc'] not in ['false']: performance_sort_order = desc("performance") else: performance_sort_order = "performance" if conditions: filters = conditions # Query the DB select_cols = [ Trip_Model.agency_id, Trip_Model.cluster_id, Trip_Model.route_short_name, Trip_Model.route_mkt, Trip_Model.route_long_name ] performance_measures = db.session.query(*select_cols) \ .add_columns(func.avg(Trip_Model.departure_delay.in_(range(0, 6))).label("performance")) \ .filter(*filters) \ .group_by(Trip_Model.route_mkt)\ .order_by(performance_sort_order)\ .limit(50) # Parse results and return as json output = stats_schema.dump(performance_measures) return {'Performance': output}
def get(self): # Get params and conditions to filter the DB with: params = get_arguments(request.args, "operator", "date", "line", "mkt") conditions = [ oper_cond(params['operator']), date_cond(params['date']), line_cond(params['line']) ] if params['mkt']: conditions.append(mkt_cond(params['mkt'])) # Query the DB and return the results as json directions = db.session.query( Trip_Model.route_direction).filter(*conditions).distinct() return {'Directions': [x.route_direction for x in directions]}
def get(self): params = get_arguments(request.args, "date", "by") if params['date'] in [None, 'all']: date_filter = True # Ignore filtering by sending 'True' as condition) else: date_filter = date_cond(params['date']) if params['by'] in [None, 'oper']: measure_type = Trip_Model.agency_id else: measure_type = Trip_Model.cluster_id performance_measures = db.session.query(measure_type)\ .add_columns(func.avg(Trip_Model.departure_delay.in_(range(0, 6))).label("performance"))\ .filter(date_filter)\ .group_by(measure_type).order_by(desc("performance")) # Parse results and return as json output = stats_schema.dump(performance_measures) return {'Performance': output}