Skip to content

Commit

Permalink
Merge pull request #2115 from cisagov/dk/1989-export-import-tables
Browse files Browse the repository at this point in the history
Issue #1989 : export import tables
  • Loading branch information
dave-kennedy-ecs committed May 10, 2024
2 parents bc2bcb7 + b95c70f commit c834797
Show file tree
Hide file tree
Showing 12 changed files with 681 additions and 46 deletions.
66 changes: 66 additions & 0 deletions docs/operations/import_export.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Export / Import Tables

A means is provided to export and import individual tables from
one environment to another. This allows for replication of
production data in a development environment. Import and export
are provided through the django admin interface, through a modified
library, django-import-export. Each supported model has an Import
and an Export button on the list view.

### Export

When exporting models from the source environment, make sure that
no filters are selected. This will ensure that all rows of the model
are exported. Due to database dependencies, the following models
need to be exported:

* User
* Contact
* Domain
* DomainRequest
* DomainInformation
* DomainUserRole
* DraftDomain
* Websites
* Host
* HostIP

### Import

When importing into the target environment, if the target environment
is different than the source environment, it must be prepared for the
import. This involves clearing out rows in the appropriate tables so
that there are no database conflicts on import.

#### Preparing Target Environment

Delete all rows from tables in the following order through django admin:

* DomainInformation
* DomainRequest
* Domain
* User (all but the current user)
* Contact
* Websites
* DraftDomain
* HostIP
* Host

#### Importing into Target Environment

Once target environment is prepared, files can be imported in the following
order:

* User (After importing User table, you need to delete all rows from Contact table before importing Contacts)
* Contact
* Domain
* Host
* HostIP
* DraftDomain
* Websites
* DomainRequest
* DomainInformation
* UserDomainRole

Optional step:
* Run fixtures to load fixture users back in
1 change: 1 addition & 0 deletions src/Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ fred-epplib = {git = "https://github.com/cisagov/epplib.git", ref = "master"}
pyzipper="*"
tblib = "*"
django-admin-multiple-choice-list-filter = "*"
django-import-export = "*"
django-waffle = "*"

[dev-packages]
Expand Down
131 changes: 130 additions & 1 deletion src/Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit c834797

Please sign in to comment.