def publication(index_id):
    r = get(pub_url + 'publication/' + index_id, params={'mimetype': 'json'}, verify=verify_cert)
    if r.status_code == 404:
        return render_template('404.html')
    pubreturn = r.json()
    pubdata = munge_pubdata_for_display(pubreturn, replace_pubs_with_pubs_test, supersedes_url, json_ld_id_base_url)
    if 'mimetype' in request.args and request.args.get("mimetype") == 'json':
        return jsonify(pubdata)
    else:
        return render_template('publication.html', indexID=index_id, pubdata=pubdata)
def publication(index_id):
    r = get(pub_url + 'publication/' + index_id, params={'mimetype': 'json'}, verify=verify_cert)
    if r.status_code == 404:
        return render_template('pubswh/404.html'), 404
    pubreturn = r.json()
    pubdata = munge_pubdata_for_display(pubreturn, replace_pubs_with_pubs_test, supersedes_url, json_ld_id_base_url)
    related_pubs = extract_related_pub_info(pubdata)
    if 'mimetype' in request.args and request.args.get("mimetype") == 'json':
        return jsonify(pubdata)
    if 'mimetype' in request.args and request.args.get("mimetype") == 'ris':
        content =  render_template('pubswh/ris_single.ris', result=pubdata)
        return Response(content, mimetype="application/x-research-info-systems",
                               headers={"Content-Disposition":"attachment;filename=USGS_PW_"+pubdata['indexId']+".ris"})
    else:
        return render_template('pubswh/publication.html',
                               indexID=index_id, 
                               pubdata=pubdata,
                               related_pubs=related_pubs
                               )
def restricted_page(index_id):
    """
    web page which is restricted and requires the user to be logged in.
    """

    # generate the auth header from the request
    auth_header = generate_auth_header(request)
    # build the url to call the endpoint
    published_status = get(pub_url + 'publication/' + index_id,
                           params={'mimetype': 'json'}, verify=verify_cert).status_code
    # go out to mypubs and get the record
    response = get(preview_endpoint_url+index_id+'/preview', headers=auth_header, verify=verify_cert,
                   params={'mimetype': 'json'})
    print "preview status code: ", response.status_code
    if response.status_code == 200:
        record = response.json()
        pubdata = munge_pubdata_for_display(record, replace_pubs_with_pubs_test, supersedes_url, json_ld_id_base_url)
        return render_template("preview.html", indexID=index_id, pubdata=pubdata)
    # if the publication has been published (so it is out of mypubs) redirect to the right URL
    elif response.status_code == 404 and published_status == 200:
        return redirect(url_for('publication', indexId=index_id))
    elif response.status_code == 404 and published_status == 404:
        return render_template('404.html')