Exemple #1
0
    def test_roles(self):
        u1 = User(username='******', email='*****@*****.**')
        u2 = User(username='******', email='*****@*****.**')

        r1 = Role(name='Admin')
        r2 = Role(name='Operator')
        r3 = Role(name='Client')

        self.db.session.add(u1)
        self.db.session.add(u2)
        self.db.session.add(r1)
        self.db.session.add(r2)
        self.db.session.add(r3)
        self.db.session.commit()

        u1 = User.find_by_username('john')
        u2 = User.find_by_username('susan')
        self.assertEqual(u1.roles.all(), [])
        self.assertEqual(u2.roles.all(), [])

        u1.add_role(r1)
        u2.add_role(r2)
        u2.add_role(r3)
        self.db.session.add(u1)
        self.db.session.add(u2)
        self.db.session.commit()

        # John has exactly 1 role?
        self.assertEqual(u1.roles.count(), 1)
        # John has the 'Admin' role?
        self.assertEqual(u1.roles.first().name, 'Admin')
        # Susan has exactly 2 roles?
        self.assertEqual(u2.roles.count(), 2)
        # Susan has the role 'Client'?
        self.assertTrue(u2.has_role(r3))
def role_create():
    form = OpsRole()
    if form.validate_on_submit():
        role = Role()
        for field in form:
            if field.name not in ("csrf_token", "submit",):
                role.__setattr__(field.name, field.data)
        return redirect(url_for(".role_index"))
    return render_template("user_control/role_create.html", form=form)
Exemple #3
0
def insert_roles():
    roles = {
        'user': ['post_comment'],
        'moderator': [
            'post_comment',
            'write_articles',
            'manage_comments',
            'manage_articles',
            'manage_users',
        ]
    }
    permissions_map = {p.name: p for p in Permission.query}

    for role, permissions in roles.items():
        ur = Role.query.filter_by(name=role).first()
        if ur is None:
            r = Role()
            for p in permissions:
                r.permissions.append(permissions_map.get(p))
            r.name = role
            db.session.add(r)
            db.session.commit()