def create_project_report_on_gdocs(fc, qc, encoded_credentials, gdocs_folder): """Upload the sample read distribution for a project to google docs. """ success = True # Create a client class which will make HTTP requests with Google Docs server. client = g_spreadsheet.get_client(encoded_credentials) doc_client = g_document.get_client(encoded_credentials) # Get a reference to the parent folder parent_folder = g_document.get_folder(doc_client, gdocs_folder) if not parent_folder: parent_folder = g_document.add_folder(doc_client, gdocs_folder) log.info("Folder {!r} created".format(gdocs_folder)) parent_folder_title = _from_unicode(parent_folder.title.text) # Loop over the projects for project_name in fc.get_project_names(): # Get a flowcell object containing just the data for the project project_fc = fc.prune_to_project(project_name) ssheet_title = project_name + "_sequencing_results" ssheet = g_spreadsheet.get_spreadsheet(client, ssheet_title) if not ssheet: ssheet = g_document.add_spreadsheet(doc_client, ssheet_title) g_document.move_to_folder(doc_client, ssheet, parent_folder) ssheet = g_spreadsheet.get_spreadsheet(client, ssheet_title) log.info("Spreadsheet {!r} created in " \ "folder {!r}".format(_from_unicode(ssheet.title.text), \ parent_folder_title)) success &= bc_metrics._write_project_report_to_gdocs( client, ssheet, project_fc) success &= bc_metrics.write_project_report_summary_to_gdocs( client, ssheet) success &= qc_metrics.write_run_report_to_gdocs(project_fc, \ qc, \ ssheet_title, \ encoded_credentials) log.info("Sequencing results report written to spreadsheet '%s'" \ % _from_unicode(ssheet.title.text)) return success
def create_project_report_on_gdocs(fc, qc, encoded_credentials, gdocs_folder): """Upload the sample read distribution for a project to google docs. """ success = True # Create a client class which will make HTTP requests with Google Docs server. client = g_spreadsheet.get_client(encoded_credentials) doc_client = g_document.get_client(encoded_credentials) # Get a reference to the parent folder parent_folder = g_document.get_folder(doc_client, gdocs_folder) if not parent_folder: parent_folder = g_document.add_folder(doc_client, gdocs_folder) log.info("Folder {!r} created".format(gdocs_folder)) parent_folder_title = _from_unicode(parent_folder.title.text) # Loop over the projects for project_name in fc.get_project_names(): # Get a flowcell object containing just the data for the project project_fc = fc.prune_to_project(project_name) ssheet_title = project_name + "_sequencing_results" ssheet = g_spreadsheet.get_spreadsheet(client, ssheet_title) if not ssheet: ssheet = g_document.add_spreadsheet(doc_client, ssheet_title) g_document.move_to_folder(doc_client, ssheet, parent_folder) ssheet = g_spreadsheet.get_spreadsheet(client, ssheet_title) log.info("Spreadsheet {!r} created in " \ "folder {!r}".format(_from_unicode(ssheet.title.text), \ parent_folder_title)) success &= bc_metrics._write_project_report_to_gdocs(client, ssheet, project_fc) success &= bc_metrics.write_project_report_summary_to_gdocs(client, ssheet) success &= qc_metrics.write_run_report_to_gdocs(project_fc, \ qc, \ ssheet_title, \ encoded_credentials) log.info("Sequencing results report written to spreadsheet '%s'" \ % _from_unicode(ssheet.title.text)) return success
def get_spreadsheet(ssheet_title, encoded_credentials): """Connect to Google docs and get a spreadsheet""" # Convert the spreadsheet title to unicode ssheet_title = _to_unicode(ssheet_title) # Create a client class which will make HTTP requests with Google Docs server. client = g_spreadsheet.get_client() bcbio.google.connection.authenticate(client, encoded_credentials) # Locate the spreadsheet ssheet = g_spreadsheet.get_spreadsheet(client, ssheet_title) # Check that we got a result back if not ssheet: logger2.warn("No document with specified title '%s' found in \ GoogleDocs repository" % ssheet_title) return (None, None) return (client, ssheet)