def addRole(request): form = RoleForm() if request.method == 'POST': form = RoleForm(request.POST) form.save() return redirect('/role/') return render(request, 'rbac/add.html', locals())
def edit_role(request, id=None): context = { 'page_title': u'Papéis', 'edit_name': 'role', 'has_back': False, 'features': get_user_features(request) } t = get_template('edit.html') role = None form = RoleForm() try: if request.method == 'POST': form = RoleForm(request.POST) if form.is_valid(): cd = form.cleaned_data role = _save_role(cd) initial = role.__dict__ messages.success(request, 'Papel salvo com sucesso.') form = RoleForm(initial={}) elif id: role = Role.objects.get(id=id) initial = role.__dict__ form = RoleForm(initial=initial) except Exception as e: log.error(e) messages.error( request, u'Ocorreu um erro ao processar a requisição, por favor tente novamente.' ) context = _set_role_form_context(role, form, context) return render_to_response('edit.html', context, context_instance=RequestContext(request))
def editRole(request, id): role_obj = models.Role.objects.filter(id=id).first() form = RoleForm(instance=role_obj) if request.method == 'POST': form = RoleForm(request.POST, instance=role_obj) form.save() return redirect('/role/') return render(request, 'rbac/edit.html', locals())
def role_edit(id=None): # 角色修改 form = RoleForm() form.submit.label.text = u'修改' role = Role.query.get_or_404(id) is_flag = True if request.method == 'GET': auths = role.auths # get时进行赋值。应对无法模板中赋初值 form.name.data = role.name form.auths.data = list(map(lambda v: int(v), auths.split(","))) if form.validate_on_submit(): if role.name != form.name.data and Role.query.filter_by( name=form.name.data).first(): is_flag = False flash(u'您输入的角色已存在', 'err') if is_flag == False: return render_template('admin/role_edit.html', form=form) role.name = form.name.data role.auths = ','.join(map(lambda v: str(v), form.auths.data)) db.session.add(role) oplog = Oplog(user_id=session['user_id'], ip=request.remote_addr, reason=u'修改角色:%s' % role.name) db.session.add(oplog) db.session.commit() flash(u'角色修改成功', 'ok') return redirect(url_for('admin.role_list')) return render_template('admin/role_edit.html', form=form)
def edit_role(id): """ Edit a role """ check_admin() add_role = False role = Role.query.get_or_404(id) form = RoleForm(obj=role) if form.validate_on_submit(): # role.name = form.name.data # role.description = form.description.data # db.session.add(role) form.populate_obj(role) db.session.commit() flash('You have successfully edited the role.') # redirect to the roles page return redirect(url_for('admin.list_roles')) #form.description.data = role.description #form.name.data = role.name return render_template('admin/roles/role.html', add_role=add_role, form=form, title="Edit Role")
def add_role(): """ Add a role to the database """ check_admin() add_role = True form = RoleForm() if form.validate_on_submit(): role = Role(name=form.name.data, description=form.description.data) try: # add role to the database db.session.add(role) db.session.commit() flash('Cargo editado com sucesso.') except: # in case role name already exists flash('Erro: nome do cargo ja existe.') # redirect to the roles page return redirect(url_for('admin.list_roles')) # load role template return render_template('admin/roles/role.html', add_role=add_role, form=form, title='Adicionar Cargo')
def edit_role(id): """ Edit a role. :param id: :return: """ check_admin() role = Role.query.get_or_404(id) form = RoleForm(obj=role) if form.validate_on_submit(): role.name = form.name.data role.description = form.description.data try: db.session.add(role) db.session.commit() flash('Successfully edited the role: "%s".' % str(role.name)) except: db.session.rollback() flash('failed to edit the role: "%s".' % str(role.name)) return redirect(url_for('admin.roles')) form.description.data = role.description form.name.data = role.name return render_template('admin/roles/edit_role.html', title='Edit Role', form=form) # type: RoleForm
def edit_role(id): """ Edit a role """ check_admin() add_role = False role = Role.query.get_or_404(id) form = RoleForm(obj=role) if form.validate_on_submit(): role.name = form.name.data role.description = form.description.data db.session.add(role) db.session.commit() flash('Cargo editado com sucesso.') # redirect to the roles page return redirect(url_for('admin.list_roles')) form.description.data = role.description form.name.data = role.name return render_template('admin/roles/role.html', add_role=add_role, form=form, title="Editar Cargo")
def add_role(): """ Add a role to the database """ check_admin() add_role = True form = RoleForm() if form.validate_on_submit(): role = Role(name=form.name.data, description=form.description.data) try: # add role to the database db.session.add(role) db.session.commit() flash('You have successfully added a new role.') except: # in case role name already exists flash('Error: role name already exists.') # redirect to the roles page return redirect(url_for('admin.list_roles')) # load role template return render_template('admin/roles/role.html', add_role=add_role, form=form, title='Add Role')
def edit_role(id): """ edit a role """ check_admin() add_role = False role = Role.query.get_or_404(id) # prepopulating the form using the above role query form = RoleForm(obj=role) # populating the database with info from the submitted form if form.validate_on_submit(): role.name = form.name.data role.description = form.description.data db.session.add(role) db.session.commit() flash(' you have successfully edited the role ') # redirect to the roles page to view the changes return redirect(url_for('admin.list_roles')) form.description.data = role.description form.name.data = role.name return render_template('admin/roles/role.html', add_role=add_role, form=form, title="Edit Role")
def post(self): form = RoleForm(data=request.get_json()) if not form.validate(): abort(400) role = Role(**form.data) db.session.add(role) db.session.commit() response = jsonify(**role.to_dict()) response.status_code = 201 response.headers.add("Location", f"roles/{role.id}") return response
def select_role(): form = RoleForm() errors = list() form.roles.choices = current_user.roles if form.is_submitted(): current_user.current_role = form.roles.data identity_changed.send(current_app._get_current_object(), identity=Identity(current_user.id)) if not UserProfileManager.has_ui_assistant() and current_user.master: current_user.set_master(None) identity_changed.send(current_app._get_current_object(), identity=Identity(current_user.id)) return redirect_after_user_change() return render_template('user/select_role.html', form=form, errors=errors)
def create_form(self, resource=None, edit_form=False): """Return form with fields loaded from DB. :param object resource: Optional role object :param bool edit_form: Set if edit form """ form = RoleForm(self.config_models, obj=resource) session = self.session() self.update_form_groups(resource, edit_form, form, session) self.update_form_users(resource, edit_form, form, session) session.close() return form
def put(self, role_id): role = Role.query.filter_by(id=int(role_id)).first() if not role: abort(404) form = RoleForm(data=request.get_json()) if not form.validate(): abort(400) columns_keys = Role.__table__.columns.keys() for field in columns_keys: if field in form.data: setattr(role, field, form.data[field]) db.session.commit() response = jsonify(role.to_dict()) response.status_code = 200 return response
def select_role(): form = RoleForm() errors = list() form.roles.choices = current_user.roles # Validate form input if form.is_submitted(): current_user.current_role = form.roles.data identity_changed.send(current_app._get_current_object(), identity=Identity(current_user.id)) return redirect( request.args.get('next') or request.referrer or url_for('index')) return render_template('user/select_role.html', form=form, errors=errors)
def add_role(): check_admin() add_role = True form = RoleForm() if form.validate_on_submit(): role = Role(name=form.name.data, description=form.description.data) try: db.session.add(role) db.session.commit() flash('You have successfully added a new role.') except: flash('Role already exists.') return redirect(url_for('admin.list_roles')) return render_template('admin/roles/role.html', add_role=add_role, form=form, title='Add Role')
def role_create(): form = RoleForm(request.form) if request.method == 'POST' and form.validate(): try: role = Role() form.populate_obj(role) db.session.add(role) db.session.commit() except Exception as error: app.logger.error('Error creating a role : {}\n{}'.format( error, traceback.format_exc())) return render_template('forms/model.jinja', form=form, type='create', action=url_for('role_create'), section='role')
def create_form(self, resource=None, edit_form=False): """Return form with fields loaded from DB. :param object resource: Optional role object :param bool edit_form: Set if edit form """ form = RoleForm(self.config_models, obj=resource) session = self.session() self.update_form_collection(resource, edit_form, form.groups, self.Group, 'sorted_groups', 'id', 'name', session) self.update_form_collection(resource, edit_form, form.users, self.User, 'sorted_users', 'id', 'name', session) session.close() return form
def role_add(): form = RoleForm() if form.validate_on_submit(): data = form.data role_num = Role.query.filter_by(name=data["role_name"]).count() if role_num == 1: flash("角色名称已经存在!", "err") return redirect(url_for("admin.role_add")) role = Role( name=data["role_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",id=id)) return redirect(url_for("admin.role_list", page=1)) return render_template("admin/role_add.html", form=form)
def role_edit(id): role = Role.query.get(id) form = RoleForm(request.form, obj=role) if request.method == 'POST' and form.validate(): try: form.populate_obj(role) db.session.commit() flash("Hlutverki var breytt", category='success') except Exception as error: app.logger.error('Error updating a role : {}\n{}'.format( error, traceback.format_exc())) return render_template('forms/model.jinja', role=role, form=form, type='edit', action=url_for('role_edit', id=id), section='role')
def role_edit(id=None): form = RoleForm() role = Role.query.get_or_404(id) if request.method == "GET": auths = role.auths form.auths.data = list(map(lambda v: int(v), auths.split(","))) if form.validate_on_submit(): data = form.data role_num = Role.query.filter_by(name=data["role_name"]).count() if role.name != data["role_name"] and role_num == 1: flash("角色名称已经存在!", "err") return redirect(url_for("admin.role_edit", id=id)) role.name = data["role_name"] role.auths = ','.join(map(lambda v: str(v), data["auths"])), db.session.add(role) db.session.commit() flash("修改角色成功!", "ok") #return redirect(url_for("admin.role_edit",id=id)) return redirect(url_for("admin.role_list", page=1)) return render_template("admin/role_edit.html", form=form, role=role)
def add_role(): """ Add a role to the database. :return: """ check_admin() form = RoleForm() if form.validate_on_submit(): role = Role(name=form.name.data, description=form.description.data) try: db.session.add(role) db.session.commit() flash('Successfully added a new role: "%s".' % str(role.name)) except: db.session.rollback() flash('Failed to add a new role: "%s".' % str(role.name)) return redirect(url_for('admin.roles')) return render_template('admin/roles/add_role.html', title='Add Role', form=form)
def edit_role(id): check_admin() add_role = False role = Role.query.get_or_404(id) form = RoleForm(obj=role) if form.validate_on_submit(): role = form.name.data description = form.description.data db.session.add(role) db.session.commit() flash('You have successfully edited a role') return redirect(url_for('admin.list_roles')) form.description.data = role.description form.name.data = role.name return render_template('admin/roles/role.html', add_role=add_role, form=form, role=role, title="Edit Role")
def edit_role(id): check_admin() add_role = False role = Role.query.get_or_404(id) form = RoleForm(obj=role) if form.validate_on_submit(): role.name = form.name.data role.description = form.description.data try: db.session.add(role) db.session.commit() logger.info('role edited ') flash('You have successfully edited the role.') return redirect(url_for('admin.list_roles')) except Exception as e: logger.error('role cannot be edited') flash("cannot edit") form.description.data = role.description form.name.data = role.name return render_template('admin/roles/role.html', add_role=add_role, form=form, title="Edit Role")
def role_add(): # 角色添加 form = RoleForm() is_flag = True if form.validate_on_submit(): if Role.query.filter_by(name=form.name.data).first(): is_flag = False flash(u'您输入的角色已存在', 'err') if is_flag == False: return render_template('admin/role_add.html', form=form) role = Role( name=form.name.data, # lambda v: str(v) 匿名函数,将v转换为字符串 # map(f, [list])内置函数,接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回 auths=','.join(map(lambda v: str(v), form.auths.data))) db.session.add(role) oplog = Oplog(user_id=session['user_id'], ip=request.remote_addr, reason=u'添加角色:%s' % form.name.data) db.session.add(oplog) db.session.commit() flash(u'角色添加成功', 'ok') return redirect(url_for('admin.role_add')) return render_template('admin/role_add.html', form=form)
def add_edit_role(request, *args, **kwargs): """Takes in the project id and allows you to add a new role.""" project_name = kwargs['project_name'] project = get_object_or_404(CollabProject, slug=project_name) id = project.id # If the user is not the project admin, just return him to the project page. if not project.admin.filter( id=request.user.id) and not request.user.is_superuser: request.user.message_set.create( message="You do not have privileges to edit roles!") return HttpResponseRedirect(project.get_absolute_url()) if 'role_id' in kwargs: role_id = kwargs['role_id'] role = get_object_or_404(Role, id=role_id) # Check if the role exists in that project! if role.project.id != project.id: request.user.message_set.create( message="The role does not exist in that project!") return HttpResponseRedirect(project.get_absolute_url()) edit, instance, initial = True, role, None else: edit, instance, initial = False, None, {} if request.method == 'POST': form = RoleForm(project.id, request.POST, instance=instance, clean=(not edit), initial=initial) if form.is_valid(): if not edit: new_role = Role() message = "The role was added." else: message = "The role was modified." new_role = form.save(commit=False) new_role.project = project new_role.save() # Need this as I have a many to many field and did commit=False. form.save_m2m() # It's possible that a user gave some Editable privileges without the corresponding Viewable. The # following code automatically adds those Viewable privileges. for privilege in form.cleaned_data["privileges"]: if privilege.permission_type == 'Editable': new_privilege = get_object_or_404( Privilege, project=project, related_model=privilege.related_model, permission_type='Viewable') new_role.privileges.add(new_privilege) new_role.save() if form.cleaned_data["make_default"] == True: if project.default_role != new_role: project.default_role = new_role project.save() request.user.message_set.create(message=message) return HttpResponseRedirect( reverse('roles_overview', kwargs={'project_name': project.slug})) else: form = RoleForm(project.id, instance=instance, initial=initial) return render_to_response('project/addrole.html', { 'form': form, 'project': project, 'edit': edit, 'role': instance }, context_instance=RequestContext(request))
def admin(): role_form = RoleForm() users = User.query.all() usernames = [u.username for u in users] role_form.username.validators.append( AnyOf(usernames, message="Username not found.")) if role_form.validate_on_submit(): form = role_form user = User.query.filter(User.username == form.username.data).one() try: role = Role.query.filter(Role.name == form.role.data).one() except NoResultFound: role = Role(name=form.role.data) db.session.add(role) if form.action.data == "add": if role not in user.roles: user.roles.append(role) db.session.add(user) elif form.action.data == "remove": if role in user.roles: user.roles.remove(role) db.session.add(user) db.session.commit() return redirect(url_for("horti.admin")) group_form = GroupForm() if group_form.validate_on_submit(): form = group_form name = form.name.data if form.action.data == "add": tweety.post_groups(name=name) elif form.action.data == "remove": tweety.delete_group(name) groups = cache(tweety.get_groups, force_refresh=True) return redirect(url_for("horti.admin")) # display groups have_groups = False while not have_groups: groups = cache(tweety.get_groups) if not isinstance(groups, Response): have_groups = True groups.sort() sleep(0.2) # display roles roles = {} for user in users: roles[user.username] = ", ".join(sorted([r.name for r in user.roles])) template_data = { "role_form": role_form, "users": users, "roles": roles, "groups": groups, "group_form": group_form } return render_template("admin.html", title=make_title("Admin"), **template_data)
def get_context_data(self, **kwargs): context = super(RoleList, self).get_context_data(**kwargs) context['form'] = RoleForm() return context