From ecbba37661806f9ffc115d3af36482c6d0a0083d Mon Sep 17 00:00:00 2001 From: Marnanel Thurman Date: Thu, 20 Aug 2020 18:00:35 +0100 Subject: [PATCH] bowler's StatusView now has an activity_get method. --- kepi/bowler_pub/views/status.py | 43 +++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/kepi/bowler_pub/views/status.py b/kepi/bowler_pub/views/status.py index e253dca..82eb719 100644 --- a/kepi/bowler_pub/views/status.py +++ b/kepi/bowler_pub/views/status.py @@ -4,8 +4,47 @@ import django.views import logging +import kepi.bowler_pub.views.activitypub as ap +import kepi.trilby_api.models.status as status logger = logging.getLogger(name='kepi') -class StatusView(django.views.View): - pass # TODO +class StatusView(ap.KepiView): + def activity_get(self, request, *args, **kwargs): + self._username = kwargs['username'] + self._status = kwargs['status'] + + logger.debug("Looking up status %d, by %s", + self._status, self._username, + ) + + try: + result = status.Status.objects.get( + id = self._status, + ) + except status.Status.DoesNotExist: + logger.info(' -- unknown status: %s', kwargs) + return None + + logger.debug(" -- found %s", + result + ) + + result = result.original + + logger.debug(" -- found %s", + result + ) + + try: + if result.account.username != self._username: + logger.info(' -- status was by %s but they wanted %s', + result.account.username, self._username) + return None + except status.Status.account.RelatedObjectDoesNotExist: + logger.warn(" -- status %d has no associated account "+\ + "(shouldn't happen)", + self._status) + return None + + return result