def load_publications():
    try:
        with open(app.config['PUBLICATIONS_FILE'],
                  'r') as publication_data_file:
            publications = Publications.from_yaml(publication_data_file.read())
        logging.info("Loaded publications from %s" %
                     app.config['PUBLICATIONS_FILE'])
    except IOError:
        logging.warning("Could not open %s to read publications" %
                        app.config['PUBLICATIONS_FILE'])
        publications = Publications([])
    except Exception as e:
        logging.error("There was a problem parsing publications from %s" %
                      app.config['PUBLICATIONS_FILE'],
                      exc_info=e)
        publications = Publications([])
    return publications
def user_page(user_id):
    if not user_id in users:
        return render_template('affiliated.html',
                               publications=Publications(),
                               users=users,
                               user_title="Unknown user",
                               download_link='#'), 404
    return render_template(
        'affiliated.html',
        publications=publications.filter_by_user_id(user_id),
        users=users,
        user_title="Publications for %s" % users[user_id].full_name(),
        download_link=url_for('download', user_id=user_id))
def missing():
    """Hidden URL for missing publications

  I've intentionally not publicised this feature because it makes lots of HTTP
  requests to the Sanger website and I probably only want me / administrators to
  use it on an infrequent basis.

  This endpoint lists all of the publicatons which are currently not in the
  Sanger Library's dataset"""
    library_pubmed_ids = set(LibrarySearcher.get_pubmed_ids())
    possible_pubmed_ids = set(publications.not_denied().keys())
    missing_pubmed_ids = possible_pubmed_ids.difference(library_pubmed_ids)
    missing_publications = Publications(
        [publications[pubmed_id] for pubmed_id in missing_pubmed_ids])
    return render_template('affiliated.html',
                           publications=missing_publications,
                           users=users,
                           user_title="Publications not in the Sanger Library")