def test_post_user_role_correct() -> None:
    with CustomTestClient() as c:
        User("jane", "asd123").save()
        User("JOHN", "asd123").save()
        User("Leia", "asd123").save()
        Role("ADMIN", "Administrator for site").save()
        Role("FINANCE", "financer for site").save()
        token = auth.create_jwt_token("JohnDoe", 1, ["ADMIN"])
        c.set_cookie('localhost:5000', 'Authorization', token)
        res = c.post('/api/v1/users/1/roles',
                     data=json.dumps({'role': 'ADMIN'}),
                     content_type='application/json')
        res_2 = c.post('/api/v1/users/1/roles',
                       data=json.dumps({'role': 'FINANCE'}),
                       content_type='application/json')
        res_3 = c.post('/api/v1/users/3/roles',
                       data=json.dumps({'role': 'FINANCE'}),
                       content_type='application/json')
        data = res.get_json()
        assert data['message'] == "Role successfully added to user"
        assert res.status_code == 200
        data_2 = res_2.get_json()
        assert data_2['message'] == "Role successfully added to user"
        assert res_2.status_code == 200
        data_3 = res_3.get_json()
        assert data_3['message'] == "Role successfully added to user"
        assert res_3.status_code == 200
        user_1 = User.find_by_id(1)
        assert user_1.roles[0].name == "ADMIN"
        assert user_1.roles[0].description == "Administrator for site"
        assert user_1.roles[1].name == "FINANCE"
        assert user_1.roles[1].description == "financer for site"
        user_2 = User.find_by_id(2)
        assert user_2.roles == []
        user_3 = User.find_by_id(3)
        assert user_3.roles[0].name == "FINANCE"
        assert user_3.roles[0].description == "financer for site"
Example #2
0
def load_roles(session):
    """
    Preload the initial user roles if they do not exist
    """
    count_roles = session.query(Role.id).count()
    if count_roles == 0:
        roles = [('Member', 'member'), ('Administrator', 'admin'),
                 ('Supervisor', 'super')]
        rid = 1
        for name, code in roles:
            r = Role(id=rid, name=name, code=code)
            session.add(r)
            rid = rid + 1
        session.flush()
        session.commit()
Example #3
0
def role_add():
    form = RoleForm()
    if form.validate_on_submit():
        data = form.data
        # 重复添加账户暂未处理!!!
        # print(data['auths'])  # 权限id列表形式[1, 2]
        role = Role(
            name=data['name'],
            auths=','.join(map(lambda item: str(item),
                               data['auths']))  # 数字转换为字符串形式
        )
        db.session.add(role)
        db.session.commit()
        flash('角色添加成功', category='ok')
    return render_template('admin/role_edit.html', form=form)
Example #4
0
def create_admin():
    """ Create default admin user """
    from app.models import db
    role = Role(id=1, role_name='administrator')
    admin = User(
        id=1,
        user_name='admin',
        email='*****@*****.**',
        password_hash=generate_password_hash('memory'),
        created_time=datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S'),
        role_id=1)
    db.session.add(role)
    db.session.add(admin)
    db.session.commit()  # This is needed to write the changes to database
    print("Default admin user, username:  admin   password: memory")
Example #5
0
def add_role():
    form = RoleForm()
    form.auth.choices = [(a.id, a.name) for a in Auth.query.all()]
    if form.validate_on_submit():
        isExist = Role.query.filter_by(name=form.name.data).count()
        if isExist:
            flash("Role have existed. Please try again", "danger")
            return redirect(url_for("admin_bp.add_tag"))
        auths = [Auth.query.get_or_404(id) for id in form.auth.data]
        role = Role(name=form.name.data, auths=auths)
        db.session.add(role)
        db.session.commit()
        flash("Role was added", "success")
        return redirect(url_for("admin_bp.list_role"))
    return render_template("admin/add_role.html", form=form)
Example #6
0
def role_add():
    form = RoleForm()
    if form.validate_on_submit():
        data = form.data
        role = Role(
            name=data['name'],
            auths=','.join([str(v) for v in data['auths']
                            ])  # data['auth']为数组形式  exm: [3]
        )

        db.session.add(role)
        db.session.commit()
        flash("添加角色成功!", 'ok')
        return redirect(url_for('admin.role_add'))
    return render_template('admin/role_add.html', form=form)
Example #7
0
def index():
    form = VideoForm()
    map_on = form.switch_map.data
    video_on = form.switch_video.data

    map_switch = Role(map_switch=form.switch_map.data)
    video_switch = Role(video_switch=form.switch_video.data)
    # if map_on == True:
    #     flash(u'success open the map!')
    # else:
    #     flash(u'map closed!')

    # if video_on == True:
    #     flash(u'success open the video!')
    # else:
    #     flash(u'video closed!')

    db.session.add(map_switch)
    db.session.add(video_switch)
    # db.session.commit()
    return render_template('index.html',
                           form=form,
                           map_on=map_on,
                           video_on=video_on)
Example #8
0
def role_add():
    form = RoleForm()
    if form.validate_on_submit():
        data = form.data
        role = Role(name=data['name'],
                    auths=','.join(map(lambda v: str(v), data['auths'])))
        db.session.add(role)
        db.session.commit()
        oplog = Oplog(admin_id=session['admin_id'],
                      ip=request.remote_addr,
                      reason='管理员%s添加角色%s' % (session['admin'], data['name']))
        db.session.add(oplog)
        db.session.commit()
        flash('添加角色成功!', 'ok')
    return render_template('admin/role_add.html', form=form)
Example #9
0
 def test_tur001_perm_funcs(self):
     r = Role(name='User')
     # add two perms
     r.add_permission(Permission.FOLLOW)
     r.add_permission(Permission.REVIEW)
     # assert has one of those
     assert r.has_permission(Permission.FOLLOW)
     # assert it doesn't have another
     assert not r.has_permission(Permission.PUBLISH)
     r.remove_permission(Permission.FOLLOW)
     # assert now it doesn't have removed one
     assert not r.has_permission(Permission.FOLLOW)
     # erase all perms
     r.reset_permissions()
     assert not r.has_permission(Permission.REVIEW)
Example #10
0
 def test_is_promotion_returns_correct_values(
     self,
     starting_grade,
     new_grade,
     role_change_id,
     expected_outcome,
     test_session,
     test_candidate,
 ):
     test_candidate.roles.extend(
         [
             Role(
                 date_started=date(2019, 1, 1),
                 grade=Grade.query.filter_by(value=starting_grade).first(),
                 role_change_id=2,
             ),
             Role(
                 date_started=date(2020, 6, 1),
                 grade=Grade.query.filter_by(value=new_grade).first(),
                 role_change_id=role_change_id,
             ),
         ]
     )
     assert test_candidate.roles[0].is_promotion() is expected_outcome
def load_data_roles():
    """ this function loads data from csv"""
    try:
        with open("data/role.csv", "r") as f:
            reader = csv.reader(f)
            next(reader)
            for record in reader:
                role = Role(role_id=record[0],
                            role_name=record[1],
                            role_desc=record[2])
                db.session.add(role)
            db.session.commit()
            logger.info("loaded data to role table")
        db.session.close()
    except (Exception, psycopg2.Error) as e:
        print(e)
 def test_has_permission(self):
     """测试三个关于权限的方法是否正确"""
     r = Role(name='User')
     r.add_permission(Permissions.FOLLOW)
     r.add_permission(Permissions.ADMIN)
     r.add_permission(Permissions.MODERATE)
     self.assertTrue(r.has_permission(Permissions.FOLLOW))
     self.assertTrue(r.has_permission(Permissions.ADMIN))
     self.assertTrue(r.has_permission(Permissions.MODERATE))
     self.assertFalse(r.has_permission(Permissions.COMMIT))
     self.assertFalse(r.has_permission(Permissions.WRITE))
     r.remove_permission(Permissions.ADMIN)
     self.assertFalse(r.has_permission(Permissions.ADMIN))
     r.reset_permission()
     self.assertFalse(r.has_permission(Permissions.FOLLOW))
     self.assertFalse(r.has_permission(Permissions.MODERATE))
Example #13
0
def create_role():
    form = RoleCreateForm()
    if form.validate_on_submit():
        role = Role(permissions=json.dumps(form.permissions.data))
        del form.permissions
        form.populate_obj(role)
        db.session.add(role)
        db.session.commit()
        flash('Role {} created'.format(form.name.data))
        audit_log('created role', role.name)
        return redirect(url_for('index'))
    context = get_context()
    return _render_template('generic_form.html',
                            title='New Role',
                            form=form,
                            **context)
Example #14
0
    def test_1_user_role(self):
        admin_role = Role(name='admin')
        admin_user = User(name='admin', role=admin_role)
        test_user = User(name='test', role=admin_role)
        db.session.add_all([admin_role, admin_user, test_user])
        db.session.commit()

        admin_role = Role.query.filter_by(name='admin').first()
        admin_user = User.query.filter_by(name='admin').first()
        self.assertFalse(admin_role is None)
        self.assertFalse(admin_user is None)
        self.assertTrue(admin_role.users.count() == 2)
        self.assertTrue(admin_user.role == admin_role)
        self.assertTrue(admin_role.users.filter_by(name='admin').first() == admin_user)
        db.session.delete(test_user)
        db.session.commit()
Example #15
0
def role_add():
    form = RoleForm()
    if form.validate_on_submit():
        data = form.data
        role = Role.query.filter_by(name=data['name']).count()
        if role >= 1:
            flash("名称已经存在", "err")
            return redirect(url_for('admin.role_add'))

        role = Role(name=data['name'],
                    auths=','.join(map(lambda v: str(v), data['auths'])))
        db.session.add(role)
        db.session.commit()
        flash("添加角色成功", "ok")
        redirect(url_for('admin.role_add'))
    return render_template("admin/role_add.html", form=form)
Example #16
0
def role_add():
    """
     添加角色
     """
    form = RoleForm()
    form.auths.choices = [(v.id, v.name) for v in Auth.query.all()]
    if form.validate_on_submit():
        data = form.data
        role = Role(
            name=data['name'],
            # 使用join拼接权限数组,先转化为字符串,因为权限ID是int
            auths=','.join([str(auth) for auth in data['auths']]))
        db.session.add(role)
        db.session.commit()
        flash('角色添加成功', 'success')
    return render_template('admin/role_add.html', form=form)
Example #17
0
def role_add():
    form = RoleForm()
    form.auths.choices = [(v.id, v.name) for v in Auth.query.all()]

    if form.validate_on_submit() is True:
        data = form.data

        role = Role(
            name=data['name'],
            auths=','.join(map(lambda v: str(v), data['auths'])),
        )
        db.session.add(role)
        db.session.commit()
        flash('添加角色成功', 'ok')

    return render_template('admin/role_add.html', form=form)
Example #18
0
def role_add():
    role_form = RoleForm()
    if role_form.validate_on_submit():
        data = role_form.data
        role_count = Role.query.filter_by(name=data['name']).count()
        if role_count == 1:
            flash('角色已经存在', 'err')
            return redirect(url_for('admin.role_add'))
        role = Role()
        role.name = data['name']
        role.auths = ';'.join(map(lambda i: str(i), data['auths']))
        db.session.add(role)
        db.session.commit()
        flash('角色创建成功', 'ok')
        return redirect(url_for('admin.role_add'))
    return render_template('admin/role-add.html', role_form=role_form)
Example #19
0
def role_add():
    """
    角色添加
    :return:
    """
    form = RoleForm()
    if form.validate_on_submit():
        data = form.data
        role = Role(
            name = data["name"],
            auths = ",".join(map(lambda v:str(v),data["auths"]))
        )
        db.session.add(role)
        db.session.commit()
        flash("添加角色成功","ok")
    return render_template("admin/role_add.html",form=form)
Example #20
0
def role_add():
    form = RoleForm()
    if form.validate_on_submit():
        data = form.data
        role = Role(name=data["name"],
                    auths=",".join(map(lambda v: str(v), data["auths"])))
        db.session.add(role)
        db.session.commit()
        flash("添加角色成功!", "ok")
        oplog = Oplog(admin_id=session["admin_id"],
                      ip=request.remote_addr,
                      reason="添加新角色:%s" % data["name"])
        db.session.add(oplog)
        db.session.commit()
        return redirect(url_for("admin.role_add"))
    return render_template("admin/role_add.html", form=form)
Example #21
0
def role_add():
    form = RoleForm()
    if form.validate_on_submit():
        count = Role.query.filter_by(name=form.name.data).count()
        if count:
            flash("此角色已存在", "fail")
        else:
            role = Role(name=form.name.data, auths=str(form.auths.data))
            db.session.add(role)
            db.session.commit()
            flash("添加角色", "succeed")
            return redirect(url_for("admin.role_add"))
    return render_template("admin/role_add.html",
                           title="添加角色",
                           btn="添加",
                           form=form)
Example #22
0
def add_user(username, roles=[]):
    roles = list(roles)
    print(f'Adding user={username}; roles={roles}')
    if not User.query.filter(User.username == username).first():
        user = User(
            username=username,
            password=user_manager.hash_password(
                input(f"Insert password for {username}: ")),
        )
        for role in roles:
            user.roles.append(Role(name=role))

        db.session.add(user)
        db.session.commit()
        print(f"User {username} successfully added!")
    else:
        raise ConfigError(f"Username {username} already exists!")
Example #23
0
def role_add():
    form = RoleForm()
    if form.validate_on_submit():
        data = form.data
        if Role.query.filter_by(name=data['name']).first():
            flash('已存在该角色,请不要重复添加', 'err')
            return redirect(url_for('admin.role_add'))
        with db.auto_commit():
            new_role = Role(name=data['name'])
            db.session.add(new_role)
            # 记录添加角色操作
            new_adminlog = OpLog(admin_id=session['id'],
                                 ip=session['login_ip'],
                                 reason="添加角色: " + new_role.name)
            db.session.add(new_adminlog)
        return redirect(url_for('admin.role_add'))
    return render_template("admin/role_add.html", form=form)
Example #24
0
def role_add():
    form = RoleForm()
    if form.validate_on_submit():
        data = form.data
        role_co = Role.query.filter_by(name=data['name']).count()
        if role_co == 1:
            flash('角色已存在','err')
            return redirect(url_for('admin.role_add'))
        role = Role(
            name = data['name'],
            auths = ','.join(map(lambda v :str(v),data['auths'])),
        )
        db.session.add(role)
        db.session.commit()
        flash('角色添加成功!','ok')
        return redirect(url_for('admin.role_add'))
    return render_template('admin/role_add.html',form=form)
Example #25
0
def role_add():
    form = RoleForm()
    # 在 forms 里面查出的 auths 不会自动更新的 后期看看有没有其他方法 没有的话就用这个吧。
    # form.auths.choices = [(i.id, i.name) for i in Auth.query.all()]
    if form.validate_on_submit():
        data = form.data
        role = Role(name=data["name"],
                    auths=",".join(map(lambda i: str(i), data["auths"])))
        db.session.add(role)
        oplog = Oplog(admin_id=session["admin_id"],
                      ip=request.remote_addr,
                      reason="添加角色:{0}".format(role.name))
        db.session.add(oplog)
        db.session.commit()
        flash("添加角色成功", "ok")
        return redirect(url_for("admin.role_add"))
    return render_template("admin/role_add.html", form=form)
def test_delete_user_role_correct() -> None:
    with CustomTestClient() as c:
        role = Role("ADMIN", "Administrator for site")
        role.save()
        user = User("jane", "asd123")
        user.roles.append(role)
        user.save()
        token = auth.create_jwt_token("JohnDoe", 1, ["ADMIN"])
        c.set_cookie('localhost:5000', 'Authorization', token)
        res = c.delete('/api/v1/users/1/roles',
                       data=json.dumps({'role': 'ADMIN'}),
                       content_type='application/json')
        data = res.get_json()
        assert data['message'] == "Role successfully deleted from user"
        assert res.status_code == 200
        user_1 = User.find_by_id(1)
        assert user_1.roles == []
Example #27
0
def role_add():
    form = Roleform()
    if form.validate_on_submit():
        data = form.data
        role_count = Role.query.filter_by(name=data["name"]).count()
        if role_count != 0:
            flash("名称已经存在", "err")
            return render_template("admin/role_add.html", form=form)
        # print(data["auths"])  # [2, 3]
        # print(",".join(map(lambda v: str(v), data["auths"])))  # 2,3
        role = Role(name=data["name"],
                    auths=",".join(map(lambda v: str(v), data["auths"])))
        db.session.add(role)
        db.session.commit()
        flash("添加角色成功", "ok")
        return redirect(url_for("admin.role_list", page=1))
    return render_template("admin/role_add.html", form=form)
def app_with_envion_DB(monkeypatch, client):
    for k, v in environ.items():
        monkeypatch.setenv(k, v)
    p = Pref(**db_environ)
    db.session.add(p)
    for role in ['admin', 'visitor', 'guest']:
        r = Role(name=role)
        u = User(first_name="first_" + role,
                 last_name="last_" + role,
                 username=role,
                 password="******",
                 roles=[r])
        db.session.add(r)
        db.session.add(u)
    db.session.commit()
    create_prefs(client)
    return client
Example #29
0
	def test_reassign(self):
		"""
		Test that an admin can assign a new role and department
		to an employee
		"""

		# Create new department
		department = Department(name=test_department2_name,
                                description=test_department2_description)

		# Create new role
		role = Role(name=test_role2_name,
                    description=test_role2_description)

		# Add to database
		db.session.add(department)
		db.session.add(role)
		db.session.commit()

		# Login as admin user
		self.login_admin_user()

		# Click employees menu link
		self.driver.find_element_by_id("employees_link").click()
		time.sleep(1)

		# Click on assign link
		self.driver.find_element_by_class_name("assign").click()
		time.sleep(1)

		# Select new department and role
		select_dept = Select(self.driver.find_element_by_id("department"))
		select_dept.select_by_visible_text(test_department2_name)
		select_role = Select(self.driver.find_element_by_id("role"))
		select_role.select_by_visible_text(test_role2_name)
		self.driver.find_element_by_id("submit").click()
		time.sleep(2)

		# Assert success message is shown
		success_message = self.driver.find_element_by_class_name("alert").text
		assert "You have successfully assigned a department and role" in success_message

		# Assert that employee's department and role has changed
		employee = Employee.query.get(2)
		self.assertEqual(employee.role.name, test_role2_name)
		self.assertEqual(employee.department.name, test_department2_name)
    def post(self):
        json_data = request.get_json(force=True)

        if not json_data:
            return {'message': 'No Input Data Provided'}, 400

        role = Role.query.filter(name=json_data['name']).first()
        if role:
            return {'message': 'Role with that name already exists'}
        role = Role(name=json_data['name'],
                    description=json_data['description'])
        db.session.add(role)
        db.session.commit()

        result = role_schema.dump(role)

        return {'status': 'success', 'data': result}, 201