diff options
author | 2018-10-21 20:22:11 +0000 | |
---|---|---|
committer | 2018-10-21 20:22:11 +0000 | |
commit | 0232d1a8b4a00c3e03153f0820810397effc9285 (patch) | |
tree | ed6ba70cc3801be8cc513883a532a415f4639e3a | |
parent | Drop extra whitespace. (diff) | |
parent | fixed linting issues (diff) |
Merge branch 'snake_idioms' into 'django'
Snake idioms API
See merge request python-discord/projects/site!44
-rw-r--r-- | api/admin.py | 5 | ||||
-rw-r--r-- | api/migrations/0010_snakeidiom.py | 21 | ||||
-rw-r--r-- | api/migrations/0011_auto_20181020_1904.py | 18 | ||||
-rw-r--r-- | api/models.py | 13 | ||||
-rw-r--r-- | api/serializers.py | 10 | ||||
-rw-r--r-- | api/tests/test_models.py | 5 | ||||
-rw-r--r-- | api/urls.py | 7 | ||||
-rw-r--r-- | api/viewsets.py | 35 |
8 files changed, 104 insertions, 10 deletions
diff --git a/api/admin.py b/api/admin.py index 1ce8d767..829d74ed 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/migrations/0011_auto_20181020_1904.py b/api/migrations/0011_auto_20181020_1904.py new file mode 100644 index 00000000..bb5a6325 --- /dev/null +++ b/api/migrations/0011_auto_20181020_1904.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1.2 on 2018-10-20 19:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0010_snakeidiom'), + ] + + operations = [ + migrations.AlterField( + model_name='snakeidiom', + name='idiom', + field=models.CharField(help_text='A saying about a snake.', max_length=140, primary_key=True, serialize=False), + ), + ] diff --git a/api/models.py b/api/models.py index 7c9b63f5..bb520f8c 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 saying about a snake." + ) + + 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..51d89425 100644 --- a/api/serializers.py +++ b/api/serializers.py @@ -4,8 +4,8 @@ from rest_framework_bulk import BulkSerializerMixin from .models import ( DocumentationLink, Member, OffTopicChannelName, Role, - SnakeFact, SnakeName, - Tag + 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/tests/test_models.py b/api/tests/test_models.py index 55009bf6..af2ef5d5 100644 --- a/api/tests/test_models.py +++ b/api/tests/test_models.py @@ -2,7 +2,9 @@ from django.test import SimpleTestCase from ..models import ( DocumentationLink, Member, ModelReprMixin, - OffTopicChannelName, Role, SnakeFact, SnakeName, Tag + OffTopicChannelName, Role, + SnakeFact, SnakeIdiom, + SnakeName, Tag ) @@ -28,6 +30,7 @@ class StringDunderMethodTests(SimpleTestCase): ), OffTopicChannelName(name='bob-the-builders-playground'), SnakeFact(fact='snakes are cute'), + SnakeIdiom(idiom='snake snacks'), SnakeName(name='python', scientific='3'), Role( id=5, name='test role', 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 c65cbac6..24c2aef9 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 ) @@ -179,8 +181,8 @@ class SnakeFactViewSet(ListModelMixin, GenericViewSet): View providing snake facts created by the Pydis community in the first code jam. ## Routes - ### GET /bot/snake-fact/<fact> - Returns a snake fact in the database. + ### GET /bot/snake-facts + Returns snake facts from the database. #### Response format >>> [ @@ -199,6 +201,31 @@ class SnakeFactViewSet(ListModelMixin, GenericViewSet): queryset = SnakeFact.objects.all() +class SnakeIdiomViewSet(ListModelMixin, GenericViewSet): + """ + View providing 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() + + class SnakeNameViewSet(ViewSet): """ View providing snake names for the bot's snake cog from our first code jam's winners. |