def _clean_menu(menu): """ Returns a cleaned version of the given menu info for dishes.""" if not menu: return None for food_id in menu: info = filter_dict_by_keys(menu[food_id], _MENU_FIELDS) for regex, new in _MENU_REPLACEMENTS: info[u'description'] = regex.sub(new, info[u'description']) info[u'label'] = regex.sub(new, info[u'label']) menu[food_id] = info return menu
def _clean_meals_and_merge_dishes(dayparts, dishes): """ Takes in the cleaned menu and messy dayparts, cleans the dayparts then merges the dishes into the right stations in the meals. """ if not dayparts: return dayparts dayparts = _use_labels_as_keys(dayparts) for meal_name in dayparts: info = filter_dict_by_keys(dayparts[meal_name], _MEAL_FIELDS) meal_stations = _use_labels_as_keys(info[u'stations']) for stat_name in meal_stations: stat_info = filter_dict_by_keys(meal_stations[stat_name], _MEAL_STATION_FIELDS) if u'items' in stat_info: # Put all the dishes served at this station into the dict items = stat_info[u'items'] stat_info[u'items'] = [dishes[eid] for eid in items if type(eid) == unicode] meal_stations[stat_name] = stat_info info[u'stations'] = meal_stations dayparts[meal_name] = info return dayparts
def venues() -> str: groups = (Venue.query.with_entities(Venue.city, Venue.state, func.array_agg(Venue.id)).group_by( Venue.city, Venue.state).all()) data = [] for group in groups: venues = [] for venue_id in group[2]: venue_data = Venue.query.filter_by(id=venue_id).one() venue_dict = model_to_dict(venue_data) venue_dict = filter_dict_by_keys(venue_dict, ["id", "name"]) venue_shows = venue_data.shows shows_dict = compose_show_attributes(venue_shows) shows_dict = { "num_upcoming_shows": shows_dict["upcoming_shows_count"] } venue_dict.update(shows_dict) venues.append(venue_dict) data.append({"city": group[0], "state": group[1], "venues": venues}) return render_template("pages/venues.html", areas=data)