コード例 #1
0
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
コード例 #2
0
    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)
コード例 #3
0
    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
コード例 #4
0
ファイル: service.py プロジェクト: BuildJet/dispatch
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
コード例 #5
0
ファイル: service.py プロジェクト: vj-codes/dispatch
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