def test_saved_query_get_by_id_raises_api_error_if_not_found(
         self, mock_get):
     # Arrange
     mock_get.side_effect = exceptions.DoesNotExist("")
     # Act # Assert
     with self.assertRaises(exceptions.DoesNotExist):
         saved_query_api.get_by_id(1)
def _fields_to_query(form_values, template_id,
                     get_dot_notation_to_element_func, use_wildcard):
    """Takes values from the html tree and creates a query from them

    Args:
        form_values:
        template_id:
        use_wildcard:
        get_dot_notation_to_element_func:

    Returns:

    """
    # get template
    template = template_api.get(template_id)
    # get namespaces
    namespaces = get_namespaces(template.content)
    # get default prefix
    default_prefix = get_default_prefix(namespaces)

    query = dict()
    for field in form_values:
        bool_comp = field['operator']
        is_not = bool_comp == 'NOT'
        element_type = field.get('type', None)

        # get element value
        value = get_element_value(field)
        # get comparison operator
        comparison = get_element_comparison(field)

        element_id = field['id']

        if element_type == "query":
            try:
                saved_query = saved_query_api.get_by_id(element_id)
            except DoesNotExist:
                raise MongoQueryException(
                    "The saved query does not exist anymore.")
            criteria = build_query_criteria(json.loads(saved_query.query),
                                            is_not)
        else:
            data_structure_element = data_structure_element_api.get_by_id(
                element_id)
            element = get_dot_notation_to_element_func(data_structure_element,
                                                       namespaces)
            criteria = build_criteria(element, comparison, value, element_type,
                                      default_prefix, is_not, use_wildcard)

        if bool_comp == 'OR':
            query = build_or_criteria(query, criteria)
        elif bool_comp == 'AND':
            query = build_and_criteria(query, criteria)
        else:
            if form_values.index(field) == 0:
                query.update(criteria)
            else:
                query = build_and_criteria(query, criteria)

    return query
Ejemplo n.º 3
0
def add_query_criteria(request):
    """Adds the selected query to query builder

    Args:
        request:

    Returns:

    """
    tag_id = request.POST['tagID']
    saved_query_id = request.POST['savedQueryID']

    # check if first criteria
    is_first = True if int(tag_id) == 1 else False

    # get saved query number from id
    try:
        saved_query = saved_query_api.get_by_id(saved_query_id)
    except DoesNotExist:
        return HttpResponseBadRequest(
            "The saved query does not exist anymore.")

    new_query_html = render_new_query(tag_id, saved_query, is_first)
    response_dict = {'query': new_query_html, 'first': is_first}
    return HttpResponse(json.dumps(response_dict),
                        content_type='application/javascript')
 def test_saved_query_get_by_id_returns_saved_query_if_found(
         self, mock_get):
     # Arrange
     mock_data = _create_saved_query()
     mock_get.return_value = mock_data
     # Act
     result = saved_query_api.get_by_id(mock_data.id)
     # Assert
     self.assertIsInstance(result, SavedQuery)
Ejemplo n.º 5
0
    def get_object(self, pk):
        """Get SavedQuery from db

        Args:

            pk: ObjectId

        Returns:

            SavedQuery
        """
        try:
            return saved_query_api.get_by_id(pk)
        except exceptions.DoesNotExist:
            raise Http404
Ejemplo n.º 6
0
def delete_query(request):
    """Deletes a query and update the HTML display

    Args:
        request:

    Returns:

    """
    saved_query_id = request.POST['savedQueryID']
    try:
        saved_query = saved_query_api.get_by_id(saved_query_id[5:])
    except DoesNotExist:
        return HttpResponseBadRequest(
            "The saved query does not exist anymore.")
    saved_query_api.delete(saved_query)
    return HttpResponse(json.dumps({}), content_type='application/javascript')