def search_results(): form = SearchForm(request.args) parser = FlaskParser() search_kwargs = parser.parse(search_args, request) if search_kwargs.get('page_size') is None or search_kwargs.get('page_size') == '': search_kwargs['page_size'] = '25' if search_kwargs.get('page') is None or search_kwargs.get('page') == '': search_kwargs['page'] = '1' if (search_kwargs.get('page_number') is None or search_kwargs.get('page_number') == '') \ and search_kwargs.get('page') is not None: search_kwargs['page_number'] = search_kwargs['page'] sp = SearchPublications(search_url) search_results_response, resp_status_code = sp.get_pubs_search_results( params=search_kwargs) # go out to the pubs API and get the search results try: search_result_records = search_results_response['records'] record_count = search_results_response['recordCount'] pagination = Pagination(page=int(search_kwargs['page_number']), total=record_count, per_page=int(search_kwargs['page_size']), record_name='Search Results', bs_version=3) search_service_down = None start_plus_size = int(search_results_response['pageRowStart']) + int(search_results_response['pageSize']) if record_count < start_plus_size: record_max = record_count else: record_max = start_plus_size result_summary = {'record_count': record_count, 'page_number': search_results_response['pageNumber'], 'records_per_page': search_results_response['pageSize'], 'record_min': (int(search_results_response['pageRowStart']) + 1), 'record_max': record_max} except TypeError: search_result_records = None pagination = None search_service_down = 'The backend services appear to be down with a {0} status.'.format(resp_status_code) result_summary = {} if 'mimetype' in request.args and request.args.get("mimetype") == 'ris': content = render_template('pubswh/ris_output.ris', search_result_records=search_result_records) return Response(content, mimetype="application/x-research-info-systems", headers={"Content-Disposition":"attachment;filename=PubsWarehouseResults.ris"}) if request.args.get('map') == 'True': for record in search_result_records: record = jsonify_geojson(record) return render_template('pubswh/search_results.html', result_summary=result_summary, search_result_records=search_result_records, pagination=pagination, search_service_down=search_service_down, form=form, pub_url=pub_url)
def search_results(): parser = FlaskParser() search_kwargs = parser.parse(search_args, request) form = SearchForm(None, obj=request.args, ) # populate form based on parameter form.advanced.data = True form_element_list = ['q', 'title', 'contributingOffice', 'contributor', 'typeName', 'subtypeName', 'seriesName', 'reportNumber', 'year'] for element in form_element_list: if len(search_kwargs[element]) > 0: form[element].data = search_kwargs[element][0] if search_kwargs.get('page_size') is None or search_kwargs.get('page_size') == '': search_kwargs['page_size'] = '25' if search_kwargs.get('page') is None or search_kwargs.get('page') == '': search_kwargs['page'] = '1' if (search_kwargs.get('page_number') is None or search_kwargs.get('page_number') == '') \ and search_kwargs.get('page') is not None: search_kwargs['page_number'] = search_kwargs['page'] sp = SearchPublications(search_url) search_results_response, resp_status_code = sp.get_pubs_search_results( params=search_kwargs) # go out to the pubs API and get the search results try: search_result_records = search_results_response['records'] record_count = search_results_response['recordCount'] pagination = Pagination(page=int(search_kwargs['page_number']), total=record_count, per_page=int(search_kwargs['page_size']), record_name='Search Results', bs_version=3) search_service_down = None start_plus_size = int(search_results_response['pageRowStart']) + int(search_results_response['pageSize']) if record_count < start_plus_size: record_max = record_count else: record_max = start_plus_size result_summary = {'record_count': record_count, 'page_number': search_results_response['pageNumber'], 'records_per_page': search_results_response['pageSize'], 'record_min': (int(search_results_response['pageRowStart']) + 1), 'record_max': record_max} except TypeError: search_result_records = None pagination = None search_service_down = 'The backend services appear to be down with a {0} status.'.format(resp_status_code) result_summary = {} return render_template('search_results.html', advanced=search_kwargs['advanced'], result_summary=result_summary, search_result_records=search_result_records, pagination=pagination, search_service_down=search_service_down, form=form)
def index(): sp = SearchPublications(search_url) recent_publications_resp = sp.get_pubs_search_results(params={'pub_x_days': 30, 'page_size': 6}) #bring back recent publications recent_pubs_content = recent_publications_resp[0] try: pubs_records = recent_pubs_content['records'] except TypeError: pubs_records = [] # return an empty list recent_pubs_content is None (e.g. the service is down) form = SearchForm(None, obj=request.args) form.advanced.data = True return render_template('home.html', recent_publications=pubs_records, form=form, advanced=request.args.get('advanced') )
def index(): sp = SearchPublications(search_url) recent_publications_resp = sp.get_pubs_search_results(params={'pub_x_days': 7, 'page_size': 6}) # bring back recent publications recent_pubs_content = recent_publications_resp[0] try: pubs_records = recent_pubs_content['records'] for record in pubs_records: record = create_display_links(record) if replace_pubs_with_pubs_test: record['displayLinks']['Thumbnail'][0]['url'] = change_to_pubs_test( record['displayLinks']['Thumbnail'][0]['url']) except TypeError: pubs_records = [] # return an empty list recent_pubs_content is None (e.g. the service is down) form = SearchForm(request.args) return render_template('home.html', recent_publications=pubs_records, form=form)
def new_pubs(): num_form = NumSeries() sp = SearchPublications(search_url) search_kwargs = {'pub_x_days': 30, "page_size": 500} # bring back recent publications # Search if num_series subtype was checked in form if request.args.get('num_series') == 'y': num_form.num_series.data = True search_kwargs['subtypeName'] = 'USGS Numbered Series' # Handles dates from form. Searches back to date selected or defaults to past 30 days. if request.args.get('date_range'): time_diff = date.today() - dateparser.parse(request.args.get('date_range')).date() day_diff = time_diff.days if not day_diff > 0: num_form.date_range.data = date.today() - timedelta(30) search_kwargs['pub_x_days'] = 30 else: num_form.date_range.data = dateparser.parse(request.args.get('date_range')) search_kwargs['pub_x_days'] = day_diff else: num_form.date_range.data = date.today() - timedelta(30) recent_publications_resp = sp.get_pubs_search_results(params=search_kwargs) recent_pubs_content = recent_publications_resp[0] try: pubs_records = recent_pubs_content['records'] pubs_records.sort(key=itemgetter('displayToPublicDate'), reverse=True) for record in pubs_records: record['FormattedDisplayToPublicDate'] = \ arrow.get(record['displayToPublicDate']).format('MMMM DD, YYYY HH:mm') except TypeError: pubs_records = [] # return an empty list recent_pubs_content is None (e.g. the service is down) return render_template('pubswh/new_pubs.html', new_pubs=pubs_records, num_form=num_form)
def new_pubs(): num_form = NumSeries() sp = SearchPublications(search_url) search_kwargs = {'pub_x_days': 30} #bring back recent publications if request.args.get('num_series') == 'y': num_form = NumSeries(num_series=True) search_kwargs['subtypeName'] = 'USGS Numbered Series' recent_publications_resp = sp.get_pubs_search_results(params=search_kwargs) recent_pubs_content = recent_publications_resp[0] try: pubs_records = recent_pubs_content['records'] except TypeError: pubs_records = [] # return an empty list recent_pubs_content is None (e.g. the service is down) return render_template('new_pubs.html', new_pubs=pubs_records, num_form=num_form)