예제 #1
0
    def get(self, request):
        query = request.REQUEST.get('query')
        form = SparqlQueryForm(request.REQUEST if query else None,
                               formats=self.get_format_choices())

        context = self.context
        context.update({
            'namespaces': sorted(NS.items()),
            'form': form,
            'store': self.store
        })

        if form.is_valid():
            try:
                results = self.perform_query(
                    request, query, form.cleaned_data['common_prefixes'])
            except QueryError, e:
                context['error'] = e.message
                context['status_code'] = e.status_code
            else:
                context['additional_headers'][
                    'X-Humfrey-SPARQL-Duration'] = results.duration

                context['queries'] = [results.query]
                context['duration'] = results.duration
                context['results'] = results

                if results.format_type == 'sparql-results':
                    return self._sparql_results_view(request, context)
                elif results.format_type == 'graph':
                    return self._graph_view(request, context)
                raise AssertionError("Unexpected format type: {0}".format(
                    results.format_type))
예제 #2
0
파일: core.py 프로젝트: pombredanne/humfrey
    def get(self, request):
        query = request.REQUEST.get('query')
        form = SparqlQueryForm(request.REQUEST if query else None,
                               formats=self.get_format_choices())

        context = self.context
        context.update({
            'namespaces': sorted(NS.items()),
            'form': form,
            'store': self.store
        })

        if form.is_valid():
            try:
                results = self.perform_query(request, query, form.cleaned_data['common_prefixes'])
            except QueryError, e:
                context['error'] = e.message
                context['status_code'] = e.status_code
            else:
                context['additional_headers']['X-Humfrey-SPARQL-Duration'] = results.duration

                context['queries'] = [results.query]
                context['duration'] = results.duration
                context['results'] = results

                if results.format_type == 'sparql-results':
                    return self._sparql_results_view(request, context)
                elif results.format_type == 'graph':
                    return self._graph_view(request, context)
                raise AssertionError("Unexpected format type: {0}".format(results.format_type))
예제 #3
0
파일: core.py 프로젝트: graingert/humfrey
    def get(self, request):
        privileges = self.get_user_privileges(request)

        query = request.REQUEST.get('query')
        form = SparqlQueryForm(request.REQUEST if query else None,
                               formats=self.get_format_choices())

        context = {
            'namespaces': sorted(NS.items()),
            'form': form,
            'store': self.store,
        }

        if privileges['throttle']:
            additional_headers = context['additional_headers'] = {
                'X-Humfrey-SPARQL-Throttle-Threshold': privileges['throttle_threshold'],
                'X-Humfrey-SPARQL-Deny-Threshold': privileges['deny_threshold'],
                'X-Humfrey-SPARQL-Intensity-Decay': privileges['intensity_decay'],
            }

        if form.is_valid():
            try:
                results, intensity = self.perform_query(request, query, form.cleaned_data['common_prefixes'], privileges)
                if intensity is not None:
                    additional_headers['X-Humfrey-SPARQL-Intensity'] = intensity

            except urllib2.HTTPError, e:
                context['error'] = e.read() #parse(e).find('.//pre').text
                context['status_code'] = e.code
            except self.ConcurrentQueryException, e:
                context['error'] = "You cannot perform more than one query at a time.\nPlease wait for your previous query to complete or time out first."
                context['status_code'] = 403