From d9e4385b8871e9388f9305e4dc84bae04e3f688e Mon Sep 17 00:00:00 2001 From: Janusz Kamienski Date: Sat, 14 Nov 2020 18:10:49 +0100 Subject: [PATCH] added virtual tables and tables API endpoint --- api/urls.py | 1 + games/api/serializers.py | 9 ++++++++- games/api/views.py | 10 ++++++++-- games/migrations/0015_table_virtual.py | 18 ++++++++++++++++++ games/models.py | 1 + 5 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 games/migrations/0015_table_virtual.py diff --git a/api/urls.py b/api/urls.py index 1b2dfbe..45662a4 100644 --- a/api/urls.py +++ b/api/urls.py @@ -9,6 +9,7 @@ router.register("characters", profiles_views.PlayerCharacterViewSet) router.register("profiles", profiles_views.ProfileViewSet) router.register("adventures", games_views.AdventuresViewSet) +router.register("tables", games_views.TablesViewSet) router.register("games/list", games_views.GameSessionViewSet) router.register("games/future", games_views.FutureGameSessionViewSet) router.register("games/past", games_views.PastGameSessionViewSet) diff --git a/games/api/serializers.py b/games/api/serializers.py index 1ad1e9c..96f15a7 100644 --- a/games/api/serializers.py +++ b/games/api/serializers.py @@ -1,7 +1,7 @@ from rest_framework import serializers from profiles.api.serializers import PublicProfileSerializer, PublicPlayerCharacterSerializer -from ..models import Adventure, GameSession, GameSessionPlayerSignUp +from ..models import Adventure, GameSession, GameSessionPlayerSignUp, Table class AdventureSerializer(serializers.ModelSerializer): @@ -19,6 +19,13 @@ def get_tier(self, adventure): return adventure.get_tier_display() +class TableSerializer(serializers.ModelSerializer): + + class Meta: + model = Table + fields = ("id", "name", "virtual") + + class GameSessionPlayerSignUpSerializer(serializers.ModelSerializer): profile = PublicProfileSerializer(source="player", read_only=True) character = PublicPlayerCharacterSerializer() diff --git a/games/api/views.py b/games/api/views.py index ae265a0..ce70e95 100644 --- a/games/api/views.py +++ b/games/api/views.py @@ -7,8 +7,8 @@ from profiles.models import PlayerCharacter from .filters import AdventureFilter, GameSessionFilter -from .serializers import AdventureSerializer, GameSessionSerializer, GameSessionBookSerializer -from ..models import Adventure, GameSession, GameSessionPlayerSignUp +from .serializers import AdventureSerializer, GameSessionSerializer, GameSessionBookSerializer, TableSerializer +from ..models import Adventure, GameSession, GameSessionPlayerSignUp, Table class AdventuresViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet): @@ -22,6 +22,12 @@ class AdventuresViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewse ordering = ("season", "number", "title") +class TablesViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): + serializer_class = TableSerializer + queryset = Table.objects.all() + permission_classes = [IsAuthenticated] + + class GameSessionViewSet( mixins.ListModelMixin, mixins.RetrieveModelMixin, mixins.UpdateModelMixin, viewsets.GenericViewSet ): diff --git a/games/migrations/0015_table_virtual.py b/games/migrations/0015_table_virtual.py new file mode 100644 index 0000000..cbe6bde --- /dev/null +++ b/games/migrations/0015_table_virtual.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.9 on 2020-11-14 17:08 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('games', '0014_table_extra_notes'), + ] + + operations = [ + migrations.AddField( + model_name='table', + name='virtual', + field=models.BooleanField(default=False, verbose_name='Is only virtual'), + ), + ] diff --git a/games/models.py b/games/models.py index 538a464..59bf2b5 100644 --- a/games/models.py +++ b/games/models.py @@ -31,6 +31,7 @@ class Table(UUIDModel): name = models.CharField(_("Table name"), max_length=100) extra_notes = models.TextField("Table extra notes", blank=True) max_spots = models.PositiveIntegerField(_("Maximum spots"), default=1) + virtual = models.BooleanField(_("Is only virtual"), default=False) class Meta: verbose_name = _("Table")