diff --git a/atst/domain/portfolios/portfolios.py b/atst/domain/portfolios/portfolios.py index 0e64cbfc..bb9e7aea 100644 --- a/atst/domain/portfolios/portfolios.py +++ b/atst/domain/portfolios/portfolios.py @@ -107,4 +107,7 @@ class Portfolios(object): if "name" in new_data: portfolio.name = new_data["name"] + if "description" in new_data: + portfolio.description = new_data["description"] + PortfoliosQuery.add_and_commit(portfolio) diff --git a/atst/forms/portfolio.py b/atst/forms/portfolio.py index 7f281787..069659bb 100644 --- a/atst/forms/portfolio.py +++ b/atst/forms/portfolio.py @@ -23,20 +23,10 @@ class PortfolioForm(BaseForm): ) ], ) - - -class PortfolioCreationForm(BaseForm): - name = StringField( - translate("forms.portfolio.name.label"), - validators=[ - Length( - min=4, - max=100, - message=translate("forms.portfolio.name.length_validation_message"), - ) - ], - ) description = TextAreaField(translate("forms.portfolio.description.label"),) + + +class PortfolioCreationForm(PortfolioForm): defense_component = SelectMultipleField( choices=SERVICE_BRANCHES, widget=ListWidget(prefix_label=False), diff --git a/atst/routes/portfolios/admin.py b/atst/routes/portfolios/admin.py index bc959150..1b4ac711 100644 --- a/atst/routes/portfolios/admin.py +++ b/atst/routes/portfolios/admin.py @@ -68,7 +68,7 @@ def render_admin_page(portfolio, form=None): pagination_opts = Paginator.get_pagination_opts(http_request) audit_events = AuditLog.get_portfolio_events(portfolio, pagination_opts) members_data = get_members_data(portfolio) - portfolio_form = PortfolioForm(data={"name": portfolio.name}) + portfolio_form = PortfolioForm(obj=portfolio) member_perms_form = member_forms.MembersPermissionsForm( data={"members_permissions": members_data} ) diff --git a/styles/components/_forms.scss b/styles/components/_forms.scss index 43c31c43..f11af8f8 100644 --- a/styles/components/_forms.scss +++ b/styles/components/_forms.scss @@ -203,3 +203,7 @@ display: inline; } } + +.form-container__half { + max-width: 46rem; +} diff --git a/templates/portfolios/admin.html b/templates/portfolios/admin.html index 89f905b0..75d31873 100644 --- a/templates/portfolios/admin.html +++ b/templates/portfolios/admin.html @@ -1,43 +1,43 @@ {% extends "portfolios/base.html" %} {% from "components/pagination.html" import Pagination %} -{% from "components/text_input.html" import TextInput %} {% from 'components/save_button.html' import SaveButton %} +{% from 'components/sticky_cta.html' import StickyCTA %} +{% from "components/text_input.html" import TextInput %} {% block portfolio_content %} +{{ StickyCTA(text="Settings") }} +
-
-
- - {% if user_can(permissions.EDIT_PORTFOLIO_NAME) %} - -
- {{ portfolio_form.csrf_token }} -
-
- {{ TextInput(portfolio_form.name, validation="portfolioName", optional=False) }} -
-
- {{ SaveButton(text='Save', additional_classes='usa-button-big') }} -
-
-
-
- {% else %} -
-
- {{ "portfolios.admin.portfolio_name" | translate }} + +
+

Portfolio name and component

+ {% if user_can(permissions.EDIT_PORTFOLIO_NAME) %} + +
+ {{ portfolio_form.csrf_token }} + {{ TextInput(portfolio_form.name, validation="portfolioName", optional=False) }} + {{ TextInput(portfolio_form.description, paragraph=True) }} +
+ {{ SaveButton(text='Save Changes', additional_classes='usa-button-big') }}
+
+
+ {% else %} +
+
+ {{ "portfolios.admin.portfolio_name" | translate }}
+
-
-
- {{ portfolio.name }} -
+
+
+ {{ portfolio.name }}
- {% endif %} +
+ {% endif %}
@@ -54,7 +54,9 @@
-
+ + +
{% if user_can(permissions.VIEW_PORTFOLIO_POC) %} {% include "portfolios/fragments/primary_point_of_contact.html" %} diff --git a/tests/routes/portfolios/test_admin.py b/tests/routes/portfolios/test_admin.py index 312ab2ee..95b37be2 100644 --- a/tests/routes/portfolios/test_admin.py +++ b/tests/routes/portfolios/test_admin.py @@ -166,16 +166,17 @@ def test_cannot_update_portfolio_ppoc_perms(client, user_session): assert ppoc_pf_role.has_permission_set(PermissionSets.PORTFOLIO_POC) -def test_update_portfolio_name(client, user_session): +def test_update_portfolio_name_and_description(client, user_session): portfolio = PortfolioFactory.create() user_session(portfolio.owner) response = client.post( url_for("portfolios.edit", portfolio_id=portfolio.id), - data={"name": "a cool new name"}, + data={"name": "a cool new name", "description": "a portfolio for things"}, follow_redirects=True, ) assert response.status_code == 200 assert portfolio.name == "a cool new name" + assert portfolio.description == "a portfolio for things" def updating_ppoc_successfully(client, old_ppoc, new_ppoc, portfolio):