aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/admin.py5
-rw-r--r--api/migrations/0010_snakeidiom.py21
-rw-r--r--api/models.py13
-rw-r--r--api/serializers.py8
-rw-r--r--api/urls.py7
-rw-r--r--api/viewsets.py11
6 files changed, 59 insertions, 6 deletions
diff --git a/api/admin.py b/api/admin.py
index 1ce8d767..de544b52 100644
--- a/api/admin.py
+++ b/api/admin.py
@@ -3,8 +3,8 @@ from django.contrib import admin
from .models import (
DocumentationLink, Member,
OffTopicChannelName, Role,
- SnakeFact, SnakeName,
- Tag
+ SnakeFact, SnakeIdiom,
+ SnakeName, Tag
)
@@ -13,5 +13,6 @@ admin.site.register(Member)
admin.site.register(OffTopicChannelName)
admin.site.register(Role)
admin.site.register(SnakeFact)
+admin.site.register(SnakeIdiom)
admin.site.register(SnakeName)
admin.site.register(Tag)
diff --git a/api/migrations/0010_snakeidiom.py b/api/migrations/0010_snakeidiom.py
new file mode 100644
index 00000000..982a9466
--- /dev/null
+++ b/api/migrations/0010_snakeidiom.py
@@ -0,0 +1,21 @@
+# Generated by Django 2.1.2 on 2018-10-19 16:27
+
+import api.models
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('api', '0009_snakefact'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='SnakeIdiom',
+ fields=[
+ ('idiom', models.CharField(help_text='A snake idiom', max_length=140, primary_key=True, serialize=False)),
+ ],
+ bases=(api.models.ModelReprMixin, models.Model),
+ ),
+ ]
diff --git a/api/models.py b/api/models.py
index 7c9b63f5..81cd63aa 100644
--- a/api/models.py
+++ b/api/models.py
@@ -73,6 +73,19 @@ class SnakeFact(ModelReprMixin, models.Model):
return self.fact
+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 snake idiom"
+ )
+
+ def __str__(self):
+ return self.idiom
+
+
class SnakeName(ModelReprMixin, models.Model):
"""A snake name used by the bot's snake cog."""
diff --git a/api/serializers.py b/api/serializers.py
index fe2ab2f1..fae5abd9 100644
--- a/api/serializers.py
+++ b/api/serializers.py
@@ -4,7 +4,7 @@ from rest_framework_bulk import BulkSerializerMixin
from .models import (
DocumentationLink, Member,
OffTopicChannelName, Role,
- SnakeFact, SnakeName,
+ SnakeFact, SnakeIdiom, SnakeName,
Tag
)
@@ -30,6 +30,12 @@ class SnakeFactSerializer(ModelSerializer):
fields = ('fact',)
+class SnakeIdiomSerializer(ModelSerializer):
+ class Meta:
+ model = SnakeIdiom
+ fields = ('idiom',)
+
+
class SnakeNameSerializer(ModelSerializer):
class Meta:
model = SnakeName
diff --git a/api/urls.py b/api/urls.py
index 40883c64..4f1b2455 100644
--- a/api/urls.py
+++ b/api/urls.py
@@ -4,7 +4,8 @@ from rest_framework.routers import DefaultRouter
from .views import HealthcheckView
from .viewsets import (
DocumentationLinkViewSet, MemberViewSet,
- OffTopicChannelNameViewSet, SnakeFactViewSet, SnakeNameViewSet,
+ OffTopicChannelNameViewSet, SnakeFactViewSet,
+ SnakeIdiomViewSet, SnakeNameViewSet,
TagViewSet
)
@@ -29,6 +30,10 @@ bot_router.register(
SnakeFactViewSet,
)
bot_router.register(
+ 'snake-idioms',
+ SnakeIdiomViewSet
+)
+bot_router.register(
'snake-names',
SnakeNameViewSet,
base_name='snakename'
diff --git a/api/viewsets.py b/api/viewsets.py
index 22862c16..a9294109 100644
--- a/api/viewsets.py
+++ b/api/viewsets.py
@@ -12,12 +12,14 @@ from rest_framework_bulk import BulkCreateModelMixin
from .models import (
DocumentationLink, Member,
OffTopicChannelName, SnakeFact,
- SnakeName, Tag
+ SnakeIdiom, SnakeName,
+ Tag
)
from .serializers import (
DocumentationLinkSerializer, MemberSerializer,
OffTopicChannelNameSerializer, SnakeFactSerializer,
- SnakeNameSerializer, TagSerializer
+ SnakeIdiomSerializer, SnakeNameSerializer,
+ TagSerializer
)
@@ -199,6 +201,11 @@ class SnakeFactViewSet(ListModelMixin, GenericViewSet):
queryset = SnakeFact.objects.all()
+class SnakeIdiomViewSet(ListModelMixin, GenericViewSet):
+ serializer_class = SnakeIdiomSerializer
+ queryset = SnakeIdiom.objects.all()
+
+
class SnakeNameViewSet(ViewSet):
"""
View providing snake names for the bot's snake cog from our first code jam's winners.