Browse Source

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.
export_seznamu_prednasek
Pavel "LEdoian" Turinsky 5 years ago
parent
commit
7a911b3a3d
  1. 20
      seminar/management/commands/nukedb.py

20
seminar/management/commands/nukedb.py

@ -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')
Loading…
Cancel
Save