diff --git a/main.py b/main.py index bc29a08..759e444 100644 --- a/main.py +++ b/main.py @@ -20,71 +20,71 @@ import re # Change these paths to reflect your needs config = { - 'partner_path': 'C:\\Users\\dtodd\\Desktop\\res.partner (2).csv', # This is the csv file containing two columns, id and name - 'import_path': 'C:\\Users\\dtodd\\Desktop\\To Import\\MN Companies-50 FTE-HQ one (contacts) Campaign.csv', # This is the csv file containing whatever needs to be imported - 'temp_path': 'C:\\Users\\dtodd\\Desktop\\temp', # This is a csv file that will be deleted on program completion - 'column_to_change': 'parent_id/id' # This is the name of the column that you want to change + 'partner_path': 'C:\\Users\\dtodd\\Desktop\\res.partner (2).csv', # This is the csv file containing two columns, id and name + 'import_path': 'C:\\Users\\dtodd\\Desktop\\To Import\\MN Companies-50 FTE-HQ one (contacts) Campaign.csv', # This is the csv file containing whatever needs to be imported + 'temp_path': 'C:\\Users\\dtodd\\Desktop\\temp', # This is a csv file that will be deleted on program completion + 'column_to_change': 'parent_id/id' # This is the name of the column that you want to change } # Find the index number of a column in a row and return that def find_index(row=None, col=None): - if ((row == None) | (col == None)) | ((type(row) != '' | type(col) != ''): - raise ValueError('find_index requires both row and col to be set to strings') - exit(1) + if ((row == None) | (col == None)) | ((type(row) != '') | (type(col) != '')): + raise ValueError('find_index requires both row and col to be set to strings') + exit(1) - index = None - for i,j in enumerate(row): - if j == col: - index = i - break - return index + index = None + for i,j in enumerate(row): + if j == col: + index = i + break + return index os.rename(config['import_path'], config['import_path']+'.orig') # Store the original import_path in a backup file with open(config['partner_path'], 'r') as partner_csv: - reader = csv.reader(partner_csv) + reader = csv.reader(partner_csv) - first_row = next(reader) - if ('id' not in first_row) | ('name' not in first_row): - raise IndexError('Either \'id\' or \'name\' is not defined in your partner_path csv file') - exit(1) + first_row = next(reader) + if ('id' not in first_row) | ('name' not in first_row): + raise IndexError('Either \'id\' or \'name\' is not defined in your partner_path csv file') + exit(1) - id = find_index(first_row, 'id') - name = find_index(first_row, 'name') + id = find_index(first_row, 'id') + name = find_index(first_row, 'name') - if (id == None) | (name == None): - raise ValueError('Either id or name could not be indexed with find_index') - exit(1) + if (id == None) | (name == None): + raise ValueError('Either id or name could not be indexed with find_index') + exit(1) - partner_ids = {rows[id]:rows[name] for rows in reader} # Build a dict containing the company names as the keys and the __export__IDs as values - reader = None + partner_ids = {rows[id]:rows[name] for rows in reader} # Build a dict containing the company names as the keys and the __export__IDs as values + reader = None - # Open both the import_csv and temp_csv files - with open(config['import_path'], 'r') as import_csv, open(config['temp_path'], 'w') as temp_csv: - reader = csv.reader(import_csv) - writer = csv.writer(temp_csv) + # Open both the import_csv and temp_csv files + with open(config['import_path'], 'r') as import_csv, open(config['temp_path'], 'w') as temp_csv: + reader = csv.reader(import_csv) + writer = csv.writer(temp_csv) - first_row = next(reader) - if config['column_to_change'] not in first_row: - raise IndexError('\'{}\' is not defined in your import_path csv file').format(config['column_to_change']) - exit(1) + first_row = next(reader) + if config['column_to_change'] not in first_row: + raise IndexError('\'{}\' is not defined in your import_path csv file').format(config['column_to_change']) + exit(1) - col = find_index(first_row, config['column_to_change']) + col = find_index(first_row, config['column_to_change']) - if col != None: - for lines in reader: - # Taken from http://stackoverflow.com/a/2400577/5727514 and modified to support what I need - pattern = re.compile('|'.join(partner_ids.keys())) - lines[col] = pattern.sub(lambda x: partner_ids[x.group()], lines[col]) + if col != None: + for lines in reader: + # Taken from http://stackoverflow.com/a/2400577/5727514 and modified to support what I need + pattern = re.compile('|'.join(partner_ids.keys())) + lines[col] = pattern.sub(lambda x: partner_ids[x.group()], lines[col]) - writer.writerow(lines) - else: - raise ValueError('col could not be indexed with find_index') - exit(1) + writer.writerow(lines) + else: + raise ValueError('col could not be indexed with find_index') + exit(1) # Close our files to be nice to the OS - temp_csv.close() - import_csv.close() + temp_csv.close() + import_csv.close() partner_csv.close() # On program completion, move the temp file to the original file