def get_contributions(self, csv_type, date_range_start, date_range_end): """ Get specified contribution data from CSV API as Parsons table. `Args:` csv_type: str Type of CSV you are requesting. Options: 'paid_contributions': contains paid, non-refunded contributions to the entity (campaign or organization) you created the credential for, during the specified date range. 'refunded_contributions': contributions to your entity that were refunded, during the specified date range. 'managed_form_contributions': contributions made through any form that is managed by your entity, during the specified date range - including contributions to other entities via that form if it is a tandem form. date_range_start: str Start of date range to withdraw contribution data (inclusive). Ex: '2020-01-01' date_range_end: str End of date range to withdraw contribution data (exclusive). Ex: '2020-02-01' `Returns:` Contents of the generated contribution CSV as a Parsons table. """ post_request_response = self.post_request(csv_type, date_range_start, date_range_end) csv_id = post_request_response["id"] download_url = self.poll_for_download_url(csv_id) table = Table.from_csv(download_url) logger.info('Completed conversion to Parsons Table.') return table
def test_get_url(self): file_name = 'delete_me.csv' input_tbl = Table([['a'], ['1']]) self.cloud.upload_table(input_tbl, TEMP_BUCKET_NAME, file_name) url = self.cloud.get_url(TEMP_BUCKET_NAME, file_name) download_tbl = Table.from_csv(url) assert_matching_tables(input_tbl, download_tbl)
def get_table(self, remote_path, connection=None): """ Download a csv from the server and convert into a Parsons table. The file may be compressed with gzip, or zip, but may not contain multiple files in the archive. `Args:` remote_path: str The remote path of the file to download connection: obj An SFTP connection object `Returns:` Parsons Table See :ref:`parsons-table` for output options. """ if not files.valid_table_suffix(remote_path): raise ValueError('File type cannot be converted to a Parsons table.') return Table.from_csv(self.get_file(remote_path, connection=connection))
def assert_file_matches_table(local_path, table): downloaded_tbl = Table.from_csv(local_path) assert_matching_tables(table, downloaded_tbl)