Portfolio manager invite updates:
- Update the form to use BooleanFields for the permissions and make the form more similar to the Application Members form - Use MemberFormTemplate macro in the portfolio settings template - fix tests affected by the form changes
This commit is contained in:
@@ -75,10 +75,10 @@ class Portfolios(object):
|
||||
permission_sets = PortfolioRoles._permission_sets_for_names(
|
||||
member_data.get("permission_sets", [])
|
||||
)
|
||||
role = PortfolioRole(portfolio_id=portfolio.id, permission_sets=permission_sets)
|
||||
role = PortfolioRole(portfolio=portfolio, permission_sets=permission_sets)
|
||||
|
||||
invitation = PortfolioInvitations.create(
|
||||
inviter=inviter, role=role, member_data=member_data
|
||||
inviter=inviter, role=role, member_data=member_data["user_data"]
|
||||
)
|
||||
|
||||
PortfoliosQuery.add_and_commit(role)
|
||||
|
@@ -1,76 +1,59 @@
|
||||
from wtforms.validators import Required
|
||||
from wtforms.fields import StringField, FormField, FieldList, HiddenField
|
||||
from wtforms.fields import BooleanField, FormField
|
||||
|
||||
from atst.domain.permission_sets import PermissionSets
|
||||
from .forms import BaseForm
|
||||
from .member import NewForm as BaseNewMemberForm
|
||||
from atst.domain.permission_sets import PermissionSets
|
||||
from atst.forms.fields import SelectField
|
||||
from atst.utils.localization import translate
|
||||
|
||||
|
||||
class PermissionsForm(BaseForm):
|
||||
member_name = StringField()
|
||||
member_id = HiddenField()
|
||||
perms_app_mgmt = SelectField(
|
||||
perms_app_mgmt = BooleanField(
|
||||
translate("forms.new_member.app_mgmt"),
|
||||
choices=[
|
||||
(
|
||||
PermissionSets.VIEW_PORTFOLIO_APPLICATION_MANAGEMENT,
|
||||
translate("common.view"),
|
||||
),
|
||||
(
|
||||
PermissionSets.EDIT_PORTFOLIO_APPLICATION_MANAGEMENT,
|
||||
translate("common.edit"),
|
||||
),
|
||||
],
|
||||
default=False,
|
||||
description="Add, remove and edit applications in this Portfolio.",
|
||||
)
|
||||
perms_funding = SelectField(
|
||||
perms_funding = BooleanField(
|
||||
translate("forms.new_member.funding"),
|
||||
choices=[
|
||||
(PermissionSets.VIEW_PORTFOLIO_FUNDING, translate("common.view")),
|
||||
(PermissionSets.EDIT_PORTFOLIO_FUNDING, translate("common.edit")),
|
||||
],
|
||||
default=False,
|
||||
description="Add and Modify Task Orders to fund this Portfolio.",
|
||||
)
|
||||
perms_reporting = SelectField(
|
||||
perms_reporting = BooleanField(
|
||||
translate("forms.new_member.reporting"),
|
||||
choices=[
|
||||
(PermissionSets.VIEW_PORTFOLIO_REPORTS, translate("common.view")),
|
||||
(PermissionSets.EDIT_PORTFOLIO_REPORTS, translate("common.edit")),
|
||||
],
|
||||
default=False,
|
||||
description="View and export reports about this Portfolio's funding.",
|
||||
)
|
||||
perms_portfolio_mgmt = SelectField(
|
||||
perms_portfolio_mgmt = BooleanField(
|
||||
translate("forms.new_member.portfolio_mgmt"),
|
||||
choices=[
|
||||
(PermissionSets.VIEW_PORTFOLIO_ADMIN, translate("common.view")),
|
||||
(PermissionSets.EDIT_PORTFOLIO_ADMIN, translate("common.edit")),
|
||||
],
|
||||
default=False,
|
||||
description="Edit this Portfolio's settings.",
|
||||
)
|
||||
|
||||
@property
|
||||
def data(self):
|
||||
_data = super().data
|
||||
_data["permission_sets"] = []
|
||||
for field in _data:
|
||||
if "perms" in field:
|
||||
_data["permission_sets"].append(_data[field])
|
||||
_data.pop("csrf_token", None)
|
||||
perm_sets = []
|
||||
|
||||
if _data["perms_app_mgmt"]:
|
||||
perm_sets.append(PermissionSets.EDIT_PORTFOLIO_APPLICATION_MANAGEMENT)
|
||||
|
||||
if _data["perms_funding"]:
|
||||
perm_sets.append(PermissionSets.EDIT_PORTFOLIO_FUNDING)
|
||||
|
||||
if _data["perms_reporting"]:
|
||||
perm_sets.append(PermissionSets.EDIT_PORTFOLIO_REPORTS)
|
||||
|
||||
if _data["perms_portfolio_mgmt"]:
|
||||
perm_sets.append(PermissionSets.EDIT_PORTFOLIO_ADMIN)
|
||||
|
||||
_data["permission_sets"] = perm_sets
|
||||
return _data
|
||||
|
||||
|
||||
class MembersPermissionsForm(BaseForm):
|
||||
members_permissions = FieldList(FormField(PermissionsForm))
|
||||
|
||||
|
||||
class NewForm(BaseForm):
|
||||
class NewForm(PermissionsForm):
|
||||
user_data = FormField(BaseNewMemberForm)
|
||||
permission_sets = FormField(PermissionsForm)
|
||||
|
||||
@property
|
||||
def update_data(self):
|
||||
return {
|
||||
"permission_sets": self.data.get("permission_sets").get("permission_sets"),
|
||||
**self.data.get("user_data"),
|
||||
}
|
||||
|
||||
|
||||
class AssignPPOCForm(PermissionsForm):
|
||||
|
@@ -77,7 +77,7 @@ def render_admin_page(portfolio, form=None):
|
||||
portfolio_form=portfolio_form,
|
||||
ppoc=ppoc,
|
||||
members=filter_members_data(member_list),
|
||||
member_form=member_forms.NewForm(),
|
||||
new_manager_form=member_forms.NewForm(),
|
||||
assign_ppoc_form=assign_ppoc_form,
|
||||
portfolio=portfolio,
|
||||
audit_events=audit_events,
|
||||
|
@@ -79,7 +79,7 @@ def invite_member(portfolio_id):
|
||||
|
||||
if form.validate():
|
||||
try:
|
||||
invite = Portfolios.invite(portfolio, g.current_user, form.update_data)
|
||||
invite = Portfolios.invite(portfolio, g.current_user, form.data)
|
||||
send_portfolio_invitation(
|
||||
invitee_email=invite.email,
|
||||
inviter_name=g.current_user.full_name,
|
||||
|
Reference in New Issue
Block a user