mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-22 02:36:02 +02:00
Add script to populate data
This commit is contained in:
parent
2f494466fc
commit
c24a235d8e
2 changed files with 76 additions and 4 deletions
|
@ -602,18 +602,18 @@ That data are synthesized from the generic_org_type field and the is_election_bo
|
||||||
The latest domain_election_board csv can be found [here](https://drive.google.com/file/d/1aDeCqwHmBnXBl2arvoFCN0INoZmsEGsQ/view).
|
The latest domain_election_board csv can be found [here](https://drive.google.com/file/d/1aDeCqwHmBnXBl2arvoFCN0INoZmsEGsQ/view).
|
||||||
After downloading this file, place it in `src/migrationdata`
|
After downloading this file, place it in `src/migrationdata`
|
||||||
|
|
||||||
#### Step 2: Upload the domain_election_board file to your sandbox
|
#### Step 3: Upload the domain_election_board file to your sandbox
|
||||||
Follow [Step 1: Transfer data to sandboxes](#step-1-transfer-data-to-sandboxes) and [Step 2: Transfer uploaded files to the getgov directory](#step-2-transfer-uploaded-files-to-the-getgov-directory) from the [Set Up Migrations on Sandbox](#set-up-migrations-on-sandbox) portion of this doc.
|
Follow [Step 1: Transfer data to sandboxes](#step-1-transfer-data-to-sandboxes) and [Step 2: Transfer uploaded files to the getgov directory](#step-2-transfer-uploaded-files-to-the-getgov-directory) from the [Set Up Migrations on Sandbox](#set-up-migrations-on-sandbox) portion of this doc.
|
||||||
|
|
||||||
#### Step 2: SSH into your environment
|
#### Step 4: SSH into your environment
|
||||||
```cf ssh getgov-{space}```
|
```cf ssh getgov-{space}```
|
||||||
|
|
||||||
Example: `cf ssh getgov-za`
|
Example: `cf ssh getgov-za`
|
||||||
|
|
||||||
#### Step 3: Create a shell instance
|
#### Step 5: Create a shell instance
|
||||||
```/tmp/lifecycle/shell```
|
```/tmp/lifecycle/shell```
|
||||||
|
|
||||||
#### Step 4: Running the script
|
#### Step 6: Running the script
|
||||||
```./manage.py populate_organization_type {domain_election_board_filename}```
|
```./manage.py populate_organization_type {domain_election_board_filename}```
|
||||||
|
|
||||||
- The domain_election_board_filename file must adhere to this format:
|
- The domain_election_board_filename file must adhere to this format:
|
||||||
|
@ -642,3 +642,29 @@ Example (assuming that this is being ran from src/):
|
||||||
| | Parameter | Description |
|
| | Parameter | Description |
|
||||||
|:-:|:------------------------------------|:-------------------------------------------------------------------|
|
|:-:|:------------------------------------|:-------------------------------------------------------------------|
|
||||||
| 1 | **domain_election_board_filename** | A file containing every domain that is an election office.
|
| 1 | **domain_election_board_filename** | A file containing every domain that is an election office.
|
||||||
|
|
||||||
|
|
||||||
|
## Populate Verification Type
|
||||||
|
This section outlines how to run the `populate_verification_type` script.
|
||||||
|
The script is used to update the verification_type field on User when it is None.
|
||||||
|
|
||||||
|
### Running on sandboxes
|
||||||
|
|
||||||
|
#### Step 1: Login to CloudFoundry
|
||||||
|
```cf login -a api.fr.cloud.gov --sso```
|
||||||
|
|
||||||
|
#### Step 2: SSH into your environment
|
||||||
|
```cf ssh getgov-{space}```
|
||||||
|
|
||||||
|
Example: `cf ssh getgov-za`
|
||||||
|
|
||||||
|
#### Step 3: Create a shell instance
|
||||||
|
```/tmp/lifecycle/shell```
|
||||||
|
|
||||||
|
#### Step 4: Running the script
|
||||||
|
```./manage.py populate_verification_type```
|
||||||
|
|
||||||
|
### Running locally
|
||||||
|
|
||||||
|
#### Step 1: Running the script
|
||||||
|
```docker-compose exec app ./manage.py populate_verification_type```
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
import argparse
|
||||||
|
import logging
|
||||||
|
from typing import List
|
||||||
|
from django.core.management import BaseCommand
|
||||||
|
from registrar.management.commands.utility.terminal_helper import TerminalColors, TerminalHelper, ScriptDataHelper
|
||||||
|
from registrar.models import User
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
help = "Loops through each valid User object and updates its verification_type value"
|
||||||
|
|
||||||
|
def handle(self, **kwargs):
|
||||||
|
"""Loops through each valid User object and updates its verification_type value"""
|
||||||
|
|
||||||
|
users = User.objects.filter(verification_type__isnull=True)
|
||||||
|
|
||||||
|
# Code execution will stop here if the user prompts "N"
|
||||||
|
TerminalHelper.prompt_for_execution(
|
||||||
|
system_exit_on_terminate=True,
|
||||||
|
info_to_inspect=f"""
|
||||||
|
==Proposed Changes==
|
||||||
|
Number of User objects to change: {len(users)}
|
||||||
|
This field will be updated on each record: verification_type
|
||||||
|
""",
|
||||||
|
prompt_title="Do you wish to patch verification_type data?",
|
||||||
|
)
|
||||||
|
logger.info("Updating...")
|
||||||
|
|
||||||
|
user_to_update: List[User] = []
|
||||||
|
user_failed_to_update: List[User] = []
|
||||||
|
for user in users:
|
||||||
|
try:
|
||||||
|
user.set_user_verification_type()
|
||||||
|
user_to_update.append(user)
|
||||||
|
except Exception as err:
|
||||||
|
user_failed_to_update.append(user)
|
||||||
|
logger.error(err)
|
||||||
|
logger.error(f"{TerminalColors.FAIL}" f"Failed to update {user}" f"{TerminalColors.ENDC}")
|
||||||
|
|
||||||
|
# Do a bulk update on the first_ready field
|
||||||
|
ScriptDataHelper.bulk_update_fields(User, user_to_update, ["verification_type"])
|
||||||
|
|
||||||
|
# Log what happened
|
||||||
|
TerminalHelper.log_script_run_summary(user_to_update, user_failed_to_update, skipped=[], debug=True)
|
Loading…
Add table
Add a link
Reference in a new issue