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)