| 3153 | |
| 3154 | |
| 3155 | class MoveChangeSerializer(serializers.ModelSerializer): |
| 3156 | version_group = VersionGroupSummarySerializer() |
| 3157 | type = TypeSummarySerializer() |
| 3158 | effect_entries = serializers.SerializerMethodField("get_effects") |
| 3159 | effect_chance = serializers.IntegerField(source="move_effect_chance") |
| 3160 | |
| 3161 | class Meta: |
| 3162 | model = MoveChange |
| 3163 | fields = ( |
| 3164 | "accuracy", |
| 3165 | "power", |
| 3166 | "pp", |
| 3167 | "effect_chance", |
| 3168 | "effect_entries", |
| 3169 | "type", |
| 3170 | "version_group", |
| 3171 | ) |
| 3172 | |
| 3173 | @extend_schema_field( |
| 3174 | field={ |
| 3175 | "type": "array", |
| 3176 | "items": { |
| 3177 | "type": "object", |
| 3178 | "required": ["effect", "short_effect", "language"], |
| 3179 | "properties": { |
| 3180 | "effect": { |
| 3181 | "type": "string", |
| 3182 | "examples": [ |
| 3183 | "Inflicts [regular damage]{mechanic:regular-damage}." |
| 3184 | ], |
| 3185 | }, |
| 3186 | "short_effect": { |
| 3187 | "type": "string", |
| 3188 | "examples": [ |
| 3189 | "Inflicts regular damage with no additional effect." |
| 3190 | ], |
| 3191 | }, |
| 3192 | "language": { |
| 3193 | "type": "object", |
| 3194 | "required": ["name", "url"], |
| 3195 | "properties": { |
| 3196 | "name": {"type": "string", "examples": ["en"]}, |
| 3197 | "url": { |
| 3198 | "type": "string", |
| 3199 | "format": "uri", |
| 3200 | "examples": ["https://pokeapi.co/api/v2/language/9/"], |
| 3201 | }, |
| 3202 | }, |
| 3203 | }, |
| 3204 | }, |
| 3205 | }, |
| 3206 | } |
| 3207 | ) |
| 3208 | def get_effects(self, obj): |
| 3209 | effect_texts = MoveEffectEffectText.objects.filter(move_effect=obj.move_effect) |
| 3210 | data = MoveEffectEffectTextSerializer( |
| 3211 | effect_texts, many=True, context=self.context |
| 3212 | ).data |
no test coverage detected