cloud-run-django-terraform/gametracker/migrations/0001_createsuperuser.py (17 lines of code) (raw):
from django.db import migrations
import google.auth
from google.cloud import secretmanager as sm
# This data migration allows you to programatically create a django admin user
# This will run in Cloud Build, which requires Cloud Build to have access to the secret.
def createsuperuser(apps, schema_editor):
# Retrieve secret from Secret Manager
_, project = google.auth.default()
client = sm.SecretManagerServiceClient()
name = f"projects/{project}/secrets/superuser_password/versions/latest"
superuser_password = client.access_secret_version(name=name).payload.data.decode("UTF-8")
# Create a new user using acquired password
from django.contrib.auth.models import User
User.objects.create_superuser("admin", password=superuser_password)
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.RunPython(createsuperuser)
]