diff --git a/documentation/changelog.rst b/documentation/changelog.rst index 5f67b3abe..b43a9efd7 100644 --- a/documentation/changelog.rst +++ b/documentation/changelog.rst @@ -9,6 +9,7 @@ v0.2.4 | March XX, 2021 Bugfixes -------- * Documentation listed 2.0 API endpoints twice [see `PR #59 `_] +* User page did not list number of assets correctly [see `PR #64 `_] v0.2.3 | February 27, 2021 diff --git a/flexmeasures/ui/crud/users.py b/flexmeasures/ui/crud/users.py index 3979b8139..082616c07 100644 --- a/flexmeasures/ui/crud/users.py +++ b/flexmeasures/ui/crud/users.py @@ -32,11 +32,15 @@ class UserForm(FlaskForm): active = BooleanField("Activation Status", validators=[DataRequired()]) -def render_user(user: Optional[User], msg: str = None): +def render_user(user: Optional[User], asset_count: int = 0, msg: str = None): user_form = UserForm() user_form.process(obj=user) return render_flexmeasures_template( - "crud/user.html", user=user, user_form=user_form, msg=msg + "crud/user.html", + user=user, + user_form=user_form, + asset_count=asset_count, + msg=msg, ) @@ -88,8 +92,16 @@ def get(self, id: str): get_user_response = InternalApi().get( url_for("flexmeasures_api_v2_0.get_user", id=id) ) - user = process_internal_api_response(get_user_response.json(), make_obj=True) - return render_user(user) + user: User = process_internal_api_response( + get_user_response.json(), make_obj=True + ) + asset_count = 0 + if user: + get_users_assets_response = InternalApi().get( + url_for("flexmeasures_api_v2_0.get_assets", owner_id=user.id) + ) + asset_count = len(get_users_assets_response.json()) + return render_user(user, asset_count=asset_count) @roles_required("admin") def toggle_active(self, id: str): diff --git a/flexmeasures/ui/templates/crud/user.html b/flexmeasures/ui/templates/crud/user.html index 669970b64..6044878d7 100644 --- a/flexmeasures/ui/templates/crud/user.html +++ b/flexmeasures/ui/templates/crud/user.html @@ -67,7 +67,7 @@

Account overview for {{ user.username }}

Assets owned - {{ user.assets | length }} + {{ asset_count }} diff --git a/flexmeasures/ui/tests/test_user_crud.py b/flexmeasures/ui/tests/test_user_crud.py index 734858858..513b9d62a 100644 --- a/flexmeasures/ui/tests/test_user_crud.py +++ b/flexmeasures/ui/tests/test_user_crud.py @@ -41,11 +41,17 @@ def test_user_page(client, as_admin, requests_mock): requests_mock.get( "http://localhost//api/v2_0/user/2", status_code=200, json=mock_user ) + requests_mock.get( + "http://localhost//api/v2_0/assets", + status_code=200, + json=[{}, {}, {}], # we only care about the length + ) user_page = client.get(url_for("UserCrudUI:get", id=2), follow_redirects=True) assert user_page.status_code == 200 assert ( "Account overview for %s" % mock_user["username"] ).encode() in user_page.data + assert (">3").encode() in user_page.data # this is the asset count assert mock_user["email"].encode() in user_page.data