from rest_framework import serializers from frog_api.models import Entry, Measure, Project, Version class VersionSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Version fields = ["slug", "name"] class ProjectSerializer(serializers.HyperlinkedModelSerializer): versions = VersionSerializer(many=True, read_only=True) class Meta: model = Project fields = [ "slug", "name", "versions", "repository", "discord", "website", ] class MeasureSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Measure fields = ["type", "value"] class EntrySerializer(serializers.HyperlinkedModelSerializer): measures = serializers.SerializerMethodField() def get_measures(self, instance: Entry) -> dict[str, int]: return {m.type: m.value for m in instance.measures.all()} class Meta: model = Entry fields = [ "timestamp", "git_hash", "measures", ]