예제 #1
0
    def handle_noargs(self, **options):
        verbosity = int(options.get("verbosity", 0))
        migrate = options.get("migrate", False)
        options["migrate"] = False

        shared_apps, isolated_apps = get_apps()

        try:
            if len(shared_apps) > 0:
                if verbosity:
                    print "------------------"
                    print "SHARED APPS syncdb"
                    print "------------------\n"

                syncdb_apps(shared_apps, schema=None, **options)

            if len(isolated_apps) == 0:
                return

            schema_list = [x.name for x in Schema.objects.active()]
            for schema in schema_list:
                if verbosity:
                    print "\n-------------------------------"
                    print "ISOLATED APPS syncdb on schema: %s" % schema
                    print "-------------------------------\n"

                syncdb_apps(isolated_apps, schema=schema, **options)
        finally:
            load_post_syncdb_signals()

        if migrate:
            db.connection.close()
            db.connection.connection = None
            management.call_command("migrate")
예제 #2
0
 def handle_noargs(self, **options):
     verbosity = int(options.get('verbosity', 0))
     migrate = options.get('migrate', False)
     options['migrate'] = False
     
     shared_apps, isolated_apps = get_apps()
     
     try:
         if len(shared_apps) > 0:
             if verbosity:
                 print "------------------"
                 print "SHARED APPS syncdb"
                 print "------------------\n"
             
             syncdb_apps(shared_apps, **options)
         
         if len(isolated_apps) == 0:
             return
         
         for schema in Schema.objects.active():
             if verbosity:
                 print "\n-------------------------------"
                 print   "ISOLATED APPS syncdb on schema: %s" % schema.name
                 print   "-------------------------------\n"
                 
             syncdb_apps(isolated_apps, schema.name, **options)
     finally:
         load_post_syncdb_signals()
     
     if migrate:
         management.call_command("migrate")
예제 #3
0
def create_schema(name, **options):
    """
    This function creates a schema and perform a syncdb on it.
    As we call some syncdb and migrate management commands, we can't rely on
    transaction support.
    We are going to catch any exception (including SystemExit).
    """
    try:
        cursor = connection.cursor()
        # We can't use params with system names
        cursor.execute('CREATE SCHEMA "%s"' % escape_schema_name(name))
        transaction.commit_unless_managed()
        
        defaults = {
            'verbosity': 0,
            'traceback': None,
            'noinput': True
        }
        defaults.update(options)
        
        sync_options = options
        # We never want migration to launch with syncdb call
        sync_options['migrate'] = False
        
        _, isolated_apps = get_apps()
        
        syncdb_apps(isolated_apps, name, **sync_options)
        migrate_apps(get_migration_candidates(isolated_apps), name, **options)
        schema_store.reset_path()
    except BaseException, e:
        drop_schema(name)
        raise Exception(str(e))