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:
		
							parent
							
								
									402f5bdeb4
								
							
						
					
					
						commit
						7a911b3a3d
					
				
					 1 changed files with 20 additions and 0 deletions
				
			
		
							
								
								
									
										20
									
								
								seminar/management/commands/nukedb.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								seminar/management/commands/nukedb.py
									
									
									
									
									
										Normal 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') | ||||||
		Loading…
	
		Reference in a new issue
	
	 Pavel "LEdoian" Turinsky
						Pavel "LEdoian" Turinsky