def handle(self, *args, **options): if options.get('interactive'): using = options.get('database', DEFAULT_DB_ALIAS) dbname = settings.DATABASES[using]['NAME'] if not confirm("This is going to rebuild all ledger movements " "in %s. Are you sure (y/n) ?" % dbname): raise CommandError("User abort.") reregister_vouchers(args)
def handle(self, *args, **options): reqs = set(settings.SITE.get_requirements()) if len(reqs) == 0: print("No requirements") else: reqs = sorted(reqs) if options['list']: print('\n'.join(reqs)) return runcmd('pip install --upgrade pip') # cmd = "pip install --upgrade --trusted-host svn.forge.pallavi.be {}".format(' '.join(reqs)) cmd = "pip install --upgrade {}".format(' '.join(reqs)) if not options['interactive'] or confirm("{} (y/n) ?".format(cmd)): runcmd(cmd)
def handle(self, *args, **options): using = options.get('database', DEFAULT_DB_ALIAS) dbname = settings.DATABASES[using]['NAME'] engine = settings.DATABASES[using]['ENGINE'] if options.get('interactive'): if not confirm("""We are going to flush your database (%s). Are you sure (y/n) ?""" % dbname): raise CommandError("User abort.") fixtures = options.pop('fixtures', args) # print(20160817, fixtures, options) options.update(interactive=False) # the following log message was useful on Travis 20150104 if options.get('verbosity', 1) > 0: dd.logger.info("`initdb %s` started on database %s.", ' '.join(fixtures), dbname) if engine == 'django.db.backends.sqlite3': if dbname != ':memory:' and os.path.isfile(dbname): os.remove(dbname) del connections[using] elif engine == 'django.db.backends.mysql': conn = connections[using] cursor = conn.cursor() cursor.execute("DROP DATABASE %s;" % dbname) cursor.execute("CREATE DATABASE %s charset 'utf8';" % dbname) # We must now force Django to reconnect, otherwise we get # "no database selected" since Django would try to # continue on the dropped database: del connections[using] # now reconnect and set foreign_key_checks to 0 conn = connections[using] cursor = conn.cursor() cursor.execute("set foreign_key_checks=0;") elif engine == 'django.db.backends.postgresql': foralltables(using, "DROP TABLE IF EXISTS {} CASCADE;") # cmd = """select 'DROP TABLE "' || tablename || '" IF EXISTS CASCADE;' from pg_tables where schemaname = 'public';""" # cursor.execute(cmd) # cursor.close() del connections[using] else: raise Exception("Not tested for %r" % engine) sql_list = [] conn = connections[using] # adds a "DELETE FROM tablename;" for each table # sql = sql_flush(no_style(), conn, only_django=False) # sql_list.extend(sql) if AFTER17: # django.core.management.base.CommandError: App # 'sessions' has migrations. Only the sqlmigrate and # sqlflush commands can be used when an app has # migrations. # from django.apps import apps # app_list = apps.get_app_configs() # for app in app_list: # sql_list.extend(sql_delete(app, no_style(), conn)) pass elif USE_SQLDELETE: from django.core.management.sql import sql_delete # sql_delete was removed in Django 1.9 # ~ sql_list = u'\n'.join(sql_reset(app, no_style(), conn)).encode('utf-8') app_list = [ models.get_app(p.app_label) for p in settings.SITE.installed_plugins ] for app in app_list: # app_label = app.__name__.split('.')[-2] sql_list.extend(sql_delete(app, no_style(), conn)) # print app_label, ':', sql_list # ~ print sql_list if len(sql_list): with conn.constraint_checks_disabled(): # for sql in sql_list: # cursor.execute(sql) pending = self.try_sql(conn, sql_list) while len(pending): pending = self.try_sql(conn, pending) transaction.commit_unless_managed() settings.SITE._site_config = None # clear cached instance if engine == 'django.db.backends.postgresql': # # a first time to create tables of contenttypes. At # # least on PostgreSQL this is required because for # # some reason the syncdb fails when contenttypes is # # not initialized. call_command('migrate', **options) call_command('makemigrations', interactive=False, verbosity=0) call_command('migrate', '--run-syncdb', **options) if len(fixtures): # if engine == 'django.db.backends.postgresql': # foralltables(using, "ALTER TABLE {} DISABLE TRIGGER ALL;") options.pop('interactive') call_command('loaddata', *fixtures, **options)