From dc4056c1ed9970155747282f9f74e768430c0bb5 Mon Sep 17 00:00:00 2001 From: nolan Date: Sat, 9 Dec 2023 09:50:22 -0800 Subject: [PATCH] add campaign key to voter object --- lib_afc_mosaic/universe_map_file.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/lib_afc_mosaic/universe_map_file.py b/lib_afc_mosaic/universe_map_file.py index ef74610..69c4f7d 100644 --- a/lib_afc_mosaic/universe_map_file.py +++ b/lib_afc_mosaic/universe_map_file.py @@ -33,7 +33,6 @@ class AFCMUniverseMapFile: self.mosaic_head = {} self.metadata = {} self.mosaic_file_list = {} - self.voterset_key = None self.files = [] @@ -109,7 +108,7 @@ class AFCMUniverseMapFile: return data - def read_mosaic_map_dict( self, voterset_key : str, map_dict : dict ): + def read_mosaic_map_dict( self, map_dict : dict ): """ read_mosaic_map_dict """ @@ -120,7 +119,6 @@ class AFCMUniverseMapFile: self.mosaic_head = map_dict.get('mosaic', {}) self.metadata = map_dict.get('metadata', {}) self.mosaic_file_list = map_dict.get('files', {}) - self.voterset_key = voterset_key return None @@ -198,15 +196,6 @@ class AFCMUniverseMapFile: except Exception as ex: raise Exception(f"universe_map_file.generate_mapped_file: Failed to get {self.optout_s3_bucket}/{errors_filename_s3_key}: {ex}") from ex - if "optout_s3_key" in self.metadata and self.metadata["optout_s3_key"] != None: - try: - file_data_stream = self.optout_s3_connection.get_object(self.optout_s3_bucket, - self.metadata["optout_s3_key"]) - optout_numbers = json.load(codecs.getreader("utf-8")(file_data_stream)) - self.error_numbers.update(optout_numbers) - except Exception as ex: - raise Exception(f"universe_map_file.generate_mapped_file: Failed to get {self.optout_s3_bucket}/{self.metadata['optout_s3_key']}: {ex}") from ex - # Loop the files from the map for ufilename in self.mosaic_file_list: self.process_file(ufilename) @@ -439,7 +428,7 @@ class AFCMUniverseMapFile: write_final_file Writes the final CSV to S3 """ - # Set the length of the final file + # Set the count of final voters self.metadata["total_rows"] = len(self.final_rows) # Need to write the FINAL file @@ -463,6 +452,10 @@ class AFCMUniverseMapFile: write_stats_file Writes the stats JSON to S3 """ + # Set the count of stat data + self.metadata["cleaned_count"] = self.stats['cleaned_count']["total"] + self.metadata["total_removed"] = self.stats['removed_count']["total"] + # Write the STATS file stats_filename = "mosaic_stats.json" s3_key = os.path.join(self.metadata.get("s3_key", ""), stats_filename) @@ -485,10 +478,13 @@ class AFCMUniverseMapFile: } - def get_voter_object(self) -> dict: + def get_voter_object(self, voterset_key : str, campaign_key : str) -> dict: """ get_voter_object Get the voter to the API object + :param voterset_key: Voterset key of the voter + :param campaign_key: Campaign key of the voter + :return Dictionary object of the AF-VOTER """ @@ -506,7 +502,8 @@ class AFCMUniverseMapFile: "voter_id": voter_row['UID'], "first_name": voter_row['FName'], "last_name": voter_row['LName'], - "voterset_keys": [self.voterset_key], + "voterset_keys": [voterset_key], + "campaign_key": campaign_key, "data_fields": data_fields_dict, "cell_phone": voter_row['Cell_Phone'] }