[api] Add many missing API endpoints

This commit is contained in:
2025-11-17 16:00:10 -05:00
parent 749e74a54c
commit 8603bbd5cb
25 changed files with 317 additions and 0 deletions

View File

View File

@ -0,0 +1,18 @@
from rest_framework import serializers
from beers.models import Beer, BeerProducer, BeerStyle
class BeerSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Beer
fields = "__all__"
class BeerProducerSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = BeerProducer
fields = "__all__"
class BeerStyleSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = BeerStyle
fields = "__all__"

View File

@ -0,0 +1,19 @@
from rest_framework import permissions, viewsets
from beers.api import serializers
from beers import models
class BeerViewSet(viewsets.ModelViewSet):
queryset = models.Beer.objects.all().order_by("-created")
serializer_class = serializers.BeerSerializer
permission_classes = [permissions.IsAuthenticated]
class BeerProducerViewSet(viewsets.ModelViewSet):
queryset = models.BeerProducer.objects.all().order_by("-created")
serializer_class = serializers.BeerProducerSerializer
permission_classes = [permissions.IsAuthenticated]
class BeerStyleViewSet(viewsets.ModelViewSet):
queryset = models.BeerStyle.objects.all().order_by("-created")
serializer_class = serializers.BeerStyleSerializer
permission_classes = [permissions.IsAuthenticated]

View File

@ -0,0 +1,22 @@
from boardgames import models
from rest_framework import serializers
class BoardGameDesignerSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.BoardGameDesigner
fields = "__all__"
class BoardGamePublisherSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.BoardGamePublisher
fields = "__all__"
class BoardGameLocationSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.BoardGameLocation
fields = "__all__"
class BoardGameSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.BoardGame
fields = "__all__"

View File

@ -0,0 +1,28 @@
from rest_framework import permissions, viewsets
from boardgames.api import serializers
from boardgames import models
class BoardGameDesignerViewSet(viewsets.ModelViewSet):
queryset = models.BoardGameDesigner.objects.all().order_by("-created")
serializer_class = serializers.BoardGameDesignerSerializer
permission_classes = [permissions.IsAuthenticated]
class BoardGamePublisherViewSet(viewsets.ModelViewSet):
queryset = models.BoardGamePublisher.objects.all().order_by("-created")
serializer_class = serializers.BoardGamePublisherSerializer
permission_classes = [permissions.IsAuthenticated]
class BoardGameLocationViewSet(viewsets.ModelViewSet):
queryset = models.BoardGameLocation.objects.all().order_by("-created")
serializer_class = serializers.BoardGameLocationSerializer
permission_classes = [permissions.IsAuthenticated]
class BoardGameViewSet(viewsets.ModelViewSet):
queryset = models.BoardGame.objects.all().order_by("-created")
serializer_class = serializers.BoardGameSerializer
permission_classes = [permissions.IsAuthenticated]

View File

View File

@ -0,0 +1,8 @@
from rest_framework import serializers
from bricksets.models import BrickSet
class BrickSetSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = BrickSet
fields = "__all__"

View File

@ -0,0 +1,9 @@
from rest_framework import permissions, viewsets
from bricksets.api.serializers import BrickSetSerializer
from bricksets.models import BrickSet
class BrickSetViewSet(viewsets.ModelViewSet):
queryset = BrickSet.objects.all().order_by("-created")
serializer_class = BrickSetSerializer
permission_classes = [permissions.IsAuthenticated]

View File

View File

@ -0,0 +1,14 @@
from rest_framework import serializers
from foods import models
class FoodCategorySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.FoodCategory
fields = "__all__"
class FoodSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.Food
fields = "__all__"

View File

@ -0,0 +1,21 @@
from rest_framework import permissions, viewsets
from foods.api.serializers import (
FoodSerializer,
FoodCategorySerializer,
)
from foods.models import (
FoodCategory,
Food,
)
class FoodCategoryViewSet(viewsets.ModelViewSet):
queryset = FoodCategory.objects.all().order_by("-created")
serializer_class = FoodCategorySerializer
permission_classes = [permissions.IsAuthenticated]
class FoodViewSet(viewsets.ModelViewSet):
queryset = Food.objects.all().order_by("-created")
serializer_class = FoodSerializer
permission_classes = [permissions.IsAuthenticated]

View File

@ -0,0 +1,8 @@
from locations import models
from rest_framework import serializers
class GeoLocationSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.GeoLocation
fields = "__all__"

View File

@ -0,0 +1,9 @@
from rest_framework import permissions, viewsets
from locations.api import serializers
from locations import models
class GeoLocationViewSet(viewsets.ModelViewSet):
queryset = models.GeoLocation.objects.all().order_by("-created")
serializer_class = serializers.GeoLocationSerializer
permission_classes = [permissions.IsAuthenticated]

View File

View File

@ -0,0 +1,8 @@
from rest_framework import serializers
from moods.models import Mood
class MoodSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Mood
fields = "__all__"

View File

@ -0,0 +1,9 @@
from rest_framework import permissions, viewsets
from moods.api.serializers import MoodSerializer
from moods.models import Mood
class MoodViewSet(viewsets.ModelViewSet):
queryset = Mood.objects.all().order_by("-created")
serializer_class = MoodSerializer
permission_classes = [permissions.IsAuthenticated]

View File

@ -0,0 +1,17 @@
from podcasts import models
from rest_framework import serializers
class ProducerSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.Producer
fields = "__all__"
class PodcastEpisodeSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.PodcastEpisode
fields = "__all__"
class PodcastSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.Podcast
fields = "__all__"

View File

@ -0,0 +1,20 @@
from rest_framework import permissions, viewsets
from podcasts.api import serializers
from podcasts import models
class ProducerViewSet(viewsets.ModelViewSet):
queryset = models.Producer.objects.all().order_by("-created")
serializer_class = serializers.ProducerSerializer
permission_classes = [permissions.IsAuthenticated]
class PodcastViewSet(viewsets.ModelViewSet):
queryset = models.Podcast.objects.all().order_by("-created")
serializer_class = serializers.PodcastSerializer
permission_classes = [permissions.IsAuthenticated]
class PodcastEpisodeViewSet(viewsets.ModelViewSet):
queryset = models.PodcastEpisode.objects.all().order_by("-created")
serializer_class = serializers.PodcastEpisodeSerializer
permission_classes = [permissions.IsAuthenticated]

View File

@ -0,0 +1,12 @@
from puzzles import models
from rest_framework import serializers
class PuzzleManufacturerSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.PuzzleManufacturer
fields = "__all__"
class PuzzleSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.Puzzle
fields = "__all__"

View File

@ -0,0 +1,15 @@
from rest_framework import permissions, viewsets
from puzzles.api import serializers
from puzzles import models
class PuzzleManufacturerViewSet(viewsets.ModelViewSet):
queryset = models.PuzzleManufacturer.objects.all().order_by("-created")
serializer_class = serializers.PuzzleManufacturerSerializer
permission_classes = [permissions.IsAuthenticated]
class PuzzleViewSet(viewsets.ModelViewSet):
queryset = models.Puzzle.objects.all().order_by("-created")
serializer_class = serializers.PuzzleSerializer
permission_classes = [permissions.IsAuthenticated]

View File

@ -0,0 +1,8 @@
from tasks import models
from rest_framework import serializers
class TaskSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.Task
fields = "__all__"

View File

@ -0,0 +1,10 @@
from rest_framework import permissions, viewsets
from tasks.api import serializers
from tasks import models
class TaskViewSet(viewsets.ModelViewSet):
queryset = models.Task.objects.all().order_by("-created")
serializer_class = serializers.TaskSerializer
permission_classes = [permissions.IsAuthenticated]

View File

@ -0,0 +1,14 @@
from webpages.models import Domain, WebPage
from rest_framework import serializers
class DomainSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Domain
fields = "__all__"
class WebPageSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = WebPage
fields = "__all__"

View File

@ -0,0 +1,19 @@
from rest_framework import permissions, viewsets
from webpages.api.serializers import (
DomainSerializer,
WebPageSerializer,
)
from webpages.models import Domain, WebPage
class DomainViewSet(viewsets.ModelViewSet):
queryset = Domain.objects.all().order_by("-created")
serializer_class = DomainSerializer
permission_classes = [permissions.IsAuthenticated]
class WebPageViewSet(viewsets.ModelViewSet):
queryset = WebPage.objects.all().order_by("-created")
serializer_class = WebPageSerializer
permission_classes = [permissions.IsAuthenticated]

View File

@ -5,12 +5,15 @@ from rest_framework import routers
import vrobbler.apps.scrobbles.views as scrobbles_views
from vrobbler.apps.boardgames import urls as boardgame_urls
from vrobbler.apps.boardgames.api.views import BoardGameViewSet, BoardGameDesignerViewSet, BoardGamePublisherViewSet, BoardGameLocationViewSet
from vrobbler.apps.books import urls as book_urls
from vrobbler.apps.books.api.views import AuthorViewSet, BookViewSet
from vrobbler.apps.bricksets import urls as bricksets_urls
from vrobbler.apps.lifeevents import urls as lifeevents_urls
from vrobbler.apps.locations import urls as locations_urls
from vrobbler.apps.locations.api.views import GeoLocationViewSet
from vrobbler.apps.moods import urls as moods_urls
from vrobbler.apps.moods.api.views import MoodViewSet
from vrobbler.apps.music import urls as music_urls
from vrobbler.apps.music.api.views import (
AlbumViewSet,
@ -18,6 +21,7 @@ from vrobbler.apps.music.api.views import (
TrackViewSet,
)
from vrobbler.apps.podcasts import urls as podcast_urls
from vrobbler.apps.podcasts.api.views import ProducerViewSet, PodcastViewSet, PodcastEpisodeViewSet
from vrobbler.apps.profiles.api.views import UserProfileViewSet, UserViewSet
from vrobbler.apps.scrobbles import urls as scrobble_urls
from vrobbler.apps.scrobbles.api.views import (
@ -36,15 +40,21 @@ from vrobbler.apps.sports.api.views import (
TeamViewSet,
)
from vrobbler.apps.tasks import urls as tasks_urls
from vrobbler.apps.tasks.api.views import TaskViewSet
from vrobbler.apps.profiles import urls as profiles_urls
from vrobbler.apps.trails import urls as trails_urls
from vrobbler.apps.beers import urls as beers_urls
from vrobbler.apps.beers.api.views import BeerViewSet, BeerProducerViewSet, BeerStyleViewSet
from vrobbler.apps.foods import urls as foods_urls
from vrobbler.apps.foods.api.views import FoodViewSet
from vrobbler.apps.puzzles import urls as puzzles_urls
from vrobbler.apps.puzzles.api.views import PuzzleViewSet, PuzzleManufacturerViewSet
from vrobbler.apps.videogames import urls as videogame_urls
from vrobbler.apps.videos import urls as video_urls
from vrobbler.apps.videos.api.views import SeriesViewSet, VideoViewSet
from vrobbler.apps.webpages import urls as webpages_urls
from vrobbler.apps.webpages.api.views import DomainViewSet, WebPageViewSet
from vrobbler.apps.bricksets.api.views import BrickSetViewSet
# from vrobbler.apps.modern_ui import urls as modern_ui_urls
@ -68,6 +78,25 @@ router.register(r"sport-events", SportEventViewSet)
router.register(r"teams", TeamViewSet)
router.register(r"users", UserViewSet)
router.register(r"profiles", UserProfileViewSet)
router.register(r"domains", DomainViewSet)
router.register(r"webpages", WebPageViewSet)
router.register(r"foods", FoodViewSet)
router.register(r"moods", MoodViewSet)
router.register(r"tasks", TaskViewSet)
router.register(r"locations", GeoLocationViewSet)
router.register(r"beers", BeerViewSet)
router.register(r"beer-producers", BeerProducerViewSet)
router.register(r"beer-styles", BeerStyleViewSet)
router.register(r"boardgames", BoardGameViewSet)
router.register(r"boardgame-designers", BoardGameDesignerViewSet)
router.register(r"boardgame-publishers", BoardGamePublisherViewSet)
router.register(r"boardgame-locations", BoardGameLocationViewSet)
router.register(r"podcast-producers", ProducerViewSet)
router.register(r"podcast-episodes", PodcastEpisodeViewSet)
router.register(r"podcasts", PodcastViewSet)
router.register(r"puzzle-manufacturers", PuzzleManufacturerViewSet)
router.register(r"puzzles", PuzzleViewSet)
router.register(r"bricksets", BrickSetViewSet)
urlpatterns = [
path("api/v1/", include(router.urls)),