def read(self, request): querytext = request.GET.get('q', '') indexname = request.GET.get('namespace', '').strip() if indexname == '': message = _( 'Missing namespace GET parameter providing a search namespace') return build_error_response(request, 400, message) if not is_available(indexname): message = _('Invalid search namespace: %s' % indexname) return build_error_response(request, 422, message) try: pagenum = int(request.GET.get('pagenum', '1')) except ValueError: message = _('Invalid pagenum value: %s' % request.GET['pagenum']) return build_error_response(request, 422, message) try: maxresults = int(request.GET.get('maxresults', '30')) except ValueError: message = _('Invalid maxresults value: %s' % request.GET['maxresults']) return build_error_response(request, 422, message) result = get_search_engine(indexname).search(querytext, request, pagenum=pagenum, maxresults=maxresults) return HttpResponse(json.dumps(result, sort_keys=True), status=200, content_type='application/json; charset=utf-8')
def _handle(self, *args, **options): self.interactive = options['interactive'] self.verbosity = int(options.get('verbosity', 1)) from django.conf import settings dirname = settings.WIRECLOUD_INDEX_DIR if options['indexes'] == '': indexes = [ search_engine.indexname for search_engine in get_available_search_engines() ] else: indexes = options['indexes'].split(',') nonavailable_indexes = [] for index in indexes: if not is_available(index): nonavailable_indexes.append(index) if len(nonavailable_indexes) > 0: raise CommandError(self.nonavailable_indexes_message % nonavailable_indexes) if os.path.exists(dirname): message = ['\n'] message.append( ugettext( 'You have requested to reset indexes found in the location\n' 'specified in your settings:\n\n' ' %s\n\n' % dirname)) message.append(ugettext('This will DELETE EXISTING FILES!\n')) message.append( ugettext('Are you sure you want to do this?\n\n' "Type 'yes' to continue, or 'no' to cancel: ")) if self.interactive and input(''.join(message)) != 'yes': raise CommandError(_("Reset search indexes cancelled.")) else: os.mkdir(dirname) for indexname in indexes: self.log(self.update_start_message % indexname) search_engine = get_search_engine(indexname) search_engine.clear_index() for resource in search_engine.get_model().objects.all(): self.log(' ' + _('Adding %s\n') % resource) search_engine.add_resource(resource) self.log(self.update_success_message % indexname)
def _handle_noargs(self, **options): self.interactive = options['interactive'] self.verbosity = int(options.get('verbosity', 1)) from django.conf import settings dirname = settings.WIRECLOUD_INDEX_DIR if options['indexes'] == '': indexes = [search_engine.indexname for search_engine in get_available_search_engines()] else: indexes = options['indexes'].split(',') nonavailable_indexes = [] for index in indexes: if not is_available(index): nonavailable_indexes.append(index) if len(nonavailable_indexes) > 0: raise CommandError(self.nonavailable_indexes_message % nonavailable_indexes) if os.path.exists(dirname): message = ['\n'] message.append( 'You have requested to reset indexes found in the location\n' 'specified in your settings:\n\n' ' %s\n\n' % dirname ) message.append('This will DELETE EXISTING FILES!\n') message.append( 'Are you sure you want to do this?\n\n' "Type 'yes' to continue, or 'no' to cancel: " ) if self.interactive and input(''.join(message)) != 'yes': raise CommandError("Reset search indexes cancelled.") else: os.mkdir(dirname) for indexname in indexes: self.log(self.update_start_message % indexname) search_engine = get_search_engine(indexname) search_engine.clear_index() for resource in search_engine.get_model().objects.all(): self.log(' ' + _('Adding %s\n') % resource) search_engine.add_resource(resource) self.log(self.update_success_message % indexname)
def read(self, request): querytext = request.GET.get('q', '') indexname = request.GET.get('namespace', '').strip() if indexname == '': message = _('Missing namespace GET parameter providing a search namespace') return build_error_response(request, 400, message) if not is_available(indexname): message = _('Invalid search namespace: %s' % indexname) return build_error_response(request, 422, message) result = get_search_engine(indexname).search(querytext) return HttpResponse(json.dumps(result, ensure_ascii=False), status=200, content_type='application/json; charset=utf-8')
def read(self, request): querytext = request.GET.get('q', '') indexname = request.GET.get('namespace', '').strip() if indexname == '': message = _( 'Missing namespace GET parameter providing a search namespace') return build_error_response(request, 400, message) if not is_available(indexname): message = _('Invalid search namespace: %s' % indexname) return build_error_response(request, 422, message) result = get_search_engine(indexname).search(querytext) return HttpResponse(json.dumps(result), status=200, content_type='application/json; charset=utf-8')