def apply_filter_specific_joins(model: Base, filter_spec: dict, query: orm.query): """Applies any model specific implicity joins.""" # this is required because by default sqlalchemy-filter's auto-join # knows nothing about how to join many-many relationships. model_map = { # (Feedback, "Project"): (Incident, False), # (Feedback, "Incident"): (Incident, False), # (Task, "Project"): (Incident, False), # (Task, "Incident"): (Incident, False), # (Task, "IncidentPriority"): (Incident, False), # (Task, "IncidentType"): (Incident, False), # (PluginInstance, "Plugin"): (Plugin, False), # (DispatchUser, "Organization"): (DispatchUser.organizations, True), # (Incident, "Tag"): (Incident.tags, True), # (Incident, "TagType"): (Incident.tags, True), # (Incident, "Term"): (Incident.terms, True), } filters = build_filters(filter_spec) filter_models = get_named_models(filters) for filter_model in filter_models: if model_map.get((model, filter_model)): joined_model, is_outer = model_map[(model, filter_model)] try: query = query.join(joined_model, isouter=is_outer) except Exception as e: log.debug(str(e)) return query
def _extend_query(self, query_to_override: query) -> query: venue_id = request.args.get("id") if venue_id is None: abort(400, "Venue id required") return query_to_override.filter(Offer.venueId == venue_id)
def _extend_query(query_to_override: query) -> query: venue_id = request.args.get("id") if venue_id: return query_to_override.filter(VenueProvider.venueId == venue_id) return query_to_override
def apply_model_specific_joins(model: Base, query: orm.query): """Applies any model specific implicity joins.""" model_map = { Feedback: [Incident, Project], Task: [Incident, Project], PluginInstance: [Plugin], Incident: [Incident.tags], } joined_models = model_map.get(model, []) for m in joined_models: query = query.join(m) return query
def apply_model_specific_joins(model: Base, query: orm.query): """Applies any model specific implicity joins.""" model_map = { Feedback: [(Incident, False), (Project, False)], Task: [(Incident, False), (Project, False)], PluginInstance: [(Plugin, False)], Incident: [(Incident.tags, True), (Incident.terms, True)], } joined_models = model_map.get(model, []) for model, is_outer in joined_models: query = query.join(model, isouter=is_outer) return query