I feel like theres a ton of good convenience resource linking going on now

This commit is contained in:
Adickes 2015-11-16 14:23:41 -05:00
parent 1f480cedac
commit 342ea98b87
13 changed files with 202 additions and 337 deletions

View file

@ -6,7 +6,7 @@ from django.db import models, migrations
class Migration(migrations.Migration):
replaces = [(b'pokemon_v2', '0001_squashed_0024_auto_20151027_0023'), (b'pokemon_v2', '0002_auto_20151102_2124'), (b'pokemon_v2', '0003_auto_20151105_0309'), (b'pokemon_v2', '0004_auto_20151105_1947'), (b'pokemon_v2', '0005_auto_20151105_1949'), (b'pokemon_v2', '0006_auto_20151106_1654'), (b'pokemon_v2', '0007_auto_20151106_2319'), (b'pokemon_v2', '0008_auto_20151107_0323'), (b'pokemon_v2', '0009_auto_20151107_1516'), (b'pokemon_v2', '0010_auto_20151108_0208'), (b'pokemon_v2', '0011_auto_20151108_0352')]
#replaces = [(b'pokemon_v2', '0001_squashed_0011_auto_20151108_0352'), (b'pokemon_v2', '0002_auto_20151110_1756'), (b'pokemon_v2', '0003_berryflavormap'), (b'pokemon_v2', '0004_auto_20151111_0531'), (b'pokemon_v2', '0005_auto_20151111_0541'), (b'pokemon_v2', '0006_auto_20151111_2216'), (b'pokemon_v2', '0007_auto_20151113_1414'), (b'pokemon_v2', '0008_auto_20151114_0241'), (b'pokemon_v2', '0009_auto_20151114_0433'), (b'pokemon_v2', '0010_auto_20151116_0219'), (b'pokemon_v2', '0011_auto_20151116_0230'), (b'pokemon_v2', '0012_auto_20151116_0317')]
dependencies = [
]
@ -1853,24 +1853,12 @@ class Migration(migrations.Migration):
name='ItemFlingEffect',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(default='name', max_length=100)),
],
options={
},
bases=(models.Model,),
),
migrations.CreateModel(
name='ItemFlingEffectDescription',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('item_fling_effect', models.ForeignKey(related_name='itemflingeffectdescription', blank=True, to='pokemon_v2.ItemFlingEffect', null=True)),
('language', models.ForeignKey(related_name='itemflingeffectdescription_language', blank=True, to='pokemon_v2.Language', null=True)),
('description', models.CharField(default='', max_length=1000)),
],
options={
'abstract': False,
},
bases=(models.Model,),
),
migrations.CreateModel(
name='ItemGameIndex',
fields=[
@ -2453,7 +2441,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='palpark',
name='pal_park_area',
field=models.ForeignKey(blank=True, to='pokemon_v2.PalParkArea', null=True),
field=models.ForeignKey(related_name='palpark', blank=True, to='pokemon_v2.PalParkArea', null=True),
preserve_default=True,
),
migrations.AddField(
@ -2712,12 +2700,6 @@ class Migration(migrations.Migration):
},
bases=(models.Model,),
),
migrations.AddField(
model_name='itemflingeffect',
name='name',
field=models.CharField(default='name', max_length=100),
preserve_default=False,
),
migrations.CreateModel(
name='ItemAttributeDescription',
fields=[
@ -3053,4 +3035,116 @@ class Migration(migrations.Migration):
field=models.ForeignKey(related_name='abilitychange', blank=True, to='pokemon_v2.VersionGroup', null=True),
preserve_default=True,
),
migrations.CreateModel(
name='BerryFlavorName',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(max_length=100)),
('berry_flavor', models.ForeignKey(related_name='berryflavorname', blank=True, to='pokemon_v2.BerryFlavor', null=True)),
('language', models.ForeignKey(related_name='berryflavorname_language', blank=True, to='pokemon_v2.Language', null=True)),
],
options={
'abstract': False,
},
bases=(models.Model,),
),
migrations.RemoveField(
model_name='berryflavor',
name='berry',
),
migrations.RemoveField(
model_name='berryflavor',
name='flavor',
),
migrations.AddField(
model_name='berryflavor',
name='name',
field=models.CharField(default='name', max_length=100),
preserve_default=False,
),
migrations.CreateModel(
name='BerryFlavorMap',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('potency', models.IntegerField()),
('berry', models.ForeignKey(related_name='berryflavormap', blank=True, to='pokemon_v2.Berry', null=True)),
('berry_flavor', models.ForeignKey(related_name='berryflavormap', blank=True, to='pokemon_v2.BerryFlavor', null=True)),
],
options={
},
bases=(models.Model,),
),
migrations.CreateModel(
name='ItemFlingEffectEffectText',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('item_fling_effect', models.ForeignKey(related_name='itemflingeffecteffecttext', blank=True, to='pokemon_v2.ItemFlingEffect', null=True)),
('language', models.ForeignKey(related_name='itemflingeffecteffecttext_language', blank=True, to='pokemon_v2.Language', null=True)),
('effect', models.CharField(default='string', max_length=4000)),
],
options={
'abstract': False,
},
bases=(models.Model,),
),
migrations.AlterField(
model_name='berry',
name='berry_firmness',
field=models.ForeignKey(related_name='berry', blank=True, to='pokemon_v2.BerryFirmness', null=True),
preserve_default=True,
),
migrations.AlterField(
model_name='berryflavor',
name='contest_type',
field=models.OneToOneField(related_name='berryflavor', null=True, blank=True, to='pokemon_v2.ContestType'),
preserve_default=True,
),
migrations.RemoveField(
model_name='move',
name='contest_effect_id',
),
migrations.RemoveField(
model_name='move',
name='contest_type_id',
),
migrations.RemoveField(
model_name='move',
name='super_contest_effect_id',
),
migrations.AddField(
model_name='move',
name='contest_effect',
field=models.ForeignKey(related_name='move', blank=True, to='pokemon_v2.ContestEffect', null=True),
preserve_default=True,
),
migrations.AddField(
model_name='move',
name='contest_type',
field=models.ForeignKey(related_name='move', blank=True, to='pokemon_v2.ContestType', null=True),
preserve_default=True,
),
migrations.AddField(
model_name='move',
name='super_contest_effect',
field=models.ForeignKey(related_name='move', blank=True, to='pokemon_v2.SuperContestEffect', null=True),
preserve_default=True,
),
migrations.AlterField(
model_name='pokemonspecies',
name='pokemon_habitat',
field=models.ForeignKey(related_name='pokemonspecies', blank=True, to='pokemon_v2.PokemonHabitat', null=True),
preserve_default=True,
),
migrations.AlterField(
model_name='pokemonspecies',
name='pokemon_shape',
field=models.ForeignKey(related_name='pokemonspecies', blank=True, to='pokemon_v2.PokemonShape', null=True),
preserve_default=True,
),
migrations.AlterField(
model_name='generation',
name='region',
field=models.OneToOneField(related_name='generation', null=True, blank=True, to='pokemon_v2.Region'),
preserve_default=True,
),
]

View file

@ -1,41 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('pokemon_v2', '0001_squashed_0011_auto_20151108_0352'),
]
operations = [
migrations.CreateModel(
name='BerryFlavorName',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(max_length=100)),
('berry_flavor', models.ForeignKey(related_name='berryflavorname', blank=True, to='pokemon_v2.BerryFlavor', null=True)),
('language', models.ForeignKey(related_name='berryflavorname_language', blank=True, to='pokemon_v2.Language', null=True)),
],
options={
'abstract': False,
},
bases=(models.Model,),
),
migrations.RemoveField(
model_name='berryflavor',
name='berry',
),
migrations.RemoveField(
model_name='berryflavor',
name='flavor',
),
migrations.AddField(
model_name='berryflavor',
name='name',
field=models.CharField(default='name', max_length=100),
preserve_default=False,
),
]

View file

@ -1,26 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('pokemon_v2', '0002_auto_20151110_1756'),
]
operations = [
migrations.CreateModel(
name='BerryFlavorMap',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('potency', models.IntegerField()),
('berry', models.ForeignKey(related_name='berryflavormap', blank=True, to='pokemon_v2.Berry', null=True)),
('berry_flavor', models.ForeignKey(related_name='berryflavormap', blank=True, to='pokemon_v2.BerryFlavor', null=True)),
],
options={
},
bases=(models.Model,),
),
]

View file

@ -1,38 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('pokemon_v2', '0003_berryflavormap'),
]
operations = [
migrations.CreateModel(
name='ItemFlingEffectEffectText',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('description', models.CharField(default='', max_length=1000)),
('item_fling_effect', models.ForeignKey(related_name='itemflingeffecteffecttext', blank=True, to='pokemon_v2.ItemFlingEffect', null=True)),
('language', models.ForeignKey(related_name='itemflingeffecteffecttext_language', blank=True, to='pokemon_v2.Language', null=True)),
],
options={
'abstract': False,
},
bases=(models.Model,),
),
migrations.RemoveField(
model_name='itemflingeffectdescription',
name='item_fling_effect',
),
migrations.RemoveField(
model_name='itemflingeffectdescription',
name='language',
),
migrations.DeleteModel(
name='ItemFlingEffectDescription',
),
]

View file

@ -1,24 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('pokemon_v2', '0004_auto_20151111_0531'),
]
operations = [
migrations.RemoveField(
model_name='itemflingeffecteffecttext',
name='description',
),
migrations.AddField(
model_name='itemflingeffecteffecttext',
name='effect',
field=models.CharField(default='string', max_length=4000),
preserve_default=False,
),
]

View file

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('pokemon_v2', '0005_auto_20151111_0541'),
]
operations = [
migrations.AlterField(
model_name='palpark',
name='pal_park_area',
field=models.ForeignKey(related_name='palpark', blank=True, to='pokemon_v2.PalParkArea', null=True),
preserve_default=True,
),
]

View file

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('pokemon_v2', '0006_auto_20151111_2216'),
]
operations = [
migrations.AlterField(
model_name='berry',
name='berry_firmness',
field=models.ForeignKey(related_name='berry', blank=True, to='pokemon_v2.BerryFirmness', null=True),
preserve_default=True,
),
]

View file

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('pokemon_v2', '0007_auto_20151113_1414'),
]
operations = [
migrations.AlterField(
model_name='berryflavor',
name='contest_type',
field=models.OneToOneField(related_name='berryflavor', null=True, blank=True, to='pokemon_v2.ContestType'),
preserve_default=True,
),
]

View file

@ -1,44 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('pokemon_v2', '0008_auto_20151114_0241'),
]
operations = [
migrations.RemoveField(
model_name='move',
name='contest_effect_id',
),
migrations.RemoveField(
model_name='move',
name='contest_type_id',
),
migrations.RemoveField(
model_name='move',
name='super_contest_effect_id',
),
migrations.AddField(
model_name='move',
name='contest_effect',
field=models.ForeignKey(related_name='move', blank=True, to='pokemon_v2.ContestEffect', null=True),
preserve_default=True,
),
migrations.AddField(
model_name='move',
name='contest_type',
field=models.ForeignKey(related_name='move', blank=True, to='pokemon_v2.ContestType', null=True),
preserve_default=True,
),
migrations.AddField(
model_name='move',
name='super_contest_effect',
field=models.ForeignKey(related_name='move', blank=True, to='pokemon_v2.SuperContestEffect', null=True),
preserve_default=True,
),
]

View file

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('pokemon_v2', '0009_auto_20151114_0433'),
]
operations = [
migrations.AlterField(
model_name='pokemonspecies',
name='pokemon_habitat',
field=models.ForeignKey(related_name='pokemonspecies', blank=True, to='pokemon_v2.PokemonHabitat', null=True),
preserve_default=True,
),
]

View file

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('pokemon_v2', '0010_auto_20151116_0219'),
]
operations = [
migrations.AlterField(
model_name='pokemonspecies',
name='pokemon_shape',
field=models.ForeignKey(related_name='pokemonspecies', blank=True, to='pokemon_v2.PokemonShape', null=True),
preserve_default=True,
),
]

View file

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('pokemon_v2', '0011_auto_20151116_0230'),
]
operations = [
migrations.AlterField(
model_name='generation',
name='region',
field=models.OneToOneField(related_name='generation', null=True, blank=True, to='pokemon_v2.Region'),
preserve_default=True,
),
]

View file

@ -330,6 +330,24 @@ class ItemAttributeMapSerializer(serializers.ModelSerializer):
model = ItemAttributeMap
fields = ('item', 'attribute',)
class MoveMetaStatChangeSerializer(serializers.ModelSerializer):
stat = StatSummarySerializer()
move = MoveSummarySerializer()
class Meta:
model = MoveMetaStatChange
fields = ('change', 'move', 'stat')
class NaturePokeathlonStatSerializer(serializers.ModelSerializer):
pokeathlon_stat = PokeathlonStatSummarySerializer()
nature = NatureSummarySerializer()
class Meta:
model = NaturePokeathlonStat
fields = ( 'max_change', 'nature', 'pokeathlon_stat')
class PokemonAbilitySerializer(serializers.ModelSerializer):
pokemon = PokemonSummarySerializer()
@ -437,10 +455,11 @@ class SuperContestEffectFlavorTextSerializer(serializers.ModelSerializer):
class SuperContestEffectDetailSerializer(serializers.ModelSerializer):
flavor_text_entries = SuperContestEffectFlavorTextSerializer(many=True, read_only=True, source='supercontesteffectflavortext')
moves = MoveSummarySerializer(many=True, read_only=True, source='move')
class Meta:
model = SuperContestEffect
fields = ('id', 'appeal', 'flavor_text_entries')
fields = ('id', 'appeal', 'flavor_text_entries', 'moves')
class ContestEffectEffectTextSerializer(serializers.ModelSerializer):
@ -1029,11 +1048,37 @@ class StatDetailSerializer(serializers.ModelSerializer):
names = StatNameSerializer(many=True, read_only=True, source="statname")
move_damage_class = MoveDamageClassSummarySerializer()
characteristics = CharacteristicSummarySerializer(many=True, read_only=True, source="characteristic")
affecting_moves = serializers.SerializerMethodField('get_moves_that_affect')
affecting_natures = serializers.SerializerMethodField('get_natures_that_affect')
class Meta:
model = Stat
fields = ('id', 'name', 'game_index', 'is_battle_only', 'move_damage_class', 'names')
fields = ('id', 'name', 'game_index', 'is_battle_only', 'affecting_moves', 'affecting_natures', 'characteristics', 'move_damage_class', 'names')
def get_moves_that_affect(self, obj):
stat_change_objects = MoveMetaStatChange.objects.filter(stat=obj)
stat_changes = MoveMetaStatChangeSerializer(stat_change_objects, many=True, context=self.context).data
changes = OrderedDict([('increase', []),('decrease', [])])
for change in stat_changes:
del change['stat']
if change['change'] > 0:
changes['increase'].append(change)
else:
changes['decrease'].append(change)
return changes
def get_natures_that_affect(self, obj):
increase_objects = Nature.objects.filter(increased_stat=obj)
increases = NatureSummarySerializer(increase_objects, many=True, context=self.context).data
decrease_objects = Nature.objects.filter(decreased_stat=obj)
decreases = NatureSummarySerializer(decrease_objects, many=True, context=self.context).data
return OrderedDict([('increase', increases),('decrease', decreases)])
#############################
@ -1296,14 +1341,6 @@ class NatureBattleStylePreferenceSerializer(serializers.ModelSerializer):
fields = ( 'low_hp_preference', 'high_hp_preference', 'move_battle_style',)
class NaturePokeathlonStatSerializer(serializers.ModelSerializer):
pokeathlon_stat = PokeathlonStatSummarySerializer()
class Meta:
model = NaturePokeathlonStat
fields = ( 'max_change', 'pokeathlon_stat',)
class NatureNameSerializer(serializers.ModelSerializer):
@ -1324,13 +1361,22 @@ class NatureDetailSerializer(serializers.ModelSerializer):
likes_flavor = BerryFlavorSummarySerializer()
hates_flavor = BerryFlavorSummarySerializer()
berries = BerrySummarySerializer(many=True, read_only=True, source="berry")
pokeathlon_stat_changes = NaturePokeathlonStatSerializer(many=True, read_only=True, source="naturepokeathlonstat")
pokeathlon_stat_changes = serializers.SerializerMethodField('get_pokeathlon_stats')
move_battle_style_preferences = NatureBattleStylePreferenceSerializer(many=True, read_only=True, source="naturebattlestylepreference")
class Meta:
model = Nature
fields = ('id', 'name', 'decreased_stat', 'increased_stat', 'likes_flavor', 'hates_flavor', 'berries', 'pokeathlon_stat_changes', 'move_battle_style_preferences', 'names')
def get_pokeathlon_stats(self, obj):
pokeathlon_stat_objects = NaturePokeathlonStat.objects.filter(nature=obj)
pokeathlon_stats = NaturePokeathlonStatSerializer(pokeathlon_stat_objects, many=True, context=self.context).data
for stat in pokeathlon_stats:
del stat['nature']
return pokeathlon_stats
#######################
@ -1496,10 +1542,11 @@ class TypeDetailSerializer(serializers.ModelSerializer):
move_damage_class = MoveDamageClassSummarySerializer()
damage_relations = serializers.SerializerMethodField('get_type_relationships')
pokemon = serializers.SerializerMethodField('get_type_pokemon')
moves = MoveSummarySerializer(many=True, read_only=True, source="move")
class Meta:
model = Type
fields = ('id', 'name', 'move_damage_class', 'generation', 'names', 'game_indices', 'damage_relations')
fields = ('id', 'name', 'damage_relations', 'game_indices', 'generation', 'move_damage_class', 'names', 'pokemon', 'moves')
def get_type_relationships(self, obj):
@ -1691,15 +1738,6 @@ class MoveMetaCategoryDetailSerializer(serializers.ModelSerializer):
return moves
class MoveMetaStatChangeSerializer(serializers.ModelSerializer):
stat = StatSummarySerializer()
class Meta:
model = MoveMetaStatChange
fields = ('change', 'stat')
class MoveMetaSerializer(serializers.ModelSerializer):
ailment = MoveMetaAilmentSummarySerializer(source="move_meta_ailment")
@ -1831,7 +1869,7 @@ class MoveDetailSerializer(serializers.ModelSerializer):
effect_entries = serializers.SerializerMethodField('get_effect_text')
effect_chance = serializers.IntegerField(source="move_effect_chance")
contest_combos = serializers.SerializerMethodField('get_combos')
stat_changes = MoveMetaStatChangeSerializer(many=True, read_only=True, source="movemetastatchange")
stat_changes = serializers.SerializerMethodField('get_move_stat_change')
super_contest_effect = SuperContestEffectSummarySerializer()
past_values = MoveChangeSerializer(many=True, read_only=True, source="movechange")
effect_change = serializers.SerializerMethodField('get_effect_change_text')
@ -1923,6 +1961,16 @@ class MoveDetailSerializer(serializers.ModelSerializer):
return data
def get_move_stat_change(self, obj):
stat_change_objects = MoveMetaStatChange.objects.filter(move=obj)
stat_changes = MoveMetaStatChangeSerializer(stat_change_objects, many=True, context=self.context).data
for change in stat_changes:
del change['move']
return stat_changes
##########################
# PAL PARK SERIALIZERS #
@ -2662,10 +2710,26 @@ class PokeathlonStatNameSerializer(serializers.HyperlinkedModelSerializer):
class PokeathlonStatDetailSerializer(serializers.HyperlinkedModelSerializer):
names = PokeathlonStatNameSerializer(many=True, read_only=True, source="pokeathlonstatname")
affecting_natures = serializers.SerializerMethodField('get_natures_that_affect')
class Meta:
model = PokeathlonStat
fields = ('id', 'name', 'names')
fields = ('id', 'name', 'affecting_natures', 'names')
def get_natures_that_affect(self, obj):
stat_change_objects = NaturePokeathlonStat.objects.filter(pokeathlon_stat=obj)
stat_changes = NaturePokeathlonStatSerializer(stat_change_objects, many=True, context=self.context).data
changes = OrderedDict([('increase', []),('decrease', [])])
for change in stat_changes:
del change['pokeathlon_stat']
if change['max_change'] > 0:
changes['increase'].append(change)
else:
changes['decrease'].append(change)
return changes