def search(request): response = {} collection = json.loads(request.POST.get('collection', '{}')) query = json.loads(request.POST.get('query', '{}')) facet = json.loads(request.POST.get('facet', '{}')) cluster = request.POST.get('cluster', '""') query['download'] = 'download' in request.POST fetch_result = 'fetch_result' in request.POST if collection: try: if fetch_result: response = get_engine(request.user, collection, facet, cluster=cluster).fetch_result( collection, query, facet) else: response = get_engine(request.user, collection, facet, cluster=cluster).query( collection, query, facet) except RestException, e: response.update(extract_solr_exception_message(e)) except Exception as e: raise PopupException(e, title=_('Error while accessing Solr')) response['error'] = force_unicode(e)
def wrapper(*args, **kwargs): response = {} try: return f(*args, **kwargs) except SessionExpired as e: response['status'] = -2 except QueryExpired as e: if ENABLE_NOTEBOOK_2.get(): response['query_status'] = {'status': 'expired'} response['status'] = 0 else: response['status'] = -3 if e.message and isinstance(e.message, basestring): response['message'] = e.message except AuthenticationRequired as e: response['status'] = 401 if e.message and isinstance(e.message, basestring): response['message'] = e.message except ValidationError as e: LOG.exception('Error validation %s' % f) response['status'] = -1 response['message'] = e.message except OperationTimeout as e: response['status'] = -4 except FilesystemException as e: response['status'] = 2 response['message'] = e.message or 'Query history not found' except QueryError as e: LOG.exception('Error running %s' % f.__name__) response['status'] = 1 response['message'] = smart_unicode(e) if response['message'].index("max_row_size"): size = re.search(r"(\d+.?\d*) (.B)", response['message']) if size and size.group(1): response['help'] = { 'setting': { 'name': 'max_row_size', 'value': str(int(_closest_power_of_2(_to_size_in_bytes(size.group(1), size.group(2))))) } } if e.handle: response['handle'] = e.handle if e.extra: response.update(e.extra) except OperationNotSupported as e: response['status'] = 5 response['message'] = e.message except RestException as e: message = extract_solr_exception_message(e) response['status'] = 1 response['message'] = message.get('error') except Exception as e: LOG.exception('Error running %s' % f.__name__) response['status'] = -1 response['message'] = smart_unicode(e) finally: if response: return JsonResponse(response)
str( int( _closest_power_of_2( _to_size_in_bytes( size.group(1), size.group(2))))) } } if e.handle: response['handle'] = e.handle if e.extra: response.update(e.extra) except OperationNotSupported, e: response['status'] = 5 response['message'] = e.message except RestException, e: message = extract_solr_exception_message(e) response['status'] = 1 response['message'] = message.get('error') except Exception, e: LOG.exception('Error running %s' % func.__name__) response['status'] = -1 response['message'] = smart_unicode(e) finally: if response: return JsonResponse(response) return decorator def _closest_power_of_2(number): return math.pow(2, math.ceil(math.log(number, 2)))