diff --git a/docs/operations/import_export.md b/docs/operations/import_export.md index 4810774e4..b7fd50d52 100644 --- a/docs/operations/import_export.md +++ b/docs/operations/import_export.md @@ -32,6 +32,7 @@ For reference, the zip file will contain the following tables in csv form: * DomainInformation * DomainUserRole * DraftDomain +* FederalAgency * Websites * Host * HostIP @@ -76,13 +77,14 @@ For reference, this deletes all rows from the following tables: * DomainInformation * DomainRequest * Domain -* User (all but the current user) +* User * Contact * Websites * DraftDomain * HostIP * Host * PublicContact +* FederalAgency #### Importing into Target Environment @@ -115,7 +117,7 @@ cf ssh {target-app} example cleaning getgov-backup: cf ssh getgov-backup /tmp/lifecycle/backup -./manage.py import_tables --skipEppSave=False +./manage.py import_tables --no-skipEppSave For reference, this imports tables in the following order: @@ -126,6 +128,7 @@ For reference, this imports tables in the following order: * HostIP * DraftDomain * Websites +* FederalAgency * DomainRequest * DomainInformation * UserDomainRole diff --git a/src/registrar/admin.py b/src/registrar/admin.py index 9ddaf03e7..16aba7ec0 100644 --- a/src/registrar/admin.py +++ b/src/registrar/admin.py @@ -2370,6 +2370,9 @@ class PublicContactResource(resources.ModelResource): class Meta: model = models.PublicContact + use_bulk = True + batch_size = 1000 + force_init_instance = True def __init__(self): """Sets global variables for code tidyness""" @@ -2472,11 +2475,20 @@ class VerifiedByStaffAdmin(ListHeaderAdmin): super().save_model(request, obj, form, change) -class FederalAgencyAdmin(ListHeaderAdmin): +class FederalAgencyResource(resources.ModelResource): + """defines how each field in the referenced model should be mapped to the corresponding fields in the + import/export file""" + + class Meta: + model = models.FederalAgency + + +class FederalAgencyAdmin(ListHeaderAdmin, ImportExportModelAdmin): list_display = ["agency"] search_fields = ["agency"] search_help_text = "Search by agency name." ordering = ["agency"] + resource_classes = [FederalAgencyResource] class UserGroupAdmin(AuditedAdmin): diff --git a/src/registrar/management/commands/clean_tables.py b/src/registrar/management/commands/clean_tables.py index fa37c214d..f0c51390b 100644 --- a/src/registrar/management/commands/clean_tables.py +++ b/src/registrar/management/commands/clean_tables.py @@ -28,6 +28,7 @@ class Command(BaseCommand): * DomainInformation * DomainRequest * DraftDomain + * FederalAgency * Host * HostIp * PublicContact @@ -40,14 +41,15 @@ class Command(BaseCommand): table_names = [ "DomainInformation", "DomainRequest", + "FederalAgency", "PublicContact", + "HostIp", + "Host", "Domain", "User", "Contact", "Website", "DraftDomain", - "HostIp", - "Host", ] for table_name in table_names: diff --git a/src/registrar/management/commands/export_tables.py b/src/registrar/management/commands/export_tables.py index f927129fe..bd10ea7c5 100644 --- a/src/registrar/management/commands/export_tables.py +++ b/src/registrar/management/commands/export_tables.py @@ -18,6 +18,7 @@ class Command(BaseCommand): "Domain", "DomainRequest", "DomainInformation", + "FederalAgency", "UserDomainRole", "DraftDomain", "Website", diff --git a/src/registrar/management/commands/import_tables.py b/src/registrar/management/commands/import_tables.py index cbe3dc6ee..fcefb9b61 100644 --- a/src/registrar/management/commands/import_tables.py +++ b/src/registrar/management/commands/import_tables.py @@ -36,6 +36,7 @@ class Command(BaseCommand): "HostIp", "DraftDomain", "Website", + "FederalAgency", "DomainRequest", "DomainInformation", "UserDomainRole", @@ -83,7 +84,12 @@ class Command(BaseCommand): result = resource_instance.import_data(dataset, dry_run=False, skip_epp_save=self.skip_epp_save) if result.has_errors(): - logger.error(f"Errors occurred while importing {csv_filename}: {result.row_errors()}") + logger.error(f"Errors occurred while importing {csv_filename}:") + for row_error in result.row_errors(): + row_index = row_error[0] + errors = row_error[1] + for error in errors: + logger.error(f"Row {row_index} - {error.error} - {error.row}") else: logger.info(f"Successfully imported {csv_filename} into {table_name}")