123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- from django.conf import settings
- from django.core.cache import caches
- from django.core.files.storage import default_storage
- from django.core.management import call_command
- from django.core.management.base import BaseCommand, CommandError
- from django.db import DEFAULT_DB_ALIAS
- from django_extensions.settings import POSTGRESQL_ENGINES
- from wagtail.documents import get_document_model
- from wagtail.images import get_image_model
- class Command(BaseCommand):
- def handle(self, **options):
- if settings.DATABASES[DEFAULT_DB_ALIAS]["ENGINE"] not in POSTGRESQL_ENGINES:
- raise CommandError(
- "This command can be used only with PostgreSQL databases."
- )
- # 1. (optional) Remove all objects from S3
- if "s3" in settings.DEFAULT_FILE_STORAGE:
- self.stdout.write("Removing files from S3")
- default_storage.bucket.objects.all().delete()
- else:
- self.stdout.write("Removing images")
- get_image_model().objects.all().delete()
- self.stdout.write("Removing documents")
- get_document_model().objects.all().delete()
- # 2. Reset database to nothing
- self.stdout.write("Reset schema")
- call_command("reset_schema", interactive=False)
- # 3. Rebuild database
- call_command("migrate", interactive=False)
- # 4. Clear caches
- for cache in caches.all():
- cache.clear()
- # 5. Re-import data
- call_command("load_initial_data")
- # 6. Change the admin password (in case it's different in this environment)
- call_command("reset_admin_password")
|