diff options
Diffstat (limited to 'pydis_site/apps/api/viewsets.py')
-rw-r--r-- | pydis_site/apps/api/viewsets.py | 57 |
1 files changed, 45 insertions, 12 deletions
diff --git a/pydis_site/apps/api/viewsets.py b/pydis_site/apps/api/viewsets.py index 949ffaaa..47915256 100644 --- a/pydis_site/apps/api/viewsets.py +++ b/pydis_site/apps/api/viewsets.py @@ -15,22 +15,23 @@ from rest_framework_bulk import BulkCreateModelMixin from .models import ( BotSetting, DocumentationLink, - Infraction, MessageDeletionContext, - Nomination, OffTopicChannelName, - Reminder, Role, - SnakeFact, SnakeIdiom, - SnakeName, SpecialSnake, - Tag, User + Infraction, LogEntry, + MessageDeletionContext, Nomination, + OffTopicChannelName, Reminder, + Role, SnakeFact, + SnakeIdiom, SnakeName, + SpecialSnake, Tag, + User ) from .serializers import ( BotSettingSerializer, DocumentationLinkSerializer, ExpandedInfractionSerializer, InfractionSerializer, - MessageDeletionContextSerializer, NominationSerializer, - OffTopicChannelNameSerializer, ReminderSerializer, - RoleSerializer, SnakeFactSerializer, - SnakeIdiomSerializer, SnakeNameSerializer, - SpecialSnakeSerializer, TagSerializer, - UserSerializer + LogEntrySerializer, MessageDeletionContextSerializer, + NominationSerializer, OffTopicChannelNameSerializer, + ReminderSerializer, RoleSerializer, + SnakeFactSerializer, SnakeIdiomSerializer, + SnakeNameSerializer, SpecialSnakeSerializer, + TagSerializer, UserSerializer ) @@ -280,6 +281,38 @@ class InfractionViewSet(CreateModelMixin, RetrieveModelMixin, ListModelMixin, Ge return self.partial_update(*args, **kwargs) +class LogEntryViewSet(CreateModelMixin, GenericViewSet): + """ + View providing support for creating log entries in the site database + for viewing via the log browser. + + ## Routes + ### POST /logs + Create a new log entry. + + #### Request body + >>> { + ... 'application': str, # 'bot' | 'seasonalbot' | 'site' + ... 'logger_name': str, # such as 'bot.cogs.moderation' + ... 'timestamp': Optional[str], # from `datetime.utcnow().isoformat()` + ... 'level': str, # 'debug' | 'info' | 'warning' | 'error' | 'critical' + ... 'module': str, # such as 'pydis_site.apps.api.serializers' + ... 'line': int, # > 0 + ... 'message': str, # textual formatted content of the logline + ... } + + #### Status codes + - 201: returned on success + - 400: if the request body has invalid fields, see the response for details + + ## Authentication + Requires a API token. + """ + + queryset = LogEntry.objects.all() + serializer_class = LogEntrySerializer + + class OffTopicChannelNameViewSet(DestroyModelMixin, ViewSet): """ View of off-topic channel names used by the bot |