Ejemplo n.º 1
0
    def test_search_by_filters(self):
        """Test that calling search_by_filters returns an JSON object"""
        with patch('es_api.utils.queries.XDSConfiguration.objects') as xdsCfg,\
                patch('elasticsearch_dsl.Search.execute') as es_execute:
            configObj = XDSConfiguration(target_xis_metadata_api="dsds")
            uiConfigObj = XDSUIConfiguration(search_results_per_page=10,
                                             xds_configuration=configObj)
            xdsCfg.xdsuiconfiguration = uiConfigObj
            xdsCfg.first.return_value = configObj
            expected_result = {"test": "test"}
            es_execute.return_value = expected_result
            query = XSEQueries('test', 'test')
            result = query.search_by_filters(1, {'Course.CourseTitle': 'test'})

            self.assertEqual(result, expected_result)
Ejemplo n.º 2
0
    def get(self, request):
        results = []
        filters = {}
        page_num = 1

        if (request.GET.get('p')) and (request.GET.get('p') != ''):
            page_num = int(request.GET['p'])

        if (request.GET.get('Course.CourseTitle')
                and request.GET.get('Course.CourseTitle') != ''):
            filters['Course.CourseTitle'] = request.GET['Course.CourseTitle']

        if (request.GET.get('Course.CourseProviderName')
                and request.GET.get('Course.CourseProviderName') != ''):
            filters['Course.CourseProviderName'] = \
                request.GET['Course.CourseProviderName']

        if (request.GET.get('CourseInstance.CourseLevel')
                and request.GET.get('CourseInstance.CourseLevel') != ''):
            filters['CourseInstance.CourseLevel'] = \
                request.GET['CourseInstance.CourseLevel']

        errorMsg = {
            "message":
            "error executing ElasticSearch query; " +
            "Please contact an administrator"
        }
        errorMsgJSON = json.dumps(errorMsg)

        try:
            queries = XSEQueries(
                XDSConfiguration.objects.first().target_xse_host,
                XDSConfiguration.objects.first().target_xse_index,
                user=request.user)
            response = queries.search_by_filters(page_num=page_num,
                                                 filters=filters)
            results = queries.get_results(response)
        except HTTPError as http_err:
            logger.error(http_err)
            return HttpResponseServerError(errorMsgJSON,
                                           content_type="application/json")
        except Exception as err:
            logger.error(err)
            return HttpResponseServerError(errorMsgJSON,
                                           content_type="application/json")
        else:
            logger.info(results)
            return HttpResponse(results, content_type="application/json")