diff options
Diffstat (limited to 'pydis_site/apps')
| -rw-r--r-- | pydis_site/apps/api/admin.py | 9 | ||||
| -rw-r--r-- | pydis_site/apps/api/migrations/0036_removing_snake_apis.py | 25 | ||||
| -rw-r--r-- | pydis_site/apps/api/models/__init__.py | 4 | ||||
| -rw-r--r-- | pydis_site/apps/api/models/bot/__init__.py | 4 | ||||
| -rw-r--r-- | pydis_site/apps/api/models/bot/snake_fact.py | 17 | ||||
| -rw-r--r-- | pydis_site/apps/api/models/bot/snake_idiom.py | 17 | ||||
| -rw-r--r-- | pydis_site/apps/api/models/bot/snake_name.py | 24 | ||||
| -rw-r--r-- | pydis_site/apps/api/models/bot/special_snake.py | 27 | ||||
| -rw-r--r-- | pydis_site/apps/api/serializers.py | 42 | ||||
| -rw-r--r-- | pydis_site/apps/api/tests/test_models.py | 12 | ||||
| -rw-r--r-- | pydis_site/apps/api/tests/test_snake_names.py | 67 | ||||
| -rw-r--r-- | pydis_site/apps/api/urls.py | 23 | ||||
| -rw-r--r-- | pydis_site/apps/api/viewsets/__init__.py | 4 | ||||
| -rw-r--r-- | pydis_site/apps/api/viewsets/bot/__init__.py | 4 | ||||
| -rw-r--r-- | pydis_site/apps/api/viewsets/bot/snake_fact.py | 30 | ||||
| -rw-r--r-- | pydis_site/apps/api/viewsets/bot/snake_idiom.py | 30 | ||||
| -rw-r--r-- | pydis_site/apps/api/viewsets/bot/snake_name.py | 67 | ||||
| -rw-r--r-- | pydis_site/apps/api/viewsets/bot/special_snake.py | 33 | 
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() | 
