aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pydis_site/apps/api/admin.py9
-rw-r--r--pydis_site/apps/api/migrations/0036_removing_snake_apis.py25
-rw-r--r--pydis_site/apps/api/models/__init__.py4
-rw-r--r--pydis_site/apps/api/models/bot/__init__.py4
-rw-r--r--pydis_site/apps/api/models/bot/snake_fact.py17
-rw-r--r--pydis_site/apps/api/models/bot/snake_idiom.py17
-rw-r--r--pydis_site/apps/api/models/bot/snake_name.py24
-rw-r--r--pydis_site/apps/api/models/bot/special_snake.py27
-rw-r--r--pydis_site/apps/api/serializers.py42
-rw-r--r--pydis_site/apps/api/tests/test_models.py12
-rw-r--r--pydis_site/apps/api/tests/test_snake_names.py67
-rw-r--r--pydis_site/apps/api/urls.py23
-rw-r--r--pydis_site/apps/api/viewsets/__init__.py4
-rw-r--r--pydis_site/apps/api/viewsets/bot/__init__.py4
-rw-r--r--pydis_site/apps/api/viewsets/bot/snake_fact.py30
-rw-r--r--pydis_site/apps/api/viewsets/bot/snake_idiom.py30
-rw-r--r--pydis_site/apps/api/viewsets/bot/snake_name.py67
-rw-r--r--pydis_site/apps/api/viewsets/bot/special_snake.py33
18 files changed, 28 insertions, 411 deletions
diff --git a/pydis_site/apps/api/admin.py b/pydis_site/apps/api/admin.py
index 3ae7f3c5..b6021f7c 100644
--- a/pydis_site/apps/api/admin.py
+++ b/pydis_site/apps/api/admin.py
@@ -4,10 +4,7 @@ from .models import (
BotSetting, DeletedMessage,
DocumentationLink, Infraction,
MessageDeletionContext, OffTopicChannelName,
- Role, SnakeFact,
- SnakeIdiom, SnakeName,
- SpecialSnake, Tag,
- User
+ Role, Tag, User
)
@@ -18,9 +15,5 @@ admin.site.register(Infraction)
admin.site.register(MessageDeletionContext)
admin.site.register(OffTopicChannelName)
admin.site.register(Role)
-admin.site.register(SnakeFact)
-admin.site.register(SnakeIdiom)
-admin.site.register(SnakeName)
-admin.site.register(SpecialSnake)
admin.site.register(Tag)
admin.site.register(User)
diff --git a/pydis_site/apps/api/migrations/0036_removing_snake_apis.py b/pydis_site/apps/api/migrations/0036_removing_snake_apis.py
new file mode 100644
index 00000000..624afc95
--- /dev/null
+++ b/pydis_site/apps/api/migrations/0036_removing_snake_apis.py
@@ -0,0 +1,25 @@
+# Generated by Django 2.2.3 on 2019-07-10 09:07
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('api', '0035_create_table_log_entry'),
+ ]
+
+ operations = [
+ migrations.DeleteModel(
+ name='SnakeFact',
+ ),
+ migrations.DeleteModel(
+ name='SnakeIdiom',
+ ),
+ migrations.DeleteModel(
+ name='SnakeName',
+ ),
+ migrations.DeleteModel(
+ name='SpecialSnake',
+ ),
+ ]
diff --git a/pydis_site/apps/api/models/__init__.py b/pydis_site/apps/api/models/__init__.py
index 4645bda2..a7eccb04 100644
--- a/pydis_site/apps/api/models/__init__.py
+++ b/pydis_site/apps/api/models/__init__.py
@@ -9,10 +9,6 @@ from .bot import ( # noqa
OffTopicChannelName,
Reminder,
Role,
- SnakeFact,
- SnakeIdiom,
- SnakeName,
- SpecialSnake,
Tag,
User
)
diff --git a/pydis_site/apps/api/models/bot/__init__.py b/pydis_site/apps/api/models/bot/__init__.py
index fb313193..b805924a 100644
--- a/pydis_site/apps/api/models/bot/__init__.py
+++ b/pydis_site/apps/api/models/bot/__init__.py
@@ -8,9 +8,5 @@ from .nomination import Nomination # noqa
from .off_topic_channel_name import OffTopicChannelName # noqa
from .reminder import Reminder # noqa
from .role import Role # noqa
-from .snake_fact import SnakeFact # noqa
-from .snake_idiom import SnakeIdiom # noqa
-from .snake_name import SnakeName # noqa
-from .special_snake import SpecialSnake # noqa
from .tag import Tag # noqa
from .user import User # noqa
diff --git a/pydis_site/apps/api/models/bot/snake_fact.py b/pydis_site/apps/api/models/bot/snake_fact.py
deleted file mode 100644
index e4486d41..00000000
--- a/pydis_site/apps/api/models/bot/snake_fact.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from django.db import models
-
-from pydis_site.apps.api.models.utils import ModelReprMixin
-
-
-class SnakeFact(ModelReprMixin, models.Model):
- """A snake fact used by the bot's snake cog."""
-
- fact = models.CharField(
- primary_key=True,
- max_length=200,
- help_text="A fact about snakes."
- )
-
- def __str__(self):
- """Returns the current snake fact, for display purposes."""
- return self.fact
diff --git a/pydis_site/apps/api/models/bot/snake_idiom.py b/pydis_site/apps/api/models/bot/snake_idiom.py
deleted file mode 100644
index 73ce25eb..00000000
--- a/pydis_site/apps/api/models/bot/snake_idiom.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from django.db import models
-
-from pydis_site.apps.api.models.utils import ModelReprMixin
-
-
-class SnakeIdiom(ModelReprMixin, models.Model):
- """A snake idiom used by the snake cog."""
-
- idiom = models.CharField(
- primary_key=True,
- max_length=140,
- help_text="A saying about a snake."
- )
-
- def __str__(self):
- """Returns the current idiom, for display purposes."""
- return self.idiom
diff --git a/pydis_site/apps/api/models/bot/snake_name.py b/pydis_site/apps/api/models/bot/snake_name.py
deleted file mode 100644
index 6d33f872..00000000
--- a/pydis_site/apps/api/models/bot/snake_name.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from django.core.validators import RegexValidator
-from django.db import models
-
-from pydis_site.apps.api.models.utils import ModelReprMixin
-
-
-class SnakeName(ModelReprMixin, models.Model):
- """A snake name used by the bot's snake cog."""
-
- name = models.CharField(
- primary_key=True,
- max_length=100,
- help_text="The regular name for this snake, e.g. 'Python'.",
- validators=[RegexValidator(regex=r'^([^0-9])+$')]
- )
- scientific = models.CharField(
- max_length=150,
- help_text="The scientific name for this snake, e.g. 'Python bivittatus'.",
- validators=[RegexValidator(regex=r'^([^0-9])+$')]
- )
-
- def __str__(self):
- """Returns the regular and scientific name of the current snake, for display purposes."""
- return f"{self.name} ({self.scientific})"
diff --git a/pydis_site/apps/api/models/bot/special_snake.py b/pydis_site/apps/api/models/bot/special_snake.py
deleted file mode 100644
index 5d38ab6f..00000000
--- a/pydis_site/apps/api/models/bot/special_snake.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from django.contrib.postgres import fields as pgfields
-from django.core.validators import RegexValidator
-from django.db import models
-
-from pydis_site.apps.api.models.utils import ModelReprMixin
-
-
-class SpecialSnake(ModelReprMixin, models.Model):
- """A special snake's name, info and image from our database used by the bot's snake cog."""
-
- name = models.CharField(
- max_length=140,
- primary_key=True,
- help_text='A special snake name.',
- validators=[RegexValidator(regex=r'^([^0-9])+$')]
- )
- info = models.TextField(
- help_text='Info about a special snake.'
- )
- images = pgfields.ArrayField(
- models.URLField(),
- help_text='Images displaying this special snake.'
- )
-
- def __str__(self):
- """Returns the name of the current snake, for display purposes."""
- return self.name
diff --git a/pydis_site/apps/api/serializers.py b/pydis_site/apps/api/serializers.py
index 19d4ab8c..f5cfb1e6 100644
--- a/pydis_site/apps/api/serializers.py
+++ b/pydis_site/apps/api/serializers.py
@@ -9,8 +9,6 @@ from .models import (
LogEntry, MessageDeletionContext,
Nomination, OffTopicChannelName,
Reminder, Role,
- SnakeFact, SnakeIdiom,
- SnakeName, SpecialSnake,
Tag, User
)
@@ -178,46 +176,6 @@ class OffTopicChannelNameSerializer(ModelSerializer):
return obj.name
-class SnakeFactSerializer(ModelSerializer):
- """A class providing (de-)serialization of `SnakeFact` instances."""
-
- class Meta:
- """Metadata defined for the Django REST Framework."""
-
- model = SnakeFact
- fields = ('fact',)
-
-
-class SnakeIdiomSerializer(ModelSerializer):
- """A class providing (de-)serialization of `SnakeIdiom` instances."""
-
- class Meta:
- """Metadata defined for the Django REST Framework."""
-
- model = SnakeIdiom
- fields = ('idiom',)
-
-
-class SnakeNameSerializer(ModelSerializer):
- """A class providing (de-)serialization of `SnakeName` instances."""
-
- class Meta:
- """Metadata defined for the Django REST Framework."""
-
- model = SnakeName
- fields = ('name', 'scientific')
-
-
-class SpecialSnakeSerializer(ModelSerializer):
- """A class providing (de-)serialization of `SpecialSnake` instances."""
-
- class Meta:
- """Metadata defined for the Django REST Framework."""
-
- model = SpecialSnake
- fields = ('name', 'images', 'info')
-
-
class ReminderSerializer(ModelSerializer):
"""A class providing (de-)serialization of `Reminder` instances."""
diff --git a/pydis_site/apps/api/tests/test_models.py b/pydis_site/apps/api/tests/test_models.py
index a958419d..cfc8464e 100644
--- a/pydis_site/apps/api/tests/test_models.py
+++ b/pydis_site/apps/api/tests/test_models.py
@@ -7,10 +7,7 @@ from ..models import (
Infraction, Message,
MessageDeletionContext, ModelReprMixin,
OffTopicChannelName, Reminder,
- Role, SnakeFact,
- SnakeIdiom, SnakeName,
- SpecialSnake, Tag,
- User
+ Role, Tag, User
)
@@ -52,13 +49,6 @@ class StringDunderMethodTests(SimpleTestCase):
'test', 'http://example.com', 'http://example.com'
),
OffTopicChannelName(name='bob-the-builders-playground'),
- SnakeFact(fact='snakes are cute'),
- SnakeIdiom(idiom='snake snacks'),
- SnakeName(name='python', scientific='3'),
- SpecialSnake(
- name='Pythagoras Pythonista',
- info='The only python snake that is born a triangle'
- ),
Role(
id=5, name='test role',
colour=0x5, permissions=0
diff --git a/pydis_site/apps/api/tests/test_snake_names.py b/pydis_site/apps/api/tests/test_snake_names.py
deleted file mode 100644
index 41dfae63..00000000
--- a/pydis_site/apps/api/tests/test_snake_names.py
+++ /dev/null
@@ -1,67 +0,0 @@
-from django_hosts.resolvers import reverse
-
-from .base import APISubdomainTestCase
-from ..models import SnakeName
-
-
-class StatusTests(APISubdomainTestCase):
- def setUp(self):
- super().setUp()
- self.client.force_authenticate(user=None)
-
- def test_cannot_read_snake_name_list(self):
- url = reverse('bot:snakename-list', host='api')
- response = self.client.get(url)
-
- self.assertEqual(response.status_code, 401)
-
- def test_cannot_read_snake_names_with_get_all_param(self):
- url = reverse('bot:snakename-list', host='api')
- response = self.client.get(f'{url}?get_all=True')
-
- self.assertEqual(response.status_code, 401)
-
-
-class EmptyDatabaseSnakeNameTests(APISubdomainTestCase):
- def test_endpoint_returns_empty_object(self):
- url = reverse('bot:snakename-list', host='api')
- response = self.client.get(url)
-
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.json(), {})
-
- def test_endpoint_returns_empty_list_with_get_all_param(self):
- url = reverse('bot:snakename-list', host='api')
- response = self.client.get(f'{url}?get_all=True')
-
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.json(), [])
-
-
-class SnakeNameListTests(APISubdomainTestCase):
- @classmethod
- def setUpTestData(cls): # noqa
- cls.snake_python = SnakeName.objects.create(name='Python', scientific='Totally.')
-
- def test_endpoint_returns_all_snakes_with_get_all_param(self):
- url = reverse('bot:snakename-list', host='api')
- response = self.client.get(f'{url}?get_all=True')
-
- self.assertEqual(response.status_code, 200)
- self.assertEqual(
- response.json(),
- [
- {
- 'name': self.snake_python.name,
- 'scientific': self.snake_python.scientific
- }
- ]
- )
-
- def test_endpoint_returns_single_snake_without_get_all_param(self):
- url = reverse('bot:snakename-list', host='api')
- response = self.client.get(url)
- self.assertEqual(response.json(), {
- 'name': self.snake_python.name,
- 'scientific': self.snake_python.scientific
- })
diff --git a/pydis_site/apps/api/urls.py b/pydis_site/apps/api/urls.py
index 724d7e2b..ac6704c8 100644
--- a/pydis_site/apps/api/urls.py
+++ b/pydis_site/apps/api/urls.py
@@ -7,10 +7,7 @@ from .viewsets import (
DocumentationLinkViewSet, InfractionViewSet,
LogEntryViewSet, NominationViewSet,
OffTopicChannelNameViewSet, ReminderViewSet,
- RoleViewSet, SnakeFactViewSet,
- SnakeIdiomViewSet, SnakeNameViewSet,
- SpecialSnakeViewSet, TagViewSet,
- UserViewSet
+ RoleViewSet, TagViewSet, UserViewSet
)
@@ -50,23 +47,6 @@ bot_router.register(
RoleViewSet
)
bot_router.register(
- 'snake-facts',
- SnakeFactViewSet
-)
-bot_router.register(
- 'snake-idioms',
- SnakeIdiomViewSet
-)
-bot_router.register(
- 'snake-names',
- SnakeNameViewSet,
- base_name='snakename'
-)
-bot_router.register(
- 'special-snakes',
- SpecialSnakeViewSet
-)
-bot_router.register(
'tags',
TagViewSet
)
@@ -80,7 +60,6 @@ urlpatterns = (
# Build URLs using something like...
#
# from django_hosts.resolvers import reverse
- # snake_name_endpoint = reverse('bot:snakename-list', host='api') # `bot/` endpoints
path('bot/', include((bot_router.urls, 'api'), namespace='bot')),
path('logs', LogEntryViewSet.as_view({'post': 'create'}), name='logs'),
path('healthcheck', HealthcheckView.as_view(), name='healthcheck'),
diff --git a/pydis_site/apps/api/viewsets/__init__.py b/pydis_site/apps/api/viewsets/__init__.py
index 553ca2c3..224e6910 100644
--- a/pydis_site/apps/api/viewsets/__init__.py
+++ b/pydis_site/apps/api/viewsets/__init__.py
@@ -7,10 +7,6 @@ from .bot import ( # noqa
OffTopicChannelNameViewSet,
ReminderViewSet,
RoleViewSet,
- SnakeFactViewSet,
- SnakeIdiomViewSet,
- SnakeNameViewSet,
- SpecialSnakeViewSet,
TagViewSet,
UserViewSet
)
diff --git a/pydis_site/apps/api/viewsets/bot/__init__.py b/pydis_site/apps/api/viewsets/bot/__init__.py
index 8e7d1290..465ba5f4 100644
--- a/pydis_site/apps/api/viewsets/bot/__init__.py
+++ b/pydis_site/apps/api/viewsets/bot/__init__.py
@@ -6,9 +6,5 @@ from .nomination import NominationViewSet # noqa
from .off_topic_channel_name import OffTopicChannelNameViewSet # noqa
from .reminder import ReminderViewSet # noqa
from .role import RoleViewSet # noqa
-from .snake_fact import SnakeFactViewSet # noqa
-from .snake_idiom import SnakeIdiomViewSet # noqa
-from .snake_name import SnakeNameViewSet # noqa
-from .special_snake import SpecialSnakeViewSet # noqa
from .tag import TagViewSet # noqa
from .user import UserViewSet # noqa
diff --git a/pydis_site/apps/api/viewsets/bot/snake_fact.py b/pydis_site/apps/api/viewsets/bot/snake_fact.py
deleted file mode 100644
index 0b2e8ede..00000000
--- a/pydis_site/apps/api/viewsets/bot/snake_fact.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from rest_framework.mixins import ListModelMixin
-from rest_framework.viewsets import GenericViewSet
-
-from pydis_site.apps.api.models.bot.snake_fact import SnakeFact
-from pydis_site.apps.api.serializers import SnakeFactSerializer
-
-
-class SnakeFactViewSet(ListModelMixin, GenericViewSet):
- """
- View providing snake facts created by the Pydis community in the first code jam.
-
- ## Routes
- ### GET /bot/snake-facts
- Returns snake facts from the database.
-
- #### Response format
- >>> [
- ... {'fact': 'Snakes are dangerous'},
- ... {'fact': 'Except for Python, we all love it'}
- ... ]
-
- #### Status codes
- - 200: returned on success
-
- ## Authentication
- Requires an API token.
- """
-
- serializer_class = SnakeFactSerializer
- queryset = SnakeFact.objects.all()
diff --git a/pydis_site/apps/api/viewsets/bot/snake_idiom.py b/pydis_site/apps/api/viewsets/bot/snake_idiom.py
deleted file mode 100644
index 9f274d2f..00000000
--- a/pydis_site/apps/api/viewsets/bot/snake_idiom.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from rest_framework.mixins import ListModelMixin
-from rest_framework.viewsets import GenericViewSet
-
-from pydis_site.apps.api.models.bot.snake_idiom import SnakeIdiom
-from pydis_site.apps.api.serializers import SnakeIdiomSerializer
-
-
-class SnakeIdiomViewSet(ListModelMixin, GenericViewSet):
- """
- View providing snake idioms for the snake cog.
-
- ## Routes
- ### GET /bot/snake-idioms
- Returns snake idioms from the database.
-
- #### Response format
- >>> [
- ... {'idiom': 'Sneky snek'},
- ... {'idiom': 'Snooky Snake'}
- ... ]
-
- #### Status codes
- - 200: returned on success
-
- ## Authentication
- Requires an API token
- """
-
- serializer_class = SnakeIdiomSerializer
- queryset = SnakeIdiom.objects.all()
diff --git a/pydis_site/apps/api/viewsets/bot/snake_name.py b/pydis_site/apps/api/viewsets/bot/snake_name.py
deleted file mode 100644
index 113c6899..00000000
--- a/pydis_site/apps/api/viewsets/bot/snake_name.py
+++ /dev/null
@@ -1,67 +0,0 @@
-from rest_framework.response import Response
-from rest_framework.viewsets import ViewSet
-
-from pydis_site.apps.api.models.bot.snake_name import SnakeName
-from pydis_site.apps.api.serializers import SnakeNameSerializer
-
-
-class SnakeNameViewSet(ViewSet):
- """
- View providing snake names for the bot's snake cog from our first code jam's winners.
-
- ## Routes
- ### GET /bot/snake-names
- By default, return a single random snake name along with its name and scientific name.
- If the `get_all` query parameter is given, for example using...
- $ curl api.pythondiscord.local:8000/bot/snake-names?get_all=yes
- ... then the API will return all snake names and scientific names in the database.
-
- #### Response format
- Without `get_all` query parameter:
- >>> {
- ... 'name': "Python",
- ... 'scientific': "Langus greatus"
- ... }
-
- If the database is empty for whatever reason, this will return an empty dictionary.
-
- With `get_all` query parameter:
- >>> [
- ... {'name': "Python 3", 'scientific': "Langus greatus"},
- ... {'name': "Python 2", 'scientific': "Langus decentus"}
- ... ]
-
- #### Status codes
- - 200: returned on success
-
- ## Authentication
- Requires a API token.
- """
-
- serializer_class = SnakeNameSerializer
-
- def get_queryset(self):
- """Returns a queryset that covers the entire SnakeName table."""
- return SnakeName.objects.all()
-
- def list(self, request):
- """
- DRF method for listing SnakeName entries.
-
- Called by the Django Rest Framework in response to the corresponding HTTP request.
- """
- if request.query_params.get('get_all'):
- queryset = self.get_queryset()
- serialized = self.serializer_class(queryset, many=True)
- return Response(serialized.data)
-
- single_snake = SnakeName.objects.order_by('?').first()
- if single_snake is not None:
- body = {
- 'name': single_snake.name,
- 'scientific': single_snake.scientific
- }
-
- return Response(body)
-
- return Response({})
diff --git a/pydis_site/apps/api/viewsets/bot/special_snake.py b/pydis_site/apps/api/viewsets/bot/special_snake.py
deleted file mode 100644
index 446c79a1..00000000
--- a/pydis_site/apps/api/viewsets/bot/special_snake.py
+++ /dev/null
@@ -1,33 +0,0 @@
-from rest_framework.mixins import ListModelMixin
-from rest_framework.viewsets import GenericViewSet
-
-from pydis_site.apps.api.models.bot import SpecialSnake
-from pydis_site.apps.api.serializers import SpecialSnakeSerializer
-
-
-class SpecialSnakeViewSet(ListModelMixin, GenericViewSet):
- """
- View providing special snake names for our bot's snake cog.
-
- ## Routes
- ### GET /bot/special-snakes
- Returns a list of special snake names.
-
- #### Response Format
- >>> [
- ... {
- ... 'name': 'Snakky sneakatus',
- ... 'info': 'Scary snek',
- ... 'image': 'https://discordapp.com/assets/53ef346458017da2062aca5c7955946b.svg'
- ... }
- ... ]
-
- #### Status codes
- - 200: returned on success
-
- ## Authentication
- Requires an API token.
- """
-
- serializer_class = SpecialSnakeSerializer
- queryset = SpecialSnake.objects.all()