aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/viewsets
diff options
context:
space:
mode:
authorGravatar Joe Banks <[email protected]>2020-10-10 18:39:45 +0100
committerGravatar GitHub <[email protected]>2020-10-10 18:39:45 +0100
commit071ef50cffcbe089e2d81933718dee1cfa834782 (patch)
tree53a24c17e89050a701c61ee2dc3647728809a5f3 /pydis_site/apps/api/viewsets
parentMerge pull request #409 from dementati/feat/397-398-metricity-db-and-api (diff)
parentRemove multiple objects returning test case (diff)
Merge pull request #411 from ks129/voice-gate
Implement voice bans to API
Diffstat (limited to 'pydis_site/apps/api/viewsets')
-rw-r--r--pydis_site/apps/api/viewsets/bot/user.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/pydis_site/apps/api/viewsets/bot/user.py b/pydis_site/apps/api/viewsets/bot/user.py
index 3ab71186..5205dc97 100644
--- a/pydis_site/apps/api/viewsets/bot/user.py
+++ b/pydis_site/apps/api/viewsets/bot/user.py
@@ -1,6 +1,7 @@
import typing
from collections import OrderedDict
+from django.core.exceptions import ObjectDoesNotExist
from rest_framework import status
from rest_framework.decorators import action
from rest_framework.pagination import PageNumberPagination
@@ -9,6 +10,7 @@ from rest_framework.response import Response
from rest_framework.serializers import ModelSerializer
from rest_framework.viewsets import ModelViewSet
+from pydis_site.apps.api.models.bot.infraction import Infraction
from pydis_site.apps.api.models.bot.metricity import Metricity, NotFound
from pydis_site.apps.api.models.bot.user import User
from pydis_site.apps.api.serializers import UserSerializer
@@ -240,10 +242,19 @@ class UserViewSet(ModelViewSet):
def metricity_data(self, request: Request, pk: str = None) -> Response:
"""Request handler for metricity_data endpoint."""
user = self.get_object()
+
+ try:
+ Infraction.objects.get(user__id=user.id, active=True, type="voice_ban")
+ except ObjectDoesNotExist:
+ voice_banned = False
+ else:
+ voice_banned = True
+
with Metricity() as metricity:
try:
data = metricity.user(user.id)
data["total_messages"] = metricity.total_messages(user.id)
+ data["voice_banned"] = voice_banned
return Response(data, status=status.HTTP_200_OK)
except NotFound:
return Response(dict(detail="User not found in metricity"),