mirror of
https://github.com/PokeAPI/pokeapi
synced 2024-11-10 06:04:18 +00:00
Completed Models/Build Script
-Added models for Pokemon, Moves, and all other remaining models. -Added new models to build script -Build script will now clean and reset auto-incrementers for each table in pokeapi_co_db -Build script now runs against both postgres and sqlite (dev) -Added all models to admin site registry -Added instructions for building out db in README
This commit is contained in:
parent
5ad1cb0ea5
commit
49926dc026
6 changed files with 5090 additions and 1390 deletions
13
README.md
13
README.md
|
@ -42,6 +42,19 @@ If you ever need to wipe the database use this command:
|
|||
$ make wipe_db
|
||||
```
|
||||
|
||||
## V2 Database setup
|
||||
|
||||
To build out the data you'll need to jump into the Django shell
|
||||
|
||||
```
|
||||
$ python manage.py shell
|
||||
```
|
||||
and run the build script with
|
||||
```
|
||||
$ execfile('data/v2/build.py')
|
||||
```
|
||||
Each time the build script is run it will iterate over each table in the database, wipe it and rewrite each row using the data found in data/v2/csv.
|
||||
If you don't need all of the data just go into data/v2/build.py and comment out everything but what you need to build the tables you're looking for. This might be useful because some of the csv files are massive (pokemon_moves expecially) and it can take about 30 minutes to build everything.
|
||||
|
||||
## Contributing
|
||||
|
||||
|
|
1608
data/v2/build.py
1608
data/v2/build.py
File diff suppressed because it is too large
Load diff
159
pokemon_v2/admin.py
Normal file → Executable file
159
pokemon_v2/admin.py
Normal file → Executable file
|
@ -3,19 +3,164 @@ from django.contrib import admin
|
|||
|
||||
from .models import *
|
||||
|
||||
admin.site.register(Language)
|
||||
admin.site.register(LanguageName)
|
||||
admin.site.register(Ability)
|
||||
admin.site.register(AbilityName)
|
||||
admin.site.register(AbilityDescription)
|
||||
admin.site.register(AbilityFlavorText)
|
||||
admin.site.register(AbilityChange)
|
||||
admin.site.register(AbilityChangeDescription)
|
||||
|
||||
admin.site.register(Berry)
|
||||
admin.site.register(BerryFirmness)
|
||||
admin.site.register(BerryFirmnessName)
|
||||
admin.site.register(BerryFlavor)
|
||||
|
||||
admin.site.register(Characteristic)
|
||||
admin.site.register(CharacteristicDescription)
|
||||
|
||||
admin.site.register(ContestCombo)
|
||||
admin.site.register(ContestEffectDescription)
|
||||
admin.site.register(ContestEffect)
|
||||
admin.site.register(ContestType)
|
||||
admin.site.register(ContestTypeName)
|
||||
|
||||
admin.site.register(EggGroup)
|
||||
admin.site.register(EggGroupName)
|
||||
|
||||
admin.site.register(EncounterCondition)
|
||||
admin.site.register(EncounterConditionValue)
|
||||
admin.site.register(EncounterConditionName)
|
||||
admin.site.register(EncounterConditionValueName)
|
||||
admin.site.register(EncounterConditionValueMap)
|
||||
admin.site.register(EncounterMethod)
|
||||
admin.site.register(EncounterMethodName)
|
||||
admin.site.register(EncounterSlot)
|
||||
admin.site.register(Encounter)
|
||||
|
||||
admin.site.register(EvolutionChain)
|
||||
admin.site.register(EvolutionTrigger)
|
||||
admin.site.register(EvolutionTriggerName)
|
||||
|
||||
admin.site.register(Experience)
|
||||
|
||||
admin.site.register(Gender)
|
||||
|
||||
admin.site.register(Generation)
|
||||
admin.site.register(GenerationName)
|
||||
|
||||
admin.site.register(GrowthRate)
|
||||
admin.site.register(GrowthRateDescription)
|
||||
|
||||
admin.site.register(ItemCategory)
|
||||
admin.site.register(ItemCategoryName)
|
||||
admin.site.register(ItemFlag)
|
||||
admin.site.register(ItemFlagMap)
|
||||
admin.site.register(ItemFlagDescription)
|
||||
admin.site.register(ItemFlavorText)
|
||||
admin.site.register(ItemFlingEffect)
|
||||
admin.site.register(ItemFlingEffectDescription)
|
||||
admin.site.register(ItemGameIndex)
|
||||
admin.site.register(ItemName)
|
||||
admin.site.register(ItemPocketName)
|
||||
admin.site.register(ItemPocket)
|
||||
admin.site.register(ItemDescription)
|
||||
admin.site.register(Item)
|
||||
|
||||
admin.site.register(Language)
|
||||
admin.site.register(LanguageName)
|
||||
|
||||
admin.site.register(LocationAreaEncounterRate)
|
||||
admin.site.register(LocationAreaName)
|
||||
admin.site.register(LocationArea)
|
||||
admin.site.register(LocationGameIndex)
|
||||
admin.site.register(LocationName)
|
||||
admin.site.register(Location)
|
||||
|
||||
admin.site.register(Machine)
|
||||
|
||||
admin.site.register(MoveBattleStyle)
|
||||
admin.site.register(MoveBattleStyleName)
|
||||
admin.site.register(MoveChange)
|
||||
admin.site.register(MoveDamageClass)
|
||||
admin.site.register(MoveDamageClassDescription)
|
||||
admin.site.register(MoveEffectChange)
|
||||
admin.site.register(MoveEffectChangeDescription)
|
||||
admin.site.register(MoveEffectDescription)
|
||||
admin.site.register(MoveEffect)
|
||||
admin.site.register(MoveFlagMap)
|
||||
admin.site.register(MoveFlagDescription)
|
||||
admin.site.register(MoveFlag)
|
||||
admin.site.register(MoveFlavorText)
|
||||
admin.site.register(MoveMeta)
|
||||
admin.site.register(MoveMetaAilment)
|
||||
admin.site.register(MoveMetaAilmentName)
|
||||
admin.site.register(MoveMetaCategoryDescription)
|
||||
admin.site.register(MoveMetaCategory)
|
||||
admin.site.register(MoveMetaStatChange)
|
||||
admin.site.register(MoveName)
|
||||
admin.site.register(MoveTargetDescription)
|
||||
admin.site.register(MoveTarget)
|
||||
admin.site.register(Move)
|
||||
|
||||
admin.site.register(NatureBattleStylePreference)
|
||||
admin.site.register(NatureName)
|
||||
admin.site.register(NaturePokeathlonStat)
|
||||
admin.site.register(Nature)
|
||||
|
||||
admin.site.register(PalParkArea)
|
||||
admin.site.register(PalParkAreaName)
|
||||
admin.site.register(PalPark)
|
||||
|
||||
admin.site.register(PokeathlonStatName)
|
||||
admin.site.register(PokeathlonStat)
|
||||
|
||||
admin.site.register(Pokedex)
|
||||
admin.site.register(PokedexVersionGroup)
|
||||
admin.site.register(PokedexDescription)
|
||||
|
||||
admin.site.register(Pokemon)
|
||||
admin.site.register(PokemonAbility)
|
||||
admin.site.register(PokemonColor)
|
||||
admin.site.register(PokemonColorName)
|
||||
admin.site.register(PokemonDexNumber)
|
||||
admin.site.register(PokemonEggGroup)
|
||||
admin.site.register(PokemonEvolution)
|
||||
admin.site.register(PokemonForm)
|
||||
admin.site.register(PokemonFormName)
|
||||
admin.site.register(PokemonFormGeneration)
|
||||
admin.site.register(PokemonGameIndex)
|
||||
admin.site.register(PokemonHabitat)
|
||||
admin.site.register(PokemonHabitatName)
|
||||
admin.site.register(PokemonItem)
|
||||
admin.site.register(PokemonMove)
|
||||
admin.site.register(PokemonMoveMethod)
|
||||
admin.site.register(PokemonMoveMethodName)
|
||||
admin.site.register(PokemonShape)
|
||||
admin.site.register(PokemonShapeName)
|
||||
admin.site.register(PokemonSpecies)
|
||||
admin.site.register(PokemonSpeciesName)
|
||||
admin.site.register(PokemonSpeciesDescription)
|
||||
admin.site.register(PokemonSpeciesFlavorText)
|
||||
admin.site.register(PokemonStat)
|
||||
admin.site.register(PokemonType)
|
||||
|
||||
admin.site.register(Region)
|
||||
admin.site.register(RegionName)
|
||||
|
||||
admin.site.register(StatName)
|
||||
admin.site.register(Stat)
|
||||
|
||||
admin.site.register(SuperContestEffect)
|
||||
admin.site.register(SuperContestCombo)
|
||||
admin.site.register(SuperContestEffectDescription)
|
||||
|
||||
admin.site.register(Type)
|
||||
admin.site.register(TypeName)
|
||||
admin.site.register(TypeGameIndex)
|
||||
admin.site.register(TypeEfficacy)
|
||||
|
||||
admin.site.register(Version)
|
||||
admin.site.register(VersionName)
|
||||
admin.site.register(VersionGroup)
|
||||
admin.site.register(VersionGroupRegion)
|
||||
admin.site.register(VersionGroupPokemonMoveMethod)
|
||||
|
||||
admin.site.register(Ability)
|
||||
admin.site.register(AbilityName)
|
||||
admin.site.register(AbilityDescription)
|
||||
admin.site.register(AbilityFlavorText)
|
||||
|
|
2673
pokemon_v2/migrations/0001_squashed_0013_auto_20150420_0114.py
Executable file
2673
pokemon_v2/migrations/0001_squashed_0013_auto_20150420_0114.py
Executable file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
808
pokemon_v2/models.py
Normal file → Executable file
808
pokemon_v2/models.py
Normal file → Executable file
|
@ -22,9 +22,33 @@ class HasCharacteristic(models.Model):
|
|||
abstract = True
|
||||
|
||||
|
||||
class HasContestType(models.Model):
|
||||
|
||||
contest_type = models.ForeignKey('ContestType', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasDescription(models.Model):
|
||||
|
||||
description = models.CharField(max_length=200, default='')
|
||||
description = models.CharField(max_length=1000, default='')
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasGender(models.Model):
|
||||
|
||||
gender = models.ForeignKey('Gender', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasEffect(models.Model):
|
||||
|
||||
effect = models.CharField(max_length=4000)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
@ -38,9 +62,41 @@ class HasEggGroup(models.Model):
|
|||
abstract = True
|
||||
|
||||
|
||||
class HasEncounterMethod(models.Model):
|
||||
|
||||
encounter_method = models.ForeignKey('EncounterMethod', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasEncounterCondition(models.Model):
|
||||
|
||||
encounter_condition = models.ForeignKey('EncounterCondition', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasEvolutionTrigger(models.Model):
|
||||
|
||||
evolution_trigger = models.ForeignKey('EvolutionTrigger', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasFlavorText(models.Model):
|
||||
|
||||
flavor_text = models.CharField(max_length=200)
|
||||
flavor_text = models.CharField(max_length=500)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasFlingEffect(models.Model):
|
||||
|
||||
item_fling_effect = models.ForeignKey('ItemFlingEffect', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
@ -70,6 +126,30 @@ class HasGrowthRate(models.Model):
|
|||
abstract = True
|
||||
|
||||
|
||||
class HasItem(models.Model):
|
||||
|
||||
item = models.ForeignKey('Item', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasItemCategory(models.Model):
|
||||
|
||||
item_category = models.ForeignKey('ItemCategory', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasItemPocket(models.Model):
|
||||
|
||||
item_pocket = models.ForeignKey('ItemPocket', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasLanguage(models.Model):
|
||||
|
||||
language = models.ForeignKey('Language', blank = True, null = True)
|
||||
|
@ -78,6 +158,22 @@ class HasLanguage(models.Model):
|
|||
abstract = True
|
||||
|
||||
|
||||
class HasLocation(models.Model):
|
||||
|
||||
location = models.ForeignKey('Location', blank = True, null = True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasLocationArea(models.Model):
|
||||
|
||||
location_area = models.ForeignKey('LocationArea', blank = True, null = True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasMetaAilment(models.Model):
|
||||
|
||||
move_meta_ailment = models.ForeignKey('MoveMetaAilment', blank = True, null = True)
|
||||
|
@ -152,7 +248,95 @@ class HasNature(models.Model):
|
|||
|
||||
class HasOrder(models.Model):
|
||||
|
||||
order = models.IntegerField()
|
||||
order = models.IntegerField(blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasPokeathlonStat(models.Model):
|
||||
|
||||
pokeathlon_stat = models.ForeignKey('PokeathlonStat', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasPokedex(models.Model):
|
||||
|
||||
pokedex = models.ForeignKey('Pokedex', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasPokemon(models.Model):
|
||||
|
||||
pokemon = models.ForeignKey('Pokemon', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasPokemonColor(models.Model):
|
||||
|
||||
pokemon_color = models.ForeignKey('PokemonColor', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasPokemonForm(models.Model):
|
||||
|
||||
pokemon_form = models.ForeignKey('PokemonForm', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasPokemonHabitat(models.Model):
|
||||
|
||||
pokemon_habitat = models.ForeignKey('PokemonHabitat', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasPokemonMoveMethod(models.Model):
|
||||
|
||||
pokemon_move_method = models.ForeignKey('PokemonMoveMethod', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasPokemonShape(models.Model):
|
||||
|
||||
pokemon_shape = models.ForeignKey('PokemonShape', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasPokemonSpecies(models.Model):
|
||||
|
||||
pokemon_species = models.ForeignKey('PokemonSpecies', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasRegion(models.Model):
|
||||
|
||||
region = models.ForeignKey('Region', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasShortEffect(models.Model):
|
||||
|
||||
short_effect = models.CharField(max_length=300)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
@ -174,6 +358,14 @@ class HasType(models.Model):
|
|||
abstract = True
|
||||
|
||||
|
||||
class HasVersion(models.Model):
|
||||
|
||||
version = models.ForeignKey('Version', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class HasVersionGroup(models.Model):
|
||||
|
||||
version_group = models.ForeignKey('VersionGroup', blank=True, null=True)
|
||||
|
@ -182,28 +374,12 @@ class HasVersionGroup(models.Model):
|
|||
abstract = True
|
||||
|
||||
|
||||
class IsName(HasLanguage, HasName):
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class IsDescription(HasLanguage, HasDescription):
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class IsEffectDescription(HasLanguage):
|
||||
|
||||
short_effect = models.CharField(max_length=300)
|
||||
|
||||
effect = models.CharField(max_length=4000)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class IsName(HasLanguage, HasName):
|
||||
|
||||
class Meta:
|
||||
|
@ -223,6 +399,7 @@ class IsFlavorText(HasLanguage, HasFlavorText):
|
|||
class Version(HasName, HasVersionGroup):
|
||||
pass
|
||||
|
||||
|
||||
class VersionName(IsName):
|
||||
|
||||
version = models.ForeignKey('Version', blank=True, null=True)
|
||||
|
@ -232,9 +409,8 @@ class VersionGroup(HasName, HasGeneration, HasOrder):
|
|||
pass
|
||||
|
||||
|
||||
class VersionGroupRegion(HasVersionGroup):
|
||||
|
||||
region_id = models.IntegerField()
|
||||
class VersionGroupRegion(HasVersionGroup, HasRegion):
|
||||
pass
|
||||
|
||||
|
||||
class VersionGroupPokemonMoveMethod(HasVersionGroup):
|
||||
|
@ -266,9 +442,8 @@ class LanguageName(IsName):
|
|||
# GENERATION MODELS #
|
||||
#######################
|
||||
|
||||
class Generation(HasName):
|
||||
|
||||
main_region_id = models.IntegerField()
|
||||
class Generation(HasName, HasRegion):
|
||||
pass
|
||||
|
||||
|
||||
class GenerationName(IsName, HasGeneration):
|
||||
|
@ -276,6 +451,19 @@ class GenerationName(IsName, HasGeneration):
|
|||
|
||||
|
||||
|
||||
###################
|
||||
# REGION MODELS #
|
||||
###################
|
||||
|
||||
class Region(HasName):
|
||||
pass
|
||||
|
||||
|
||||
class RegionName(IsName, HasRegion):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
####################
|
||||
# ABILITY MODELS #
|
||||
####################
|
||||
|
@ -285,7 +473,7 @@ class Ability(HasName, HasGeneration):
|
|||
is_main_series = models.BooleanField(default = False)
|
||||
|
||||
|
||||
class AbilityDescription(IsEffectDescription, HasAbility):
|
||||
class AbilityDescription(HasLanguage, HasEffect, HasShortEffect, HasAbility):
|
||||
pass
|
||||
|
||||
|
||||
|
@ -297,6 +485,15 @@ class AbilityName(IsName, HasAbility):
|
|||
pass
|
||||
|
||||
|
||||
class AbilityChange(HasAbility):
|
||||
pass
|
||||
|
||||
|
||||
class AbilityChangeDescription(HasLanguage, HasEffect):
|
||||
|
||||
ability_change = models.ForeignKey(AbilityChange, blank=True, null=True)
|
||||
|
||||
|
||||
|
||||
#################
|
||||
# TYPE MODELS #
|
||||
|
@ -367,6 +564,146 @@ class EggGroupName(IsName, HasEggGroup):
|
|||
|
||||
|
||||
|
||||
#################
|
||||
# ITEM MODELS #
|
||||
#################
|
||||
|
||||
class ItemPocket(HasName):
|
||||
pass
|
||||
|
||||
|
||||
class ItemPocketName(IsName, HasItemPocket):
|
||||
pass
|
||||
|
||||
|
||||
class ItemCategory(HasName, HasItemPocket):
|
||||
pass
|
||||
|
||||
|
||||
class ItemCategoryName(IsName, HasItemCategory):
|
||||
pass
|
||||
|
||||
|
||||
class ItemFlingEffect(models.Model):
|
||||
pass
|
||||
|
||||
|
||||
class ItemFlingEffectDescription(HasFlingEffect, HasLanguage, HasEffect):
|
||||
pass
|
||||
|
||||
|
||||
class Item(HasName, HasItemCategory, HasFlingEffect):
|
||||
|
||||
cost = models.IntegerField(blank=True, null=True)
|
||||
|
||||
fling_power = models.IntegerField(blank=True, null=True)
|
||||
|
||||
|
||||
class ItemDescription(HasLanguage, HasEffect, HasShortEffect):
|
||||
|
||||
item = models.ForeignKey(Item, blank=True, null=True)
|
||||
|
||||
|
||||
class ItemName(HasItem, IsName):
|
||||
pass
|
||||
|
||||
|
||||
class ItemFlavorText(HasItem, HasVersionGroup, IsFlavorText):
|
||||
pass
|
||||
|
||||
|
||||
class ItemFlag(HasName):
|
||||
pass
|
||||
|
||||
|
||||
class ItemFlagDescription(IsDescription, HasName):
|
||||
|
||||
item_flag = models.ForeignKey(ItemFlag, blank=True, null=True)
|
||||
|
||||
|
||||
class ItemFlagMap(HasItem):
|
||||
|
||||
item_flag = models.ForeignKey(ItemFlag, blank=True, null=True)
|
||||
|
||||
|
||||
class ItemGameIndex(HasItem, HasGeneration, HasGameIndex):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
####################
|
||||
# CONTEST MODELS #
|
||||
####################
|
||||
|
||||
class ContestType(HasName):
|
||||
pass
|
||||
|
||||
|
||||
class ContestTypeName(HasContestType, IsName):
|
||||
|
||||
flavor = models.CharField(max_length = 10)
|
||||
|
||||
color = models.CharField(max_length = 10)
|
||||
|
||||
|
||||
class ContestEffect(models.Model):
|
||||
|
||||
appeal = models.IntegerField()
|
||||
|
||||
jam = models.IntegerField()
|
||||
|
||||
|
||||
class ContestEffectDescription(HasLanguage, HasEffect, HasFlavorText):
|
||||
|
||||
contest_effect = models.ForeignKey(ContestEffect, blank=True, null=True)
|
||||
|
||||
|
||||
class ContestCombo(models.Model):
|
||||
|
||||
first_move = models.ForeignKey('Move', blank=True, null=True, related_name='first_move')
|
||||
|
||||
second_move = models.ForeignKey('Move', blank=True, null=True, related_name='second_move')
|
||||
|
||||
|
||||
|
||||
##################
|
||||
# BERRY MODELS #
|
||||
##################
|
||||
|
||||
class BerryFirmness(HasName):
|
||||
pass
|
||||
|
||||
|
||||
class BerryFirmnessName(IsName):
|
||||
|
||||
berry_firmness = models.ForeignKey(BerryFirmness, blank=True, null=True)
|
||||
|
||||
|
||||
class Berry(HasItem, HasNature):
|
||||
|
||||
berry_firmness = models.ForeignKey(BerryFirmness, blank=True, null=True)
|
||||
|
||||
natural_gift_power = models.IntegerField()
|
||||
|
||||
size = models.IntegerField()
|
||||
|
||||
max_harvest = models.IntegerField()
|
||||
|
||||
growth_time = models.IntegerField()
|
||||
|
||||
soil_dryness = models.IntegerField()
|
||||
|
||||
smoothness = models.IntegerField()
|
||||
|
||||
|
||||
class BerryFlavor(HasContestType):
|
||||
|
||||
berry = models.ForeignKey(Berry, blank=True, null=True)
|
||||
|
||||
flavor = models.IntegerField()
|
||||
|
||||
|
||||
|
||||
########################
|
||||
# GROWTH RATE MODELS #
|
||||
########################
|
||||
|
@ -391,9 +728,9 @@ class Nature(HasName):
|
|||
|
||||
increased_stat_id = models.ForeignKey(Stat, blank = True, null = True, related_name = 'increased')
|
||||
|
||||
hates_flavor_id = models.IntegerField()
|
||||
hates_flavor_id = models.ForeignKey(BerryFlavor, blank = True, null = True, related_name = 'hates_flavor')
|
||||
|
||||
likes_flavor_id = models.IntegerField()
|
||||
likes_flavor_id = models.ForeignKey(BerryFlavor, blank = True, null = True, related_name = 'likes_flavor')
|
||||
|
||||
game_index = models.IntegerField()
|
||||
|
||||
|
@ -402,9 +739,7 @@ class NatureName(IsName, HasNature):
|
|||
pass
|
||||
|
||||
|
||||
class NaturePokeathlonStat(HasNature):
|
||||
|
||||
pokeathlon_stat_id = models.ForeignKey(Stat, blank = True, null = True)
|
||||
class NaturePokeathlonStat(HasNature, HasPokeathlonStat):
|
||||
|
||||
max_change = models.IntegerField()
|
||||
|
||||
|
@ -419,6 +754,90 @@ class NatureBattleStylePreference(HasNature):
|
|||
|
||||
|
||||
|
||||
#####################
|
||||
# LOCATION MODELS #
|
||||
#####################
|
||||
|
||||
class Location(HasRegion, HasName):
|
||||
pass
|
||||
|
||||
|
||||
class LocationName(HasLocation, IsName):
|
||||
pass
|
||||
|
||||
|
||||
class LocationGameIndex(HasLocation, HasGeneration, HasGameIndex):
|
||||
pass
|
||||
|
||||
|
||||
class LocationArea(HasLocation, HasGameIndex, HasName):
|
||||
pass
|
||||
|
||||
|
||||
class LocationAreaName(IsName, HasLocationArea):
|
||||
pass
|
||||
|
||||
|
||||
class LocationAreaEncounterRate(HasEncounterMethod, HasLocationArea, HasVersion):
|
||||
|
||||
rate = models.IntegerField()
|
||||
|
||||
|
||||
|
||||
######################
|
||||
# ENCOUNTER MODELS #
|
||||
######################
|
||||
|
||||
class EncounterMethod(HasName, HasOrder):
|
||||
pass
|
||||
|
||||
|
||||
class EncounterMethodName(HasEncounterMethod, IsName):
|
||||
pass
|
||||
|
||||
|
||||
class EncounterSlot(HasVersionGroup, HasEncounterMethod):
|
||||
|
||||
slot = models.IntegerField(blank = True, null = True)
|
||||
|
||||
rarity = models.IntegerField()
|
||||
|
||||
|
||||
class Encounter(HasVersion, HasLocationArea, HasPokemon):
|
||||
|
||||
encounter_slot = models.ForeignKey(EncounterSlot, blank = True, null = True)
|
||||
|
||||
min_level = models.IntegerField()
|
||||
|
||||
max_level = models.IntegerField()
|
||||
|
||||
|
||||
class EncounterCondition(HasName):
|
||||
pass
|
||||
|
||||
|
||||
class EncounterConditionName(HasEncounterCondition, IsName):
|
||||
pass
|
||||
|
||||
|
||||
class EncounterConditionValue(HasEncounterCondition, HasName):
|
||||
|
||||
is_default = models.BooleanField(default = False)
|
||||
|
||||
|
||||
class EncounterConditionValueName(IsName):
|
||||
|
||||
encounter_condition_value = models.ForeignKey(EncounterConditionValue, blank = True, null = True)
|
||||
|
||||
|
||||
class EncounterConditionValueMap(models.Model):
|
||||
|
||||
encounter = models.ForeignKey(Encounter, blank = True, null = True)
|
||||
|
||||
encounter_condition_value = models.ForeignKey(EncounterConditionValue, blank = True, null = True)
|
||||
|
||||
|
||||
|
||||
#################
|
||||
# MOVE MODELS #
|
||||
#################
|
||||
|
@ -497,7 +916,7 @@ class MoveEffect(models.Model):
|
|||
pass
|
||||
|
||||
|
||||
class MoveEffectDescription(HasMoveEffect, IsEffectDescription):
|
||||
class MoveEffectDescription(HasLanguage, HasMoveEffect, HasEffect, HasShortEffect):
|
||||
pass
|
||||
|
||||
|
||||
|
@ -505,12 +924,10 @@ class MoveEffectChange(HasMoveEffect, HasVersionGroup):
|
|||
pass
|
||||
|
||||
|
||||
class MoveEffectChangeDescription(HasLanguage):
|
||||
class MoveEffectChangeDescription(HasLanguage, HasEffect):
|
||||
|
||||
move_effect_change = models.ForeignKey('MoveEffectChange', blank = True, null = True)
|
||||
|
||||
effect = models.CharField(max_length=2000)
|
||||
|
||||
|
||||
|
||||
######################
|
||||
|
@ -589,3 +1006,324 @@ class MoveMetaCategoryDescription(HasMetaCategory, IsDescription):
|
|||
class MoveMetaStatChange(HasMove, HasStat):
|
||||
|
||||
change = models.IntegerField()
|
||||
|
||||
|
||||
|
||||
#######################
|
||||
# EXPERIENCE MODELS #
|
||||
#######################
|
||||
|
||||
class Experience(HasGrowthRate):
|
||||
|
||||
level = models.IntegerField()
|
||||
|
||||
experience = models.IntegerField()
|
||||
|
||||
|
||||
|
||||
###################
|
||||
# GENDER MODELS #
|
||||
###################
|
||||
|
||||
class Gender(HasName):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
####################
|
||||
# MACHINE MODELS #
|
||||
####################
|
||||
|
||||
class Machine(HasGrowthRate, HasItem):
|
||||
|
||||
machine_number = models.IntegerField()
|
||||
|
||||
version_group = models.ForeignKey(VersionGroup, blank=True, null=True)
|
||||
|
||||
move = models.ForeignKey(Move, blank=True, null=True)
|
||||
|
||||
|
||||
|
||||
#######################
|
||||
# POKEATHLON MODELS #
|
||||
#######################
|
||||
|
||||
class PokeathlonStat(HasName):
|
||||
pass
|
||||
|
||||
|
||||
class PokeathlonStatName(IsName, HasPokeathlonStat):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
#####################
|
||||
# PAL PARK MODELS #
|
||||
#####################
|
||||
|
||||
class PalParkArea(HasName):
|
||||
pass
|
||||
|
||||
|
||||
class PalParkAreaName(IsName):
|
||||
|
||||
pal_park_area = models.ForeignKey(PalParkArea, blank = True, null = True)
|
||||
|
||||
|
||||
class PalPark(HasPokemonSpecies):
|
||||
|
||||
pal_park_area = models.ForeignKey(PalParkArea, blank = True, null = True)
|
||||
|
||||
base_score = models.IntegerField(blank = True, null = True)
|
||||
|
||||
rate = models.IntegerField()
|
||||
|
||||
|
||||
|
||||
##########################
|
||||
# SUPER CONTEST MODELS #
|
||||
##########################
|
||||
|
||||
class SuperContestEffect(models.Model):
|
||||
|
||||
appeal = models.IntegerField()
|
||||
|
||||
|
||||
class SuperContestEffectDescription(IsFlavorText):
|
||||
|
||||
super_contest_effect = models.ForeignKey(SuperContestEffect, blank = True, null = True)
|
||||
|
||||
|
||||
class SuperContestCombo(models.Model):
|
||||
|
||||
first_move = models.ForeignKey(Move, blank = True, null = True, related_name = 'first')
|
||||
|
||||
second_move = models.ForeignKey(Move, blank = True, null = True, related_name = 'second')
|
||||
|
||||
|
||||
|
||||
######################
|
||||
# EVOLUTION MODELS #
|
||||
######################
|
||||
|
||||
class EvolutionChain(models.Model):
|
||||
|
||||
baby_evolution_item = models.ForeignKey(Item, blank=True, null=True)
|
||||
|
||||
|
||||
class EvolutionTrigger(HasName):
|
||||
pass
|
||||
|
||||
|
||||
class EvolutionTriggerName(HasEvolutionTrigger, IsName):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
####################
|
||||
# POKEDEX MODELS #
|
||||
####################
|
||||
|
||||
class Pokedex(HasName, HasRegion):
|
||||
|
||||
is_main_series = models.BooleanField(default = False)
|
||||
|
||||
|
||||
class PokedexDescription(HasPokedex, HasName, IsDescription):
|
||||
pass
|
||||
|
||||
|
||||
class PokedexVersionGroup(HasPokedex, HasVersionGroup):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
####################
|
||||
# POKEMON MODELS #
|
||||
####################
|
||||
|
||||
class PokemonSpecies(HasName, HasGeneration, HasPokemonColor,
|
||||
HasPokemonShape, HasGrowthRate, HasOrder):
|
||||
|
||||
evolves_from_species = models.ForeignKey('self', blank=True, null=True)
|
||||
|
||||
evolution_chain = models.ForeignKey(EvolutionChain, blank=True, null=True)
|
||||
|
||||
pokemon_habitat = models.ForeignKey('PokemonHabitat', blank=True, null=True)
|
||||
|
||||
gender_rate = models.IntegerField()
|
||||
|
||||
capture_rate = models.IntegerField()
|
||||
|
||||
base_happiness = models.IntegerField()
|
||||
|
||||
is_baby = models.BooleanField(default = False)
|
||||
|
||||
hatch_counter = models.IntegerField()
|
||||
|
||||
has_gender_differences = models.BooleanField(default = False)
|
||||
|
||||
forms_switchable = models.BooleanField(default = False)
|
||||
|
||||
|
||||
class PokemonSpeciesName(IsName, HasPokemonSpecies):
|
||||
|
||||
genus = models.CharField(max_length = 30)
|
||||
|
||||
|
||||
class PokemonSpeciesDescription(HasPokemonSpecies, IsDescription):
|
||||
pass
|
||||
|
||||
|
||||
class PokemonSpeciesFlavorText(IsFlavorText, HasPokemonSpecies, HasVersion):
|
||||
pass
|
||||
|
||||
|
||||
class Pokemon(HasName, HasPokemonSpecies, HasOrder):
|
||||
|
||||
height = models.IntegerField()
|
||||
|
||||
weight = models.IntegerField()
|
||||
|
||||
base_experience = models.IntegerField()
|
||||
|
||||
is_default = models.BooleanField(default = False)
|
||||
|
||||
|
||||
class PokemonAbility(HasPokemon, HasAbility):
|
||||
|
||||
is_hidden = models.BooleanField(default = False)
|
||||
|
||||
slot = models.IntegerField()
|
||||
|
||||
|
||||
class PokemonColor(HasName):
|
||||
pass
|
||||
|
||||
|
||||
class PokemonColorName(HasPokemonColor, IsName):
|
||||
pass
|
||||
|
||||
|
||||
class PokemonDexNumber(HasPokemonSpecies, HasPokedex):
|
||||
|
||||
pokedex_number = models.IntegerField()
|
||||
|
||||
|
||||
class PokemonEggGroup(HasPokemonSpecies, HasEggGroup):
|
||||
pass
|
||||
|
||||
|
||||
class PokemonEvolution(HasEvolutionTrigger, HasGender):
|
||||
|
||||
evolution_item = models.ForeignKey(Item, blank=True, null=True, related_name='evolution_item')
|
||||
|
||||
evolved_species = models.ForeignKey(PokemonSpecies, related_name="evolved_species", blank=True, null=True)
|
||||
|
||||
min_level = models.IntegerField(blank=True, null=True)
|
||||
|
||||
location_id = models.IntegerField(blank=True, null=True) # need location tables
|
||||
|
||||
held_item = models.ForeignKey(Item, blank=True, null=True, related_name='held_item')
|
||||
|
||||
time_of_day = models.CharField(max_length = 10, blank=True, null=True)
|
||||
|
||||
known_move = models.ForeignKey(Move, blank=True, null=True)
|
||||
|
||||
known_move_type = models.ForeignKey(Type, related_name="known_move", blank=True, null=True)
|
||||
|
||||
min_happiness = models.IntegerField(blank=True, null=True)
|
||||
|
||||
min_beauty = models.IntegerField(blank=True, null=True)
|
||||
|
||||
min_affection = models.IntegerField(blank=True, null=True)
|
||||
|
||||
relative_physical_stats = models.IntegerField(blank=True, null=True)
|
||||
|
||||
party_species = models.ForeignKey(PokemonSpecies, related_name="party_species", blank=True, null=True)
|
||||
|
||||
party_type = models.ForeignKey(Type, related_name="party_type", blank=True, null=True)
|
||||
|
||||
trade_species = models.ForeignKey(PokemonSpecies, related_name="trade_species", blank=True, null=True)
|
||||
|
||||
needs_overworld_rain = models.BooleanField(default = False)
|
||||
|
||||
turn_upside_down = models.BooleanField(default = False)
|
||||
|
||||
|
||||
class PokemonForm(HasName, HasPokemon, HasOrder):
|
||||
|
||||
form_identifier = models.CharField(max_length = 30)
|
||||
|
||||
introduced_in_version_group = models.ForeignKey(VersionGroup, blank=True, null=True)
|
||||
|
||||
is_default = models.BooleanField(default = False)
|
||||
|
||||
is_battle_only = models.BooleanField(default = False)
|
||||
|
||||
is_mega = models.BooleanField(default = False)
|
||||
|
||||
form_order = models.IntegerField(blank=True, null=True)
|
||||
|
||||
|
||||
class PokemonFormGeneration(HasPokemonForm, HasGeneration, HasGameIndex):
|
||||
pass
|
||||
|
||||
|
||||
class PokemonFormName(HasPokemonForm, IsName):
|
||||
|
||||
pokemon_name = models.CharField(max_length = 30)
|
||||
|
||||
|
||||
class PokemonGameIndex(HasPokemon, HasGameIndex, HasVersion):
|
||||
pass
|
||||
|
||||
|
||||
class PokemonHabitat(HasName):
|
||||
pass
|
||||
|
||||
|
||||
class PokemonHabitatName(IsName):
|
||||
|
||||
pokemon_habitat = models.ForeignKey(PokemonHabitat, blank=True, null=True)
|
||||
|
||||
|
||||
class PokemonItem(HasPokemon, HasVersion, HasItem):
|
||||
|
||||
rarity = models.IntegerField()
|
||||
|
||||
|
||||
class PokemonMoveMethod(HasName):
|
||||
pass
|
||||
|
||||
|
||||
class PokemonMoveMethodName(IsName, HasPokemonMoveMethod, HasDescription):
|
||||
pass
|
||||
|
||||
|
||||
class PokemonMove(HasPokemon, HasPokemonMoveMethod, HasVersionGroup, HasMove, HasOrder):
|
||||
|
||||
level = models.IntegerField()
|
||||
|
||||
|
||||
class PokemonShape(HasName):
|
||||
pass
|
||||
|
||||
|
||||
class PokemonShapeName(IsName):
|
||||
|
||||
awesome_name = models.CharField(max_length = 30)
|
||||
|
||||
pokemon_shape = models.ForeignKey(PokemonShape, blank=True, null=True)
|
||||
|
||||
|
||||
class PokemonStat(HasPokemon, HasStat):
|
||||
|
||||
base_stat = models.IntegerField()
|
||||
|
||||
effort = models.IntegerField()
|
||||
|
||||
|
||||
class PokemonType(HasPokemon, HasType):
|
||||
|
||||
slot = models.IntegerField()
|
||||
|
|
Loading…
Reference in a new issue