def signature_aggregation(request, aggregation): '''Return the aggregation of a field. ''' params = get_params(request) if isinstance(params, http.HttpResponseBadRequest): # There was an error in the form, let's return it. return params if len(params['signature']) > 1: return http.HttpResponseBadRequest( 'Invalid value for "signature" parameter, ' 'only one value is accepted' ) signature = params['signature'][0] if not signature: return http.HttpResponseBadRequest( '"signature" parameter is mandatory' ) data = {} data['aggregation'] = aggregation allowed_fields = get_allowed_fields(request.user) # Make sure the field we want to aggregate on is allowed. if aggregation not in allowed_fields: return http.HttpResponseBadRequest( '<ul><li>' 'You are not allowed to aggregate on the "%s" field' '</li></ul>' % aggregation ) current_query = request.GET.copy() data['params'] = current_query.copy() params['signature'] = '=' + signature params['_results_number'] = 0 params['_results_offset'] = 0 params['_facets'] = [aggregation] data['current_url'] = '%s?%s' % ( reverse('signature:signature_report'), current_query.urlencode() ) api = SuperSearchUnredacted() try: search_results = api.get(**params) except models.BadStatusCodeError, e: # We need to return the error message in some HTML form for jQuery to # pick it up. return http.HttpResponseBadRequest('<ul><li>%s</li></ul>' % e)
def inner(request, *args, **kwargs): try: params = get_params(request) if len(params['signature']) > 1: raise ValidationError( 'Invalid value for "signature" parameter, ' 'only one value is accepted') if not params['signature'] or not params['signature'][0]: raise ValidationError('"signature" parameter is mandatory') except ValidationError as e: return http.HttpResponseBadRequest(str(e)) args += (params, ) return view(request, *args, **kwargs)
def get_validated_params(request): params = get_params(request) if isinstance(params, http.HttpResponseBadRequest): # There was an error in the form, let's return it. return params if len(params['signature']) > 1: return http.HttpResponseBadRequest( 'Invalid value for "signature" parameter, ' 'only one value is accepted') if not params['signature'] or not params['signature'][0]: return http.HttpResponseBadRequest( '"signature" parameter is mandatory') return params
def inner(request, *args, **kwargs): try: params = get_params(request) if len(params['signature']) > 1: raise ValidationError( 'Invalid value for "signature" parameter, only one value is accepted' ) if not params['signature'] or not params['signature'][0]: raise ValidationError('"signature" parameter is mandatory') except ValidationError as e: return http.HttpResponseBadRequest(str(e)) args += (params,) return view(request, *args, **kwargs)
def get_validated_params(request): params = get_params(request) if isinstance(params, http.HttpResponseBadRequest): # There was an error in the form, let's return it. return params if len(params['signature']) > 1: return http.HttpResponseBadRequest( 'Invalid value for "signature" parameter, ' 'only one value is accepted' ) if not params['signature'] or not params['signature'][0]: return http.HttpResponseBadRequest( '"signature" parameter is mandatory' ) return params
def signature_reports(request, signature): '''Return the results of a search. ''' params = get_params(request) if isinstance(params, http.HttpResponseBadRequest): # There was an error in the form, let's return it. return params data = {} data['query'] = { 'total': 0, 'total_count': 0, 'total_pages': 0 } allowed_fields = get_allowed_fields(request.user) current_query = request.GET.copy() if 'page' in current_query: del current_query['page'] data['params'] = current_query.copy() if '_columns' in data['params']: del data['params']['_columns'] data['columns'] = request.GET.getlist('_columns') or DEFAULT_COLUMNS # Make sure only allowed fields are used data['columns'] = [ x for x in data['columns'] if x in allowed_fields ] try: current_page = int(request.GET.get('page', 1)) except ValueError: return http.HttpResponseBadRequest('Invalid page') if current_page <= 0: current_page = 1 results_per_page = 50 data['current_page'] = current_page data['results_offset'] = results_per_page * (current_page - 1) params['signature'] = '=' + signature params['_results_number'] = results_per_page params['_results_offset'] = data['results_offset'] params['_facets'] = [] # We don't need no facets. data['current_url'] = '%s?%s' % ( reverse('signature:signature_report', args=(signature,)), current_query.urlencode() ) api = SuperSearchUnredacted() try: search_results = api.get(**params) except models.BadStatusCodeError, e: # We need to return the error message in some HTML form for jQuery to # pick it up. return http.HttpResponseBadRequest('<ul><li>%s</li></ul>' % e)