Fix column setup when domain managers

This commit is contained in:
Rachid Mrad 2024-02-29 22:37:15 -05:00
parent 41f3154db3
commit 9ad693879a
No known key found for this signature in database

View file

@ -45,7 +45,7 @@ def get_domain_infos(filter_condition, sort_fields):
return domain_infos_cleaned return domain_infos_cleaned
def parse_row(columns, domain_info: DomainInformation, security_emails_dict=None, get_domain_managers=False): def parse_row(columns, domain_info: DomainInformation, max_dm_count, security_emails_dict=None, get_domain_managers=False):
"""Given a set of columns, generate a new row from cleaned column data""" """Given a set of columns, generate a new row from cleaned column data"""
# Domain should never be none when parsing this information # Domain should never be none when parsing this information
@ -95,6 +95,11 @@ def parse_row(columns, domain_info: DomainInformation, security_emails_dict=None
} }
if get_domain_managers: if get_domain_managers:
for i in range(1, max_dm_count + 1):
column_name = f"Domain manager email {i}"
if column_name not in columns:
columns.append(column_name)
# Get each domain managers email and add to list # Get each domain managers email and add to list
dm_emails = [dm.user.email for dm in domain.permissions.all()] dm_emails = [dm.user.email for dm in domain.permissions.all()]
@ -127,16 +132,6 @@ def _get_security_emails(sec_contact_ids):
return security_emails_dict return security_emails_dict
def update_columns_with_domain_managers(columns, max_dm_count):
"""
Update the columns list to include "Domain manager email {#}" headers
based on the maximum domain manager count.
"""
for i in range(1, max_dm_count + 1):
columns.append(f"Domain manager email {i}")
def write_csv( def write_csv(
writer, writer,
columns, columns,
@ -177,7 +172,7 @@ def write_csv(
max_dm_count = dm_count max_dm_count = dm_count
try: try:
row = parse_row(columns, domain_info, security_emails_dict, get_domain_managers) row = parse_row(columns, domain_info, max_dm_count, security_emails_dict, get_domain_managers)
rows.append(row) rows.append(row)
except ValueError: except ValueError:
# This should not happen. If it does, just skip this row. # This should not happen. If it does, just skip this row.
@ -186,8 +181,6 @@ def write_csv(
continue continue
total_body_rows.extend(rows) total_body_rows.extend(rows)
if get_domain_managers:
update_columns_with_domain_managers(columns, max_dm_count)
if should_write_header: if should_write_header:
write_header(writer, columns) write_header(writer, columns)
writer.writerows(total_body_rows) writer.writerows(total_body_rows)
@ -209,7 +202,7 @@ def export_data_type_to_csv(csv_file):
"State", "State",
"AO", "AO",
"AO email", "AO email",
"Security contact email", # "Security contact email",
# For domain manager we are pass it in as a parameter below in write_body # For domain manager we are pass it in as a parameter below in write_body
] ]
@ -222,7 +215,7 @@ def export_data_type_to_csv(csv_file):
] ]
filter_condition = { filter_condition = {
"domain__state__in": [ "domain__state__in": [
Domain.State.READY, Domain.State.UNKNOWN,
Domain.State.DNS_NEEDED, Domain.State.DNS_NEEDED,
Domain.State.ON_HOLD, Domain.State.ON_HOLD,
], ],