Added postprocessing for universe_map_file.py

This commit is contained in:
Rick Ross 2024-01-18 16:40:12 -08:00
parent dc4056c1ed
commit 18b6bee0a0
1 changed files with 37 additions and 2 deletions

View File

@ -33,6 +33,7 @@ class AFCMUniverseMapFile:
self.mosaic_head = {} self.mosaic_head = {}
self.metadata = {} self.metadata = {}
self.mosaic_file_list = {} self.mosaic_file_list = {}
self.mosaic_postprocess = {}
self.files = [] self.files = []
@ -41,9 +42,10 @@ class AFCMUniverseMapFile:
self.optout_s3_connection = None self.optout_s3_connection = None
self.optout_s3_bucket = None self.optout_s3_bucket = None
self.final_rows = [] self.cleaned_import_rows = []
self.removed_row_count = 0 self.removed_row_count = 0
self.processed_row_count = 0 self.processed_row_count = 0
self.final_rows = []
# Watch for duplicates across files # Watch for duplicates across files
self.running_phone_numbers = {} self.running_phone_numbers = {}
@ -105,6 +107,9 @@ class AFCMUniverseMapFile:
if 'files' in data: if 'files' in data:
self.mosaic_file_list = data['files'] self.mosaic_file_list = data['files']
if 'postprocess' in data:
self.mosaic_postprocess = data['postprocess']
return data return data
@ -199,11 +204,41 @@ class AFCMUniverseMapFile:
# Loop the files from the map # Loop the files from the map
for ufilename in self.mosaic_file_list: for ufilename in self.mosaic_file_list:
self.process_file(ufilename) self.process_file(ufilename)
# Perform post-processing
if len(self.mosaic_postprocess) is not 0:
self.postprocessing()
else:
# copy self.cleaned_import_rows list to self.final_rows list
self.final_rows = self.cleaned_import_rows[:]
# Run final steps # Run final steps
self.write_final_file() self.write_final_file()
self.write_stats_file() self.write_stats_file()
def postprocessing(self):
"""
postprocessing Performs actions for any postprocessing rules defined in the voterset map file
"""
# structure in the map file
# "postprocess": {
# "range": {
# "start": 0,
# "end": 10000
# }
# }
# get list of keys from "postprocess"
# if "range" exists,
# get "start" and "end" keys
# copy the range from cleaned_import_rows into final_rows
return
def process_file(self, voterset_filename): def process_file(self, voterset_filename):
""" """
process_file Process the file of the VoterSet process_file Process the file of the VoterSet
@ -353,7 +388,7 @@ class AFCMUniverseMapFile:
new_row['Cell_Phone'] = formatted_number new_row['Cell_Phone'] = formatted_number
amplify_rows.append(new_row) amplify_rows.append(new_row)
self.final_rows.append(new_row) self.cleaned_import_rows.append(new_row)
self.running_phone_numbers[formatted_number] = True self.running_phone_numbers[formatted_number] = True
processing_time = time.time() - processing_time_start processing_time = time.time() - processing_time_start