| 2125 | |
| 2126 | |
| 2127 | class BerryFlavorDetailSerializer(serializers.ModelSerializer): |
| 2128 | names = BerryFlavorNameSerializer( |
| 2129 | many=True, read_only=True, source="berryflavorname" |
| 2130 | ) |
| 2131 | contest_type = ContestTypeSummarySerializer() |
| 2132 | berries = serializers.SerializerMethodField("get_berries_with_flavor") |
| 2133 | |
| 2134 | class Meta: |
| 2135 | model = BerryFlavor |
| 2136 | fields = ("id", "name", "berries", "contest_type", "names") |
| 2137 | |
| 2138 | @extend_schema_field( |
| 2139 | field={ |
| 2140 | "type": "array", |
| 2141 | "items": { |
| 2142 | "type": "object", |
| 2143 | "required": ["potency", "berry"], |
| 2144 | "properties": { |
| 2145 | "potency": {"type": "integer", "examples": [10]}, |
| 2146 | "berry": { |
| 2147 | "type": "object", |
| 2148 | "require": ["name", "url"], |
| 2149 | "properties": { |
| 2150 | "name": { |
| 2151 | "type": "string", |
| 2152 | "description": "The name of the berry", |
| 2153 | "examples": ["rowap"], |
| 2154 | }, |
| 2155 | "url": { |
| 2156 | "type": "string", |
| 2157 | "format": "uri", |
| 2158 | "description": "The URL to get more information about the berry", |
| 2159 | "examples": ["https://pokeapi.co/api/v2/berry/64/"], |
| 2160 | }, |
| 2161 | }, |
| 2162 | }, |
| 2163 | }, |
| 2164 | }, |
| 2165 | } |
| 2166 | ) |
| 2167 | def get_berries_with_flavor(self, obj): |
| 2168 | flavor_map_objects = BerryFlavorMap.objects.filter( |
| 2169 | berry_flavor=obj, potency__gt=0 |
| 2170 | ).order_by("potency") |
| 2171 | flavor_maps = BerryFlavorMapSerializer( |
| 2172 | flavor_map_objects, many=True, context=self.context |
| 2173 | ).data |
| 2174 | |
| 2175 | for map in flavor_maps: |
| 2176 | del map["flavor"] |
| 2177 | |
| 2178 | return flavor_maps |
| 2179 | |
| 2180 | |
| 2181 | class BerryDetailSerializer(serializers.ModelSerializer): |
nothing calls this directly
no test coverage detected