Nukedb: příkaz, který všechny aplikace odmigruje

Uvede tedy databázi do naprosto čistého stavu, bez tabulek ap.

Není závislá na databázi (narozdíl od 'rm db-local.sqlite3') a nepotřebuje
práva vytvářet nové databáze (narozdíl od 'DROP DATABASE' nebo
'./manage.py reset_db' nad Postgresem)

Jinak je to prostě for-cyklus přes INSTALLED_APPS.
This commit is contained in:
Pavel "LEdoian" Turinsky 2019-08-14 14:49:23 +02:00
parent 402f5bdeb4
commit 7a911b3a3d

View file

@ -0,0 +1,20 @@
from mamweb.settings import INSTALLED_APPS
from django.core.management.base import BaseCommand, CommandError
from django.core.management import call_command
class Command(BaseCommand):
help = "Odmigruje všechny moduly (i.e. smaže všechny tabulky, ale databázi nechá)"
def add_arguments(self, parser):
# TODO: --force (makat a neblábolit)
pass
def handle(self, *args, **options):
# TODO: zeptat se
for app in INSTALLED_APPS:
app = app.split('.')[-1]
try:
call_command('migrate', app, 'zero')
except CommandError:
# app nemá migrace (aspoň typicky)
pass
call_command('showmigrations')