diff options
| author | 2022-11-17 19:58:36 +0000 | |
|---|---|---|
| committer | 2022-11-17 19:58:36 +0000 | |
| commit | 09b69ba789be11fda24493fce671b5bc37912382 (patch) | |
| tree | f9e91454d40112cac412d7e0b5d12bf6ff8bf2dc | |
| parent | Change the endpoint to be a POST not a GET (diff) | |
Include users with no messages in response, and simplify response format
| -rw-r--r-- | pydis_site/apps/api/tests/test_users.py | 4 | ||||
| -rw-r--r-- | pydis_site/apps/api/viewsets/bot/user.py | 19 | 
2 files changed, 10 insertions, 13 deletions
| diff --git a/pydis_site/apps/api/tests/test_users.py b/pydis_site/apps/api/tests/test_users.py index 9c0fa6ba..d86e80bb 100644 --- a/pydis_site/apps/api/tests/test_users.py +++ b/pydis_site/apps/api/tests/test_users.py @@ -505,7 +505,7 @@ class UserMetricityTests(AuthenticatedAPITestCase):      def test_metricity_activity_data(self):          # Given          self.mock_no_metricity_user()  # Other functions shouldn't be used. -        self.metricity.total_messages_in_past_n_days.return_value = [[0, 10]] +        self.metricity.total_messages_in_past_n_days.return_value = [(0, 10)]          # When          url = reverse("api:bot:user-metricity-activity-data") @@ -518,7 +518,7 @@ class UserMetricityTests(AuthenticatedAPITestCase):          # Then          self.assertEqual(response.status_code, 200)          self.metricity.total_messages_in_past_n_days.assert_called_once_with(["0", "1"], 10) -        self.assertEqual(response.json(), [{"id": 0, "message_count": 10}]) +        self.assertEqual(response.json(), {"0": 10, "1": 0})      def test_metricity_activity_data_invalid_days(self):          # Given diff --git a/pydis_site/apps/api/viewsets/bot/user.py b/pydis_site/apps/api/viewsets/bot/user.py index f803b3f6..db73a83c 100644 --- a/pydis_site/apps/api/viewsets/bot/user.py +++ b/pydis_site/apps/api/viewsets/bot/user.py @@ -140,10 +140,8 @@ class UserViewSet(ModelViewSet):      - 404: if a user with the given `snowflake` could not be found      ### POST /bot/users/metricity_activity_data -    Gets the number of messages sent on the server in a given period. - -    Users with no messages in the specified period or who do not -    exist are not included in the result. +    Returns a mapping of user ID to message count in a given period for +    the given user IDs.      #### Required Query Parameters      - days: how many days into the past to count message from. @@ -155,9 +153,10 @@ class UserViewSet(ModelViewSet):      ... ]      #### Response format -    >>> [ -    ...     {"id": 409107086526644234, "message_count": 54} -    ... ] +    >>> { +    ...     "409107086526644234": 54, +    ...     "493839819168808962": 0 +    ... }      #### Status codes      - 200: returned on success @@ -351,8 +350,6 @@ class UserViewSet(ModelViewSet):          with Metricity() as metricity:              data = metricity.total_messages_in_past_n_days(user_ids, days) -        response_data = [ -            {"id": int(d[0]), "message_count": d[1]} -            for d in data -        ] +        default_data = {user_id: 0 for user_id in user_ids} +        response_data = default_data | dict(data)          return Response(response_data, status=status.HTTP_200_OK) | 
