Wire up selector for updating a workspace user's role

This commit is contained in:
Montana
2018-08-31 14:12:02 -04:00
parent 4b25cc19d9
commit ea1a3926ac
6 changed files with 177 additions and 196 deletions

View 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=""
)

View File

@@ -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]

View File

@@ -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"

View File

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