Wire up selector for updating a workspace user's role
This commit is contained in:
16
atst/forms/update_member.py
Normal file
16
atst/forms/update_member.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from flask_wtf import Form
|
||||
from wtforms.fields import StringField
|
||||
from wtforms.fields.html5 import EmailField
|
||||
from wtforms.validators import Required, Email, Length
|
||||
|
||||
from atst.forms.validators import IsNumber
|
||||
from atst.forms.fields import SelectField
|
||||
|
||||
from .data import WORKSPACE_ROLES
|
||||
|
||||
|
||||
class UpdateMemberForm(Form):
|
||||
|
||||
workspace_role = SelectField(
|
||||
"Workspace Role", choices=WORKSPACE_ROLES, validators=[Required()], default=""
|
||||
)
|
||||
@@ -5,6 +5,7 @@ from atst.models import Base
|
||||
from atst.models.types import Id
|
||||
from atst.models.mixins import TimestampsMixin
|
||||
from atst.utils import first_or_none
|
||||
from atst.models.workspace_user import WorkspaceUser
|
||||
|
||||
|
||||
MOCK_MEMBERS = [
|
||||
@@ -68,4 +69,4 @@ class Workspace(Base, TimestampsMixin):
|
||||
|
||||
@property
|
||||
def members(self):
|
||||
return MOCK_MEMBERS
|
||||
return [ WorkspaceUser(role.user, role) for role in self.roles]
|
||||
|
||||
@@ -16,3 +16,20 @@ class WorkspaceUser(object):
|
||||
|
||||
def workspace_id(self):
|
||||
return self.workspace_role.workspace_id
|
||||
|
||||
@property
|
||||
def user_id(self):
|
||||
return self.user.id
|
||||
|
||||
@property
|
||||
def user_name(self):
|
||||
return self.user.full_name
|
||||
|
||||
@property
|
||||
def role(self):
|
||||
return self.workspace_role.role.name
|
||||
|
||||
@property
|
||||
def status(self):
|
||||
return "radical"
|
||||
|
||||
|
||||
@@ -9,9 +9,12 @@ from flask import (
|
||||
|
||||
from atst.domain.exceptions import UnauthorizedError
|
||||
from atst.domain.workspaces import Workspaces
|
||||
from atst.domain.workspace_users import WorkspaceUsers
|
||||
from atst.domain.projects import Projects
|
||||
from atst.forms.new_project import NewProjectForm
|
||||
from atst.forms.new_member import NewMemberForm
|
||||
from atst.forms.update_member import UpdateMemberForm
|
||||
from atst.forms.forms import ValidatedForm
|
||||
from atst.domain.authz import Authorization
|
||||
from atst.models.permissions import Permissions
|
||||
|
||||
@@ -119,3 +122,29 @@ def create_member(workspace_id):
|
||||
)
|
||||
else:
|
||||
return render_template("member_new.html", workspace=workspace, form=form)
|
||||
|
||||
|
||||
@bp.route("/workspaces/<workspace_id>/members/<member_id>/member_edit")
|
||||
def view_member(workspace_id, member_id):
|
||||
workspace = Workspaces.get(g.current_user, workspace_id)
|
||||
member = WorkspaceUsers.get(workspace_id, member_id)
|
||||
form = NewMemberForm(http_request.form)
|
||||
|
||||
return render_template("member_edit.html", form=form, workspace=workspace, member=member)
|
||||
|
||||
@bp.route("/workspaces/<workspace_id>/members/<member_id>/member_edit", methods=['POST'])
|
||||
def update_member(workspace_id, member_id):
|
||||
workspace = Workspaces.get(g.current_user, workspace_id)
|
||||
member = WorkspaceUsers.get(workspace_id, member_id)
|
||||
form = UpdateMemberForm(http_request.form)
|
||||
|
||||
if form.validate():
|
||||
return redirect(
|
||||
url_for(
|
||||
"workspaces.workspace_members",
|
||||
workspace_id=workspace.id,
|
||||
)
|
||||
)
|
||||
else:
|
||||
return render_template("member_edit.html", form=form, workspace=workspace, member=member)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user