Exemple #1
0
    def test_returns_only_queries_in_given_groups(self):
        ds1 = self.factory.create_data_source()
        ds2 = self.factory.create_data_source()

        group1 = models.Group(name="g1",
                              org=ds1.org,
                              permissions=['create', 'view'])
        group2 = models.Group(name="g2",
                              org=ds1.org,
                              permissions=['create', 'view'])

        q1 = self.factory.create_query(data_source=ds1)
        q2 = self.factory.create_query(data_source=ds2)

        db.session.add_all([
            ds1, ds2, group1, group2, q1, q2,
            models.DataSourceGroup(group=group1, data_source=ds1),
            models.DataSourceGroup(group=group2, data_source=ds2)
        ])
        db.session.flush()
        self.assertIn(q1, list(models.Query.all_queries([group1.id])))
        self.assertNotIn(q2, list(models.Query.all_queries([group1.id])))
        self.assertIn(q1, list(models.Query.all_queries([group1.id,
                                                         group2.id])))
        self.assertIn(q2, list(models.Query.all_queries([group1.id,
                                                         group2.id])))
Exemple #2
0
def create_root(email,
                name,
                google_auth=False,
                password=None,
                organization="default"):
    """
    Create root user.
    """
    print("Creating root user (%s, %s) in organization %s..." %
          (email, name, organization))
    print("Login with Google Auth: %r\n" % google_auth)

    user = models.User.query.filter(models.User.email == email).first()
    if user is not None:
        print("User [%s] is already exists." % email)
        exit(1)

    slug = "default"
    default_org = models.Organization.query.filter(
        models.Organization.slug == slug).first()
    if default_org is None:
        default_org = models.Organization(name=organization,
                                          slug=slug,
                                          settings={})

    admin_group = models.Group(
        name="admin",
        permissions=["admin", "super_admin"],
        org=default_org,
        type=models.Group.BUILTIN_GROUP,
    )
    default_group = models.Group(
        name="default",
        permissions=models.Group.DEFAULT_PERMISSIONS,
        org=default_org,
        type=models.Group.BUILTIN_GROUP,
    )

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

    user = models.User(
        org=default_org,
        email=email,
        name=name,
        group_ids=[admin_group.id, default_group.id],
    )
    if not google_auth:
        user.hash_password(password)

    try:
        models.db.session.add(user)
        models.db.session.commit()
    except Exception as e:
        print("Failed creating root user: %s" % e)
        exit(1)
Exemple #3
0
    def test_returns_groups_with_specified_names(self):
        org1 = self.factory.create_org()
        org2 = self.factory.create_org()

        matching_group1 = models.Group(id=999, name="g1", org=org1)
        matching_group2 = models.Group(id=888, name="g2", org=org1)
        non_matching_group = models.Group(id=777, name="g1", org=org2)

        groups = models.Group.find_by_name(org1, ["g1", "g2"])
        self.assertIn(matching_group1, groups)
        self.assertIn(matching_group2, groups)
        self.assertNotIn(non_matching_group, groups)
Exemple #4
0
 def post(self):
     json = request.get_json(force=True)
     g = models.Group(name=json['name'],
                      tables=json["tables"],
                      permissions=json["permissions"])
     g.save()
     return g.to_dict()
Exemple #5
0
    def post(self):
        name = request.json['name']
        group = models.Group(name=name, org=self.current_org)
        models.db.session.add(group)
        models.db.session.commit()

        self.record_event({
            'action': 'create',
            'object_id': group.id,
            'object_type': 'group'
        })

        return group.to_dict()
Exemple #6
0
    def post(self):
        name = request.json["name"]
        group = models.Group(name=name, org=self.current_org)
        models.db.session.add(group)
        models.db.session.commit()

        self.record_event({
            "action": "create",
            "object_id": group.id,
            "object_type": "group"
        })

        return group.to_dict()
Exemple #7
0
def create(name, permissions=None, organization='default'):
    print("Creating group (%s)..." % (name))

    org = models.Organization.get_by_slug(organization)

    permissions = extract_permissions_string(permissions)

    print("permissions: [%s]" % ",".join(permissions))

    try:
        models.db.session.add(
            models.Group(name=name, org=org, permissions=permissions))
        models.db.session.commit()
    except Exception as e:
        print("Failed create group: %s" % e)
        exit(1)
Exemple #8
0
    def post(self):
        name = request.json['name']
        isAdmin = request.json['isAdmin']
        permission = models.Group.DEFAULT_PERMISSIONS

        if isAdmin == True:
            permission = models.Group.REGULAR_ADMIN_PERMISSIONS

        group = models.Group(name=name,
                             permissions=permission,
                             org=self.current_org,
                             type=models.Group.REGULAR_GROUP)

        models.db.session.add(group)
        models.db.session.commit()

        self.record_event({
            'action': 'create',
            'object_id': group.id,
            'object_type': 'group'
        })

        return group.to_dict()
Exemple #9
0
    def test_search_respects_groups(self):
        other_group = models.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(models.Query.search("Testing", [self.factory.default_group.id]))

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

        queries = list(models.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(models.Query.search("Testing", [other_group.id]))
        self.assertIn(q1, queries)
        self.assertNotIn(q2, queries)
        self.assertNotIn(q3, queries)
Exemple #10
0
    def test_returns_no_groups(self):
        org1 = self.factory.create_org()

        models.Group(id=999, name="g1", org=org1)
        self.assertEqual([], models.Group.find_by_name(org1, ["non-existing"]))