Use portfolio_role.id for updating primary point of contact.

Our forms should rely on role IDs for displaying user information on the
portfolio page. This way they are decoupled from user table data and can
eventually rely on invitation user data where an invitation has been
sent but a user does not exist yet.
This commit is contained in:
dandds
2019-05-22 15:42:20 -04:00
parent 42900a20a6
commit e3ace36466
4 changed files with 18 additions and 36 deletions

View File

@@ -80,7 +80,7 @@ class NewForm(BaseForm):
class AssignPPOCForm(PermissionsForm):
user_id = SelectField(
role_id = SelectField(
label=translate("forms.assign_ppoc.dod_id"),
validators=[Required()],
choices=[("", "- Select -")],

View File

@@ -4,10 +4,8 @@ from . import portfolios_bp
from atst.domain.portfolios import Portfolios
from atst.domain.portfolio_roles import PortfolioRoles
from atst.domain.permission_sets import PermissionSets
from atst.domain.users import Users
from atst.domain.audit_log import AuditLog
from atst.domain.common import Paginator
from atst.domain.exceptions import NotFoundError
from atst.forms.portfolio import PortfolioForm
import atst.forms.portfolio_member as member_forms
from atst.models.permissions import Permissions
@@ -73,9 +71,7 @@ def render_admin_page(portfolio, form=None):
assign_ppoc_form = member_forms.AssignPPOCForm()
for pf_role in portfolio.roles:
if pf_role.user != portfolio.owner and pf_role.is_active:
assign_ppoc_form.user_id.choices += [
(pf_role.user.id, pf_role.user.full_name)
]
assign_ppoc_form.role_id.choices += [(pf_role.id, pf_role.full_name)]
current_member = first_or_none(
lambda m: m.user_id == g.current_user.id, portfolio.members
@@ -135,18 +131,14 @@ def edit_members(portfolio_id):
@portfolios_bp.route("/portfolios/<portfolio_id>/update_ppoc", methods=["POST"])
@user_can(Permissions.EDIT_PORTFOLIO_POC, message="update portfolio ppoc")
def update_ppoc(portfolio_id):
user_id = http_request.form.get("user_id")
role_id = http_request.form.get("role_id")
portfolio = Portfolios.get(g.current_user, portfolio_id)
new_ppoc = Users.get(user_id)
new_ppoc_role = PortfolioRoles.get_by_id(role_id)
if new_ppoc not in portfolio.users:
raise NotFoundError("user not in portfolio")
PortfolioRoles.make_ppoc(portfolio_role=new_ppoc_role)
portfolio_role = PortfolioRoles.get(portfolio_id=portfolio_id, user_id=user_id)
PortfolioRoles.make_ppoc(portfolio_role=portfolio_role)
flash("primary_point_of_contact_changed", ppoc_name=new_ppoc.full_name)
flash("primary_point_of_contact_changed", ppoc_name=new_ppoc_role.full_name)
return redirect(
url_for(