mamweb/seminar/management/commands/nukedb.py
Pavel "LEdoian" Turinsky 7a911b3a3d 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.
2019-08-17 04:32:43 +02:00

20 lines
627 B
Python

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')