|
7 | 7 | from api_v2 import models |
8 | 8 |
|
9 | 9 | from .abstracts import GameContentSerializer |
10 | | -from .damagetype import DamageTypeSerializer |
11 | | -from .condition import ConditionSerializer |
| 10 | +from .damagetype import DamageTypeSummarySerializer |
| 11 | +from .condition import ConditionSummarySerializer |
12 | 12 | from .document import DocumentSummarySerializer |
13 | 13 | from .language import LanguageSummarySerializer |
14 | | -from .environment import EnvironmentSerializer |
15 | | -from .size import SizeSerializer |
| 14 | +from .environment import EnvironmentSummarySerializer |
| 15 | +from .size import SizeSummarySerializer |
16 | 16 | from drf_spectacular.utils import extend_schema_field, inline_serializer |
17 | 17 | from drf_spectacular.types import OpenApiTypes |
18 | 18 |
|
@@ -47,6 +47,15 @@ class Meta: |
47 | 47 | model = models.CreatureType |
48 | 48 | fields = '__all__' |
49 | 49 |
|
| 50 | +class CreatureTypeSummarySerializer(serializers.ModelSerializer): |
| 51 | + ''' |
| 52 | + A slimmer CreatureTypeSerializer, designed to serialize CreatureType FKs on |
| 53 | + other serializers . Not intended to be used directly with in a ModelViewset. |
| 54 | + ''' |
| 55 | + class Meta: |
| 56 | + model = models.CreatureType |
| 57 | + fields = ['name', 'key', 'url'] |
| 58 | + |
50 | 59 |
|
51 | 60 | class CreatureTraitSerializer(GameContentSerializer): |
52 | 61 | '''Serializer for the Creature Trait object''' |
@@ -74,45 +83,45 @@ class CreatureSerializer(GameContentSerializer): |
74 | 83 | saving_throws_all = serializers.SerializerMethodField() |
75 | 84 | skill_bonuses = serializers.SerializerMethodField() |
76 | 85 | skill_bonuses_all = serializers.SerializerMethodField() |
77 | | - damage_immunities = DamageTypeSerializer(many=True) |
78 | | - damage_resistances = DamageTypeSerializer(many=True) |
79 | | - damage_vulnerabilities = DamageTypeSerializer(many=True) |
80 | | - condition_immunities = ConditionSerializer(many=True) |
| 86 | + damage_immunities = DamageTypeSummarySerializer(many=True) |
| 87 | + damage_resistances = DamageTypeSummarySerializer(many=True) |
| 88 | + damage_vulnerabilities = DamageTypeSummarySerializer(many=True) |
| 89 | + condition_immunities = ConditionSummarySerializer(many=True) |
81 | 90 | actions = CreatureActionSerializer(many=True) |
82 | 91 | traits = CreatureTraitSerializer(many=True, read_only=True) |
83 | 92 | speed = serializers.SerializerMethodField() |
84 | 93 | speed_all = serializers.SerializerMethodField() |
85 | 94 | challenge_rating_text = serializers.SerializerMethodField() |
86 | 95 | experience_points = serializers.SerializerMethodField() |
87 | 96 | document = DocumentSummarySerializer() |
88 | | - type = CreatureTypeSerializer() |
89 | | - size = SizeSerializer() |
| 97 | + type = CreatureTypeSummarySerializer() |
| 98 | + size = SizeSummarySerializer() |
90 | 99 | languages = CreatureLanguageSerializer(source='*') |
91 | | - environments = EnvironmentSerializer(many=True) |
| 100 | + environments = EnvironmentSummarySerializer(many=True) |
92 | 101 | initiative_bonus = serializers.SerializerMethodField() |
93 | 102 |
|
94 | 103 | class Meta: |
95 | 104 | '''Serializer meta options.''' |
96 | 105 | model = models.Creature |
97 | 106 | fields = [ |
98 | 107 | 'url', |
99 | | - 'document', |
100 | 108 | 'key', |
101 | 109 | 'name', |
| 110 | + 'document', |
| 111 | + 'type', |
102 | 112 | 'size', |
| 113 | + 'challenge_rating_decimal', |
| 114 | + 'challenge_rating_text', |
103 | 115 | 'speed', |
104 | 116 | 'speed_all', |
105 | 117 | 'category', |
106 | 118 | 'subcategory', |
107 | | - 'type', |
108 | 119 | 'alignment', |
109 | 120 | 'languages', |
110 | 121 | 'armor_class', |
111 | 122 | 'armor_detail', |
112 | 123 | 'hit_points', |
113 | 124 | 'hit_dice', |
114 | | - 'challenge_rating_decimal', |
115 | | - 'challenge_rating_text', |
116 | 125 | 'experience_points', |
117 | 126 | 'ability_scores', |
118 | 127 | 'modifiers', |
|
0 commit comments