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