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)
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
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
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
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)
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)
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)
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)
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)
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()
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()
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
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))
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'),