Beispiel #1
0
def setup():
    if current_org != None or settings.MULTI_ORG:
        return redirect('/')

    form = SetupForm(request.form)
    form.newsletter.data = True
    form.security_notifications.data = True

    if request.method == 'POST' and form.validate():
        default_org = Organization(name=form.org_name.data, slug='default', settings={})
        admin_group = Group(name='admin', permissions=['admin', 'super_admin'], org=default_org, type=Group.BUILTIN_GROUP)
        default_group = Group(name='default', permissions=Group.DEFAULT_PERMISSIONS, org=default_org, type=Group.BUILTIN_GROUP)

        db.session.add_all([default_org, admin_group, default_group])
        db.session.commit()

        user = User(org=default_org, name=form.name.data, email=form.email.data, group_ids=[admin_group.id, default_group.id])
        user.hash_password(form.password.data)

        db.session.add(user)
        db.session.commit()

        g.org = default_org
        login_user(user)

        # signup to newsletter if needed
        if form.newsletter.data or form.security_notifications:
            subscribe.delay(form.data)

        return redirect(url_for('redash.index', org_slug=None))

    return render_template('setup.html', form=form)
Beispiel #2
0
def create_org(org_name, user_name, email, password):
    ###############################创建组织和分组
    # default_org = Organization.create(name=org_name, slug='default', settings={})
    # admin_group = Group.create(name='admin', permissions=['admin', 'super_admin'], org=default_org, type=Group.BUILTIN_GROUP)
    # default_group = Group.create(name='default', permissions=Group.DEFAULT_PERMISSIONS, org=default_org, type=Group.BUILTIN_GROUP)

    default_org = Organization(name=org_name, slug='default', settings={})

    admin_group = Group(name='admin', permissions=['admin', 'super_admin'], org=default_org, type=Group.BUILTIN_GROUP)

    default_group = Group(name='default', permissions=Group.DEFAULT_PERMISSIONS, org=default_org,
                          type=Group.BUILTIN_GROUP)

    db.session.add_all([default_org, admin_group, default_group])
    db.session.commit()

    ###############################创建用户
    user = User(org=default_org, name=user_name, email=email, group_ids=[admin_group.id, default_group.id])
    ####  不保存密码,直接hash进去
    user.hash_password(password)
    ####
    db.session.add(user)
    db.session.commit()

    return default_org, user
Beispiel #3
0
def create_org(org_name, user_name, email, password):
    default_org = Organization(name=org_name, slug="default", settings={})
    admin_group = Group(
        name="admin",
        permissions=["admin", "super_admin"],
        org=default_org,
        type=Group.BUILTIN_GROUP,
    )
    default_group = Group(
        name="default",
        permissions=Group.DEFAULT_PERMISSIONS,
        org=default_org,
        type=Group.BUILTIN_GROUP,
    )

    db.session.add_all([default_org, admin_group, default_group])
    db.session.commit()

    user = User(
        org=default_org,
        name=user_name,
        email=email,
        group_ids=[admin_group.id, default_group.id],
    )
    user.hash_password(password)

    db.session.add(user)
    db.session.commit()

    return default_org, user
Beispiel #4
0
def create_org(org_name, user_name, email, password):
    # Se remueven caracteres especiales y espacios del nombre
    org_name_url = ''.join(e for e in org_name if e.isalnum())
    org_name_url = org_name_url.lower()

    default_org = Organization(name=org_name, slug=org_name_url, settings={})
    admin_group = Group(
        name="admin",
        permissions=["admin", "super_admin"],
        org=default_org,
        type=Group.BUILTIN_GROUP,
    )
    default_group = Group(
        name=org_name_url,
        permissions=Group.DEFAULT_PERMISSIONS,
        org=default_org,
        type=Group.BUILTIN_GROUP,
    )

    db.session.add_all([default_org, admin_group, default_group])
    db.session.commit()

    user = User(
        org=default_org,
        name=user_name,
        email=email,
        group_ids=[admin_group.id, default_group.id],
    )
    user.hash_password(password)

    db.session.add(user)
    db.session.commit()

    return default_org, user
Beispiel #5
0
 def test_create(self):
     gcount = Group.select().count()
     perms = ['create_query', 'edit_query', 'view_query']
     runner = CliRunner()
     result = runner.invoke(
         create_group, ['test', '--permissions', ','.join(perms)])
     print result.output
     self.assertFalse(result.exception)
     self.assertEqual(result.exit_code, 0)
     self.assertEqual(Group.select().count(), gcount + 1)
     g = Group.select().order_by(Group.id.desc()).first()
     self.assertEqual(g.org, self.factory.org)
     self.assertEqual(g.permissions, perms)
Beispiel #6
0
    def test_search_respects_groups(self):
        other_group = Group(org=self.factory.org, name="Other Group")
        db.session.add(other_group)
        ds = self.factory.create_data_source(group=other_group)

        q1 = self.factory.create_query(description="Testing search",
                                       data_source=ds)
        q2 = self.factory.create_query(description="Testing searching")
        q3 = self.factory.create_query(description="Testing sea rch")

        queries = list(Query.search("Testing",
                                    [self.factory.default_group.id]))

        self.assertNotIn(q1, queries)
        self.assertIn(q2, queries)
        self.assertIn(q3, queries)

        queries = list(
            Query.search("Testing",
                         [other_group.id, self.factory.default_group.id]))
        self.assertIn(q1, queries)
        self.assertIn(q2, queries)
        self.assertIn(q3, queries)

        queries = list(Query.search("Testing", [other_group.id]))
        self.assertIn(q1, queries)
        self.assertNotIn(q2, queries)
        self.assertNotIn(q3, queries)
Beispiel #7
0
    def test_doesnt_change_builtin_groups(self):
        current_name = self.factory.default_group.name

        response = self.make_request('post', '/api/groups/{}'.format(self.factory.default_group.id),
                                     user=self.factory.create_admin(),
                                     data={'name': 'Another Name'})

        self.assertEqual(response.status_code, 400)
        self.assertEqual(current_name, Group.get_by_id(self.factory.default_group.id).name)
Beispiel #8
0
 def test_change_permissions(self):
     g = self.factory.create_group(permissions=['list_dashboards'])
     g_id = g.id
     perms = ['create_query', 'edit_query', 'view_query']
     runner = CliRunner()
     result = runner.invoke(
         change_permissions, [str(g_id), '--permissions', ','.join(perms)])
     self.assertFalse(result.exception)
     self.assertEqual(result.exit_code, 0)
     g = Group.select().where(Group.id == g_id).first()
     self.assertEqual(g.permissions, perms)
Beispiel #9
0
    def test_doesnt_change_builtin_groups(self):
        current_name = self.factory.default_group.name

        response = self.make_request('post',
                                     '/api/groups/{}'.format(
                                         self.factory.default_group.id),
                                     user=self.factory.create_admin(),
                                     data={'name': 'Another Name'})

        self.assertEqual(response.status_code, 400)
        self.assertEqual(current_name,
                         Group.get_by_id(self.factory.default_group.id).name)
Beispiel #10
0
def setup_test_admin():
    from redash.models import Group, Organization, User, db

    _wait_for_db_connection(db)

    user_name = "test1"
    email = "*****@*****.**"
    password = "******"

    default_org = Organization.get_by_id(1)
    admin_group = Group.get_by_id(1)
    default_group = Group.get_by_id(2)

    user = User(
        org=default_org,
        name=user_name,
        email=email,
        group_ids=[admin_group.id, default_group.id],
    )
    user.hash_password(password)
    db.session.add(user)
    db.session.commit()
Beispiel #11
0
def setup_admin():
    from redash.models import Group, Organization, User, db

    _wait_for_db_connection(db)

    org_name = "PlayBlock"
    user_name = "admin"
    email = "*****@*****.**"
    password = "******"

    default_org = Organization(name=org_name, slug="default", settings={})
    admin_group = Group(
        name="admin",
        permissions=["admin", "super_admin"],
        org=default_org,
        type=Group.BUILTIN_GROUP,
    )
    default_group = Group(
        name="default",
        permissions=Group.DEFAULT_PERMISSIONS,
        org=default_org,
        type=Group.BUILTIN_GROUP,
    )

    db.session.add_all([default_org, admin_group, default_group])
    db.session.commit()

    user = User(
        org=default_org,
        name=user_name,
        email=email,
        group_ids=[admin_group.id, default_group.id],
    )
    user.hash_password(password)

    db.session.add(user)
    db.session.commit()
Beispiel #12
0
def create_org(org_name, user_name, email, password):
    default_org = Organization(name=org_name, slug='default', settings={})
    admin_group = Group(name='admin',
                        permissions=Group.ADMIN_PERMISSIONS,
                        org=default_org,
                        type=Group.BUILTIN_GROUP)

    db.session.add_all([default_org, admin_group])
    db.session.commit()

    user = User(org=default_org,
                name=user_name,
                email=email,
                is_super=True,
                group_ids=[admin_group.id])
    user.hash_password(password)

    db.session.add(user)
    db.session.commit()

    return default_org, user
Beispiel #13
0
from collections import defaultdict
from redash.models import db, DataSourceGroup, DataSource, Group, Organization, User
from playhouse.migrate import PostgresqlMigrator, migrate
import peewee

if __name__ == '__main__':
    migrator = PostgresqlMigrator(db.database)

    with db.database.transaction():
        # Add type to groups
        migrate(migrator.add_column('groups', 'type', Group.type))

        for name in ['default', 'admin']:
            group = Group.get(Group.name == name)
            group.type = Group.BUILTIN_GROUP
            group.save()

        # Create association table between data sources and groups
        DataSourceGroup.create_table()

        # add default to existing data source:
        default_org = Organization.get_by_id(1)
        default_group = Group.get(Group.name == "default")
        for ds in DataSource.all(default_org):
            DataSourceGroup.create(data_source=ds, group=default_group)

        # change the groups list on a user object to be an ids list
        migrate(migrator.rename_column('users', 'groups', 'old_groups'), )

        migrate(migrator.add_column('users', 'groups', User.groups))
Beispiel #14
0
from collections import defaultdict
from redash.models import db, DataSourceGroup, DataSource, Group, Organization, User
from playhouse.migrate import PostgresqlMigrator, migrate
import peewee

if __name__ == '__main__':
    migrator = PostgresqlMigrator(db.database)

    with db.database.transaction():
        # Add type to groups
        migrate(
            migrator.add_column('groups', 'type', Group.type)
        )

        for name in ['default', 'admin']:
            group = Group.get(Group.name==name)
            group.type = Group.BUILTIN_GROUP
            group.save()

        # Create association table between data sources and groups
        DataSourceGroup.create_table()

        # add default to existing data source:
        default_org = Organization.get_by_id(1)
        default_group = Group.get(Group.name=="default")
        for ds in DataSource.all(default_org):
            DataSourceGroup.create(data_source=ds, group=default_group)

        # change the groups list on a user object to be an ids list
        migrate(
            migrator.rename_column('users', 'groups', 'old_groups'),