Exemple #1
0
 def handle_app(self, app, **options):
     print('install app')
     from keops.db import scripts
     db = options['database']
     if scripts.install('.'.join(app.__name__.split('.')[:-1]), db):
         scripts.syncdb(db)
         print('Application "%s" successfully installed on database "%s".' % (app.__name__.split('.')[-2], db))
Exemple #2
0
 def handle(self, *args, **options):
     from keops.db import scripts
     db = options['database']
     verbosity = options['verbosity']
     scripts.createdb(db)
     scripts.syncdb(db)
     call_command('installapps', database=db, verbosity=verbosity)
Exemple #3
0
 def handle_app(self, app, **options):
     print('install app')
     from keops.db import scripts
     db = options['database']
     if scripts.install('.'.join(app.__name__.split('.')[:-1]), db):
         scripts.syncdb(db)
         print('Application "%s" successfully installed on database "%s".' % (app.__name__.split('.')[-2], db))
Exemple #4
0
    def test_multi_db(self):
        from keops.modules.base import models
        # add db2 alias
        dbs = settings.DATABASES
        dbs['db2'] = {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': ':memory:',
            'USER': '******',
            'SCHEMA': '',
            'PASSWORD': '******',
            'HOST': 'localhost',
            'PORT': '',
        }
        self.settings(DATABASES=dbs)
        from keops.db import scripts
        scripts.syncdb('db2')

        u = models.User(username='******')
        u.set_password('db2testpwd')
        u.save(using='db2')

        response = self.client.get('/db/?alias=default')
        assert response.status_code == 200
        assert response.content == b'default'
        response = self.client.get('/db/?alias=default&next=/admin/')
        assert response.status_code == 302
        # try to login
        response = self.client.post(settings.LOGIN_URL + '?next=/admin/', {'username': '******', 'password': '******'})
        assert response.status_code == 302

        # test db2 alias
        response = self.client2.get('/db/?alias=db2')
        assert response.status_code == 200
        assert response.content == b'db2'
        response = self.client2.get('/db/?alias=db2&next=/admin/')
        # must redirect to login
        assert response.status_code == 302
        # try to login
        response = self.client2.post(settings.LOGIN_URL + '?next=/admin/', {'username': '******', 'password': '******'})
        assert response.status_code == 302
        response = self.client2.get(settings.LOGOUT_URL)
        response = self.client2.get('/db/?alias=db2&next=/admin/')
        # try invalid login
        response = self.client2.post(settings.LOGIN_URL + '?next=/admin/', {'username': '******', 'password': '******'})
        assert response.status_code == 200
        # try login
        response = self.client2.post(settings.LOGIN_URL + '?next=/admin/', {'username': '******', 'password': '******'})
        assert response.status_code == 302
        response = self.client.get('/db/')
        assert response.content == b'default'
        response = self.client2.get('/db/')
        assert response.content == b'db2'

        # CRUD tests
        # CREATE
        company = {'model': 'base.company', 'data': json.dumps({'name': 'My test company on default alias'})}
        response = self.client.post('/db/submit/', company)
        assert response.status_code == 200

        company = {'model': 'base.company', 'data': json.dumps({'name': 'My test company on db2 alias'})}
        response = self.client2.post('/db/submit/', company)
        assert response.status_code == 200

        # Check data exists
        # READ
        cp1 = models.Company.objects.using('default').get(name='My test company on default alias')
        cp2 = models.Company.objects.using('db2').get(name='My test company on db2 alias')

        # UPDATE
        company = {'model': 'base.company', 'pk': cp1.pk, 'data': json.dumps({'name': 'default alias'})}
        response = self.client.post('/db/submit/', company)
        assert response.status_code == 200

        company = {'model': 'base.company', 'pk': cp2.pk, 'data': json.dumps({'name': 'db2 alias'})}
        response = self.client2.post('/db/submit/', company)
        assert response.status_code == 200

        # DELETE
        cp1 = models.Company.objects.using('default').get(name='default alias')
        cp2 = models.Company.objects.using('db2').get(name='db2 alias')

        response = self.client.delete('/db/submit/?model=base.company&pk=%d' % cp1.pk)
        assert response.status_code == 200

        response = self.client2.delete('/db/submit/?model=base.company&pk=%d' % cp2.pk)
        assert response.status_code == 200
Exemple #5
0
 def handle(self, *args, **options):
     from keops.db import scripts
     scripts.dropdb(options['database'])
     scripts.createdb(options['database'])
     scripts.syncdb(options['database'])
Exemple #6
0
 def handle(self, *args, **options):
     from keops.db import scripts
     scripts.dropdb(options['database'])
     scripts.createdb(options['database'])
     scripts.syncdb(options['database'])