From d5d55dad7f65d60da50ee54038e703f6d6ebda9e Mon Sep 17 00:00:00 2001 From: Paul Hallett Date: Tue, 18 Feb 2020 09:58:07 +1300 Subject: [PATCH] Autoformat entire project, tidy up makefile --- .circleci/config.yml | 4 +- Makefile | 33 +- config/docker-compose.py | 18 +- config/docker.py | 18 +- config/local.py | 12 +- config/settings.py | 107 +- config/urls.py | 2 +- pokemon_v2/api.py | 89 +- .../0001_squashed_0002_auto_20160301_1408.py | 8358 ++++++++++++----- ...rites_pokemonformsprites_pokemonsprites.py | 89 +- .../migrations/0003_auto_20160530_1132.py | 326 +- pokemon_v2/models.py | 676 +- pokemon_v2/serializers.py | 1781 ++-- pokemon_v2/test_models.py | 7 +- pokemon_v2/tests.py | 4862 ++++++---- pokemon_v2/urls.py | 9 +- test-requirements.txt | 2 + 17 files changed, 10552 insertions(+), 5841 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8df0bf654..03baac51d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -8,10 +8,10 @@ jobs: - checkout - run: name: Install deps - command: sudo make install && sudo make dev-install + command: sudo make dev-install - run: name: Linting - command: make lint + command: make format-check - run: name: Run tests command: make test diff --git a/Makefile b/Makefile index 64d55dd29..7fb7a0c6d 100755 --- a/Makefile +++ b/Makefile @@ -1,29 +1,38 @@ -install: +.PHONY: help + +help: + @grep -E '^[a-zA-Z_-]+:.*?# .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?# "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + + +install: # Install base requirements to run project pip install -r requirements.txt -dev-install: +dev-install: # Install developer requirements + base requirements pip install -r test-requirements.txt -lint: - pylint config data pokemon_v2 --load-plugins pylint_django - -setup: +setup: # Set up the project database python manage.py migrate --settings=config.local -wipe_db: +wipe_db: # Delete's the project database rm -rf db.sqlite3 -serve: +serve: # Run the project locally python manage.py runserver --settings=config.local -test: +test: # Run tests python manage.py test --settings=config.local -clean: +clean: # Remove any pyc files find . -type f -name '*.pyc' -delete -migrate: +migrate: # run any outstanding migrations python manage.py migrate --settings=config.local -shell: +shell: # Load a shell python manage.py shell --settings=config.local + +format: # Format the source code + black . + +format-check: # Check the source code has been formatted + black . --check diff --git a/config/docker-compose.py b/config/docker-compose.py index a51ed7301..6e9a420fb 100644 --- a/config/docker-compose.py +++ b/config/docker-compose.py @@ -2,13 +2,13 @@ from .settings import * DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': 'pokeapi', - 'USER': 'ash', - 'PASSWORD': 'pokemon', - 'HOST': 'db', - 'PORT': 5432, + "default": { + "ENGINE": "django.db.backends.postgresql_psycopg2", + "NAME": "pokeapi", + "USER": "ash", + "PASSWORD": "pokemon", + "HOST": "db", + "PORT": 5432, } } @@ -17,9 +17,7 @@ "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://cache:6379/1", - "OPTIONS": { - "CLIENT_CLASS": "django_redis.client.DefaultClient", - } + "OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}, } } diff --git a/config/docker.py b/config/docker.py index f86dc0966..1eb180de4 100755 --- a/config/docker.py +++ b/config/docker.py @@ -2,13 +2,13 @@ from .settings import * DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': 'pokeapi', - 'USER': 'ash', - 'PASSWORD': 'pokemon', - 'HOST': 'localhost', - 'PORT': '', + "default": { + "ENGINE": "django.db.backends.postgresql_psycopg2", + "NAME": "pokeapi", + "USER": "ash", + "PASSWORD": "pokemon", + "HOST": "localhost", + "PORT": "", } } @@ -17,9 +17,7 @@ "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", - "OPTIONS": { - "CLIENT_CLASS": "django_redis.client.DefaultClient", - } + "OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}, } } diff --git a/config/local.py b/config/local.py index af1fbcdbe..c9f568ed5 100755 --- a/config/local.py +++ b/config/local.py @@ -1,17 +1,13 @@ from .settings import * DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(PROJECT_ROOT, 'db.sqlite3'), + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": os.path.join(PROJECT_ROOT, "db.sqlite3"), } } -CACHES = { - 'default': { - 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', - } -} +CACHES = {"default": {"BACKEND": "django.core.cache.backends.dummy.DummyCache",}} DEBUG = True TASTYPIE_FULL_DEBUG = True diff --git a/config/settings.py b/config/settings.py index 313f52127..adb7a80c0 100755 --- a/config/settings.py +++ b/config/settings.py @@ -8,23 +8,21 @@ TEMPLATE_DEBUG = DEBUG -ADMINS = ( - ('Paul Hallett', 'paulandrewhallett@gmail.com'), -) +ADMINS = (("Paul Hallett", "paulandrewhallett@gmail.com"),) -EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' +EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" MANAGERS = ADMINS -BASE_URL = 'http://pokeapi.co' +BASE_URL = "http://pokeapi.co" # Hosts/domain names that are valid for this site; required if DEBUG is False # See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts -ALLOWED_HOSTS = ['.pokeapi.co', 'localhost', '127.0.0.1'] +ALLOWED_HOSTS = [".pokeapi.co", "localhost", "127.0.0.1"] -TIME_ZONE = 'Europe/London' +TIME_ZONE = "Europe/London" -LANGUAGE_CODE = 'en-gb' +LANGUAGE_CODE = "en-gb" SITE_ID = 1 @@ -40,33 +38,33 @@ USE_TZ = True # Explicitly define test runner to avoid warning messages on test execution -TEST_RUNNER = 'django.test.runner.DiscoverRunner' +TEST_RUNNER = "django.test.runner.DiscoverRunner" -SECRET_KEY = '4nksdock439320df*(^x2_scm-o$*py3e@-awu-n^hipkm%2l$sw$&2l#' +SECRET_KEY = "4nksdock439320df*(^x2_scm-o$*py3e@-awu-n^hipkm%2l$sw$&2l#" MIDDLEWARE = [ - 'corsheaders.middleware.CorsMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', + "corsheaders.middleware.CorsMiddleware", + "django.middleware.common.CommonMiddleware", + "django.contrib.sessions.middleware.SessionMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", + "django.middleware.clickjacking.XFrameOptionsMiddleware", ] -ROOT_URLCONF = 'config.urls' +ROOT_URLCONF = "config.urls" -WSGI_APPLICATION = 'config.wsgi.application' +WSGI_APPLICATION = "config.wsgi.application" DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': 'pokeapi_co_db', - 'USER': 'root', - 'PASSWORD': 'pokeapi', - 'HOST': 'localhost', - 'PORT': '', - 'CONN_MAX_AGE': 30 + "default": { + "ENGINE": "django.db.backends.postgresql_psycopg2", + "NAME": "pokeapi_co_db", + "USER": "root", + "PASSWORD": "pokeapi", + "HOST": "localhost", + "PORT": "", + "CONN_MAX_AGE": 30, } } @@ -74,57 +72,46 @@ "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", - "OPTIONS": { - "CLIENT_CLASS": "django_redis.client.DefaultClient", - } + "OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}, } } SECRET_KEY = os.environ.get( - 'SECRET_KEY', - 'ubx+22!jbo(^x2_scm-o$*py3e@-awu-n^hipkm%2l$sw$&2l#') + "SECRET_KEY", "ubx+22!jbo(^x2_scm-o$*py3e@-awu-n^hipkm%2l$sw$&2l#" +) CUSTOM_APPS = ( - 'tastypie', - 'pokemon_v2', + "tastypie", + "pokemon_v2", ) INSTALLED_APPS = ( - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.sites', - 'django.contrib.admin', - 'django.contrib.humanize', - 'corsheaders', - 'rest_framework', - 'cachalot' + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.sites", + "django.contrib.admin", + "django.contrib.humanize", + "corsheaders", + "rest_framework", + "cachalot", ) + CUSTOM_APPS API_LIMIT_PER_PAGE = 1 -TASTYPIE_DEFAULT_FORMATS = ['json'] +TASTYPIE_DEFAULT_FORMATS = ["json"] CORS_ORIGIN_ALLOW_ALL = True -CORS_ALLOW_METHODS = ( - 'GET' -) +CORS_ALLOW_METHODS = "GET" -CORS_URLS_REGEX = r'^/api/.*$' +CORS_URLS_REGEX = r"^/api/.*$" REST_FRAMEWORK = { - 'DEFAULT_RENDERER_CLASSES': ( - 'drf_ujson.renderers.UJSONRenderer', - ), - 'DEFAULT_PARSER_CLASSES': ( - 'drf_ujson.renderers.UJSONRenderer', - ), - - 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination', - - 'PAGE_SIZE': 20, - - 'PAGINATE_BY': 20 + "DEFAULT_RENDERER_CLASSES": ("drf_ujson.renderers.UJSONRenderer",), + "DEFAULT_PARSER_CLASSES": ("drf_ujson.renderers.UJSONRenderer",), + "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.LimitOffsetPagination", + "PAGE_SIZE": 20, + "PAGINATE_BY": 20, } diff --git a/config/urls.py b/config/urls.py index 07557a8a8..ba54b37ff 100755 --- a/config/urls.py +++ b/config/urls.py @@ -4,5 +4,5 @@ # pylint: disable=invalid-name urlpatterns = [ - url(r'^', include(pokemon_v2_urls)), + url(r"^", include(pokemon_v2_urls)), ] diff --git a/pokemon_v2/api.py b/pokemon_v2/api.py index 46c5bc117..8a5225c24 100644 --- a/pokemon_v2/api.py +++ b/pokemon_v2/api.py @@ -14,7 +14,8 @@ # BEHAVIOR ABSTRACTIONS # ########################### -class ListOrDetailSerialRelation(): + +class ListOrDetailSerialRelation: """ Mixin to allow association with separate serializers for list or detail view. @@ -23,12 +24,12 @@ class ListOrDetailSerialRelation(): list_serializer_class = None def get_serializer_class(self): - if (self.action == 'list' and self.list_serializer_class is not None): + if self.action == "list" and self.list_serializer_class is not None: return self.list_serializer_class return self.serializer_class -class NameOrIdRetrieval(): +class NameOrIdRetrieval: """ Mixin to allow retrieval of resources by pk (in this case ID) or by name @@ -40,7 +41,7 @@ class NameOrIdRetrieval(): def get_object(self): queryset = self.get_queryset() queryset = self.filter_queryset(queryset) - lookup = self.kwargs['pk'] + lookup = self.kwargs["pk"] if self.idPattern.match(lookup): resp = get_object_or_404(queryset, pk=lookup) @@ -54,8 +55,9 @@ def get_object(self): return resp -class PokeapiCommonViewset(ListOrDetailSerialRelation, - NameOrIdRetrieval, viewsets.ReadOnlyModelViewSet): +class PokeapiCommonViewset( + ListOrDetailSerialRelation, NameOrIdRetrieval, viewsets.ReadOnlyModelViewSet +): pass @@ -63,6 +65,7 @@ class PokeapiCommonViewset(ListOrDetailSerialRelation, # APIS # ########## + class AbilityResource(PokeapiCommonViewset): queryset = Ability.objects.all() @@ -352,7 +355,7 @@ class PokemonResource(PokeapiCommonViewset): class PokemonSpeciesResource(PokeapiCommonViewset): - queryset = PokemonSpecies.objects.all().order_by('id') + queryset = PokemonSpecies.objects.all().order_by("id") serializer_class = PokemonSpeciesDetailSerializer list_serializer_class = PokemonSpeciesSummarySerializer @@ -415,10 +418,11 @@ def get(self, request, pokemon_id): encounter_objects = Encounter.objects.filter(pokemon=pokemon) - area_ids = (encounter_objects - .order_by('location_area') - .distinct('location_area') - .values_list('location_area', flat=True)) + area_ids = ( + encounter_objects.order_by("location_area") + .distinct("location_area") + .values_list("location_area", flat=True) + ) location_area_objects = LocationArea.objects.filter(pk__in=area_ids) version_objects = Version.objects @@ -431,10 +435,11 @@ def get(self, request, pokemon_id): area_encounters = encounter_objects.filter(location_area_id=area_id) - version_ids = (area_encounters - .order_by('version_id') - .distinct('version_id') - .values_list('version_id', flat=True)) + version_ids = ( + area_encounters.order_by("version_id") + .distinct("version_id") + .values_list("version_id", flat=True) + ) version_details_list = [] @@ -442,40 +447,48 @@ def get(self, request, pokemon_id): version = version_objects.get(pk=version_id) - version_encounters = (area_encounters - .filter(version_id=version_id) - .order_by('encounter_slot_id')) + version_encounters = area_encounters.filter( + version_id=version_id + ).order_by("encounter_slot_id") encounters_data = EncounterDetailSerializer( - version_encounters, many=True, context=self.context).data + version_encounters, many=True, context=self.context + ).data max_chance = 0 encounter_details_list = [] for encounter in encounters_data: - slot = EncounterSlot.objects.get(pk=encounter['encounter_slot']) + slot = EncounterSlot.objects.get(pk=encounter["encounter_slot"]) slot_data = EncounterSlotSerializer(slot, context=self.context).data - del encounter['pokemon'] - del encounter['encounter_slot'] - del encounter['location_area'] - del encounter['version'] - encounter['chance'] = slot_data['chance'] - max_chance += slot_data['chance'] - encounter['method'] = slot_data['encounter_method'] + del encounter["pokemon"] + del encounter["encounter_slot"] + del encounter["location_area"] + del encounter["version"] + encounter["chance"] = slot_data["chance"] + max_chance += slot_data["chance"] + encounter["method"] = slot_data["encounter_method"] encounter_details_list.append(encounter) - version_details_list.append({ - 'version': VersionSummarySerializer(version, context=self.context).data, - 'max_chance': max_chance, - 'encounter_details': encounter_details_list - }) - - encounters_list.append({ - 'location_area': LocationAreaSummarySerializer( - location_area, context=self.context).data, - 'version_details': version_details_list - }) + version_details_list.append( + { + "version": VersionSummarySerializer( + version, context=self.context + ).data, + "max_chance": max_chance, + "encounter_details": encounter_details_list, + } + ) + + encounters_list.append( + { + "location_area": LocationAreaSummarySerializer( + location_area, context=self.context + ).data, + "version_details": version_details_list, + } + ) return Response(encounters_list) diff --git a/pokemon_v2/migrations/0001_squashed_0002_auto_20160301_1408.py b/pokemon_v2/migrations/0001_squashed_0002_auto_20160301_1408.py index 888114f6a..3ef0dccbb 100644 --- a/pokemon_v2/migrations/0001_squashed_0002_auto_20160301_1408.py +++ b/pokemon_v2/migrations/0001_squashed_0002_auto_20160301_1408.py @@ -10,3117 +10,6297 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name='Language', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('iso639', models.CharField(max_length=2)), - ('iso3166', models.CharField(max_length=2)), - ('name', models.CharField(max_length=10)), - ('official', models.BooleanField()), - ('order', models.IntegerField()), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='LanguageName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='languagename_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Generation', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('main_region_id', models.IntegerField()), - ('name', models.CharField(max_length=30)), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='GenerationName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=30)), - ('generation', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Generation', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Ability', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=30)), - ('is_main_series', models.BooleanField(default=False)), - ('generation', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Generation', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='AbilityFlavorText', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('flavor_text', models.CharField(max_length=100)), - ('ability', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Ability', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='AbilityName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('ability', models.ForeignKey(on_delete=models.CASCADE, related_name='abilityname', blank=True, to='pokemon_v2.Ability', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='abilityname_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Version', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=30)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='VersionGroup', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=30)), - ('order', models.IntegerField()), - ('generation', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Generation', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='VersionGroupRegion', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('version_group', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.VersionGroup', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='VersionName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='versionname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('version', models.ForeignKey(on_delete=models.CASCADE, related_name='versionname', blank=True, to='pokemon_v2.Version', null=True)), - ], - options={ - 'abstract': False, - }, + name="Language", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("iso639", models.CharField(max_length=2)), + ("iso3166", models.CharField(max_length=2)), + ("name", models.CharField(max_length=10)), + ("official", models.BooleanField()), + ("order", models.IntegerField()), + ], + options={}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="LanguageName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="languagename_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="Generation", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("main_region_id", models.IntegerField()), + ("name", models.CharField(max_length=30)), + ], + options={}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="GenerationName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=30)), + ( + "generation", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Generation", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="Ability", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=30)), + ("is_main_series", models.BooleanField(default=False)), + ( + "generation", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Generation", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="AbilityFlavorText", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("flavor_text", models.CharField(max_length=100)), + ( + "ability", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Ability", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="AbilityName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "ability", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="abilityname", + blank=True, + to="pokemon_v2.Ability", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="abilityname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="Version", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=30)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="VersionGroup", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=30)), + ("order", models.IntegerField()), + ( + "generation", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Generation", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="VersionGroupRegion", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "version_group", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="VersionName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="versionname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "version", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="versionname", + blank=True, + to="pokemon_v2.Version", + null=True, + ), + ), + ], + options={"abstract": False,}, bases=(models.Model,), ), migrations.AddField( - model_name='version', - name='version_group', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.VersionGroup', null=True), + model_name="version", + name="version_group", + field=models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='abilityflavortext', - name='version_group', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='abilityflavortext', blank=True, to='pokemon_v2.VersionGroup', null=True), + model_name="abilityflavortext", + name="version_group", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="abilityflavortext", + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='generationname', - name='language', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='generationname_language', blank=True, to='pokemon_v2.Language', null=True), + model_name="generationname", + name="language", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="generationname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), preserve_default=True, ), migrations.AlterField( - model_name='language', - name='name', + model_name="language", + name="name", field=models.CharField(max_length=30), preserve_default=True, ), migrations.AlterField( - model_name='language', - name='official', + model_name="language", + name="official", field=models.BooleanField(default=False), preserve_default=True, ), migrations.CreateModel( - name='Type', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=30)), - ('damage_class_id', models.IntegerField()), - ('generation', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Generation', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='TypeGameIndex', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('game_index', models.IntegerField()), - ('generation', models.ForeignKey(on_delete=models.CASCADE, related_name='typegameindex', blank=True, to='pokemon_v2.Generation', null=True)), - ('type', models.ForeignKey(on_delete=models.CASCADE, related_name='typegameindex', blank=True, to='pokemon_v2.Type', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='TypeName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='typename_language', blank=True, to='pokemon_v2.Language', null=True)), - ('type', models.ForeignKey(on_delete=models.CASCADE, related_name='typename', blank=True, to='pokemon_v2.Type', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='TypeEfficacy', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('damage_factor', models.IntegerField()), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Nature', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=30)), - ('hates_flavor_id', models.IntegerField()), - ('likes_flavor_id', models.IntegerField()), - ('game_index', models.IntegerField()), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='NatureBattleStylePreference', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('low_hp_preference', models.IntegerField()), - ('high_hp_preference', models.IntegerField()), - ('nature', models.ForeignKey(on_delete=models.CASCADE, related_name='naturebattlestylepreference', blank=True, to='pokemon_v2.Nature', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Stat', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('damage_class_id', models.IntegerField(null=True, blank=True)), - ('name', models.CharField(max_length=30)), - ('is_battle_only', models.BooleanField(default=False)), - ('game_index', models.IntegerField()), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='StatName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='statname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('stat', models.ForeignKey(on_delete=models.CASCADE, related_name='statname', blank=True, to='pokemon_v2.Stat', null=True)), - ], - options={ - 'abstract': False, - }, + name="Type", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=30)), + ("damage_class_id", models.IntegerField()), + ( + "generation", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Generation", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="TypeGameIndex", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("game_index", models.IntegerField()), + ( + "generation", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="typegameindex", + blank=True, + to="pokemon_v2.Generation", + null=True, + ), + ), + ( + "type", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="typegameindex", + blank=True, + to="pokemon_v2.Type", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="TypeName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="typename_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "type", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="typename", + blank=True, + to="pokemon_v2.Type", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="TypeEfficacy", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("damage_factor", models.IntegerField()), + ], + options={}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="Nature", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=30)), + ("hates_flavor_id", models.IntegerField()), + ("likes_flavor_id", models.IntegerField()), + ("game_index", models.IntegerField()), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="NatureBattleStylePreference", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("low_hp_preference", models.IntegerField()), + ("high_hp_preference", models.IntegerField()), + ( + "nature", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="naturebattlestylepreference", + blank=True, + to="pokemon_v2.Nature", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="Stat", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("damage_class_id", models.IntegerField(null=True, blank=True)), + ("name", models.CharField(max_length=30)), + ("is_battle_only", models.BooleanField(default=False)), + ("game_index", models.IntegerField()), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="StatName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="statname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "stat", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="statname", + blank=True, + to="pokemon_v2.Stat", + null=True, + ), + ), + ], + options={"abstract": False,}, bases=(models.Model,), ), migrations.AddField( - model_name='nature', - name='decreased_stat', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='decreased', blank=True, to='pokemon_v2.Stat', null=True), + model_name="nature", + name="decreased_stat", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="decreased", + blank=True, + to="pokemon_v2.Stat", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='nature', - name='increased_stat', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='increased', blank=True, to='pokemon_v2.Stat', null=True), - preserve_default=True, - ), - migrations.RemoveField( - model_name='type', - name='damage_class_id', - ), - migrations.CreateModel( - name='NatureName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='naturename_language', blank=True, to='pokemon_v2.Language', null=True)), - ('nature', models.ForeignKey(on_delete=models.CASCADE, related_name='naturename', blank=True, to='pokemon_v2.Nature', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='NaturePokeathlonStat', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('max_change', models.IntegerField()), - ('nature', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Nature', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Characteristic', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('gene_mod_5', models.IntegerField()), - ('stat', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Stat', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='CharacteristicDescription', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('description', models.CharField(default='', max_length=1000)), - ('characteristic', models.ForeignKey(on_delete=models.CASCADE, related_name='characteristicdescription', blank=True, to='pokemon_v2.Characteristic', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='characteristicdescription_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='EggGroup', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=30)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='EggGroupName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('egg_group', models.ForeignKey(on_delete=models.CASCADE, related_name='egggroupname', blank=True, to='pokemon_v2.EggGroup', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='egggroupname_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='GrowthRate', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=30)), - ('formula', models.CharField(max_length=500)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='GrowthRateDescription', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('growth_rate', models.ForeignKey(on_delete=models.CASCADE, related_name='growthratedescription', blank=True, to='pokemon_v2.GrowthRate', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='growthratedescription_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='Move', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=30)), - ('power', models.IntegerField()), - ('pp', models.IntegerField()), - ('accuracy', models.IntegerField()), - ('priority', models.IntegerField()), - ('move_effect_chance', models.IntegerField()), - ('contest_type_id', models.IntegerField()), - ('contest_effect_id', models.IntegerField()), - ('super_contest_effect_id', models.IntegerField()), - ('generation', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Generation', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveBattleStyle', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=30)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveBattleStyleName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='movebattlestylename_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move_battle_style', models.ForeignKey(on_delete=models.CASCADE, related_name='movebattlestylename', blank=True, to='pokemon_v2.MoveBattleStyle', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveChange', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('power', models.IntegerField()), - ('pp', models.IntegerField()), - ('accuracy', models.IntegerField()), - ('move_effect_chance', models.IntegerField()), - ('move', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Move', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveDamageClass', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=30)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveDamageClassDescription', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('description', models.CharField(default='', max_length=1000)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='movedamageclassdescription_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move_damage_class', models.ForeignKey(on_delete=models.CASCADE, related_name='movedamageclassdescription', blank=True, to='pokemon_v2.MoveDamageClass', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveEffect', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveEffectChange', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('move_effect', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.MoveEffect', null=True)), - ('version_group', models.ForeignKey(on_delete=models.CASCADE, related_name='moveeffectchange', blank=True, to='pokemon_v2.VersionGroup', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveAttribute', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveFlavorText', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('flavor_text', models.CharField(max_length=500)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='moveflavortext_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move', models.ForeignKey(on_delete=models.CASCADE, related_name='moveflavortext', blank=True, to='pokemon_v2.Move', null=True)), - ('version_group', models.ForeignKey(on_delete=models.CASCADE, related_name='moveflavortext', blank=True, to='pokemon_v2.VersionGroup', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveMeta', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('min_hits', models.IntegerField()), - ('max_hits', models.IntegerField()), - ('min_turns', models.IntegerField()), - ('max_turns', models.IntegerField()), - ('drain', models.BooleanField(default=False)), - ('healing', models.BooleanField(default=False)), - ('crit_rate', models.IntegerField()), - ('ailment_chance', models.IntegerField()), - ('flinch_chance', models.IntegerField()), - ('stat_chance', models.IntegerField()), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveMetaAilment', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=30)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveMetaAilmentName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='movemetaailmentname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move_meta_ailment', models.ForeignKey(on_delete=models.CASCADE, related_name='movemetaailmentname', blank=True, to='pokemon_v2.MoveMetaAilment', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveMetaCategory', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=30)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveMetaCategoryDescription', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('description', models.CharField(default='', max_length=1000)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='movemetacategorydescription_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move_meta_category', models.ForeignKey(on_delete=models.CASCADE, related_name='movemetacategorydescription', blank=True, to='pokemon_v2.MoveMetaCategory', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveMetaStatChange', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('change', models.IntegerField()), - ('move', models.ForeignKey(on_delete=models.CASCADE, related_name='movemetastatchange', blank=True, to='pokemon_v2.Move', null=True)), - ('stat', models.ForeignKey(on_delete=models.CASCADE, related_name='movemetastatchange', blank=True, to='pokemon_v2.Stat', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='movename_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move', models.ForeignKey(on_delete=models.CASCADE, related_name='movename', blank=True, to='pokemon_v2.Move', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveTarget', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=30)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveTargetDescription', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('description', models.CharField(default='', max_length=1000)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='movetargetdescription_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move_target', models.ForeignKey(on_delete=models.CASCADE, related_name='movetargetdescription', blank=True, to='pokemon_v2.MoveTarget', null=True)), - ], - options={ - 'abstract': False, - }, + model_name="nature", + name="increased_stat", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="increased", + blank=True, + to="pokemon_v2.Stat", + null=True, + ), + preserve_default=True, + ), + migrations.RemoveField(model_name="type", name="damage_class_id",), + migrations.CreateModel( + name="NatureName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="naturename_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "nature", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="naturename", + blank=True, + to="pokemon_v2.Nature", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="NaturePokeathlonStat", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("max_change", models.IntegerField()), + ( + "nature", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Nature", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="Characteristic", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("gene_mod_5", models.IntegerField()), + ( + "stat", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Stat", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="CharacteristicDescription", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("description", models.CharField(default="", max_length=1000)), + ( + "characteristic", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="characteristicdescription", + blank=True, + to="pokemon_v2.Characteristic", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="characteristicdescription_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="EggGroup", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=30)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="EggGroupName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "egg_group", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="egggroupname", + blank=True, + to="pokemon_v2.EggGroup", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="egggroupname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="GrowthRate", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=30)), + ("formula", models.CharField(max_length=500)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="GrowthRateDescription", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "growth_rate", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="growthratedescription", + blank=True, + to="pokemon_v2.GrowthRate", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="growthratedescription_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="Move", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=30)), + ("power", models.IntegerField()), + ("pp", models.IntegerField()), + ("accuracy", models.IntegerField()), + ("priority", models.IntegerField()), + ("move_effect_chance", models.IntegerField()), + ("contest_type_id", models.IntegerField()), + ("contest_effect_id", models.IntegerField()), + ("super_contest_effect_id", models.IntegerField()), + ( + "generation", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Generation", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveBattleStyle", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=30)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveBattleStyleName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movebattlestylename_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move_battle_style", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movebattlestylename", + blank=True, + to="pokemon_v2.MoveBattleStyle", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveChange", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("power", models.IntegerField()), + ("pp", models.IntegerField()), + ("accuracy", models.IntegerField()), + ("move_effect_chance", models.IntegerField()), + ( + "move", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Move", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveDamageClass", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=30)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveDamageClassDescription", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("description", models.CharField(default="", max_length=1000)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movedamageclassdescription_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move_damage_class", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movedamageclassdescription", + blank=True, + to="pokemon_v2.MoveDamageClass", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveEffect", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ], + options={}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveEffectChange", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "move_effect", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.MoveEffect", + null=True, + ), + ), + ( + "version_group", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="moveeffectchange", + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveAttribute", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveFlavorText", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("flavor_text", models.CharField(max_length=500)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="moveflavortext_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="moveflavortext", + blank=True, + to="pokemon_v2.Move", + null=True, + ), + ), + ( + "version_group", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="moveflavortext", + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveMeta", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("min_hits", models.IntegerField()), + ("max_hits", models.IntegerField()), + ("min_turns", models.IntegerField()), + ("max_turns", models.IntegerField()), + ("drain", models.BooleanField(default=False)), + ("healing", models.BooleanField(default=False)), + ("crit_rate", models.IntegerField()), + ("ailment_chance", models.IntegerField()), + ("flinch_chance", models.IntegerField()), + ("stat_chance", models.IntegerField()), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveMetaAilment", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=30)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveMetaAilmentName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movemetaailmentname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move_meta_ailment", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movemetaailmentname", + blank=True, + to="pokemon_v2.MoveMetaAilment", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveMetaCategory", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=30)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveMetaCategoryDescription", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("description", models.CharField(default="", max_length=1000)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movemetacategorydescription_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move_meta_category", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movemetacategorydescription", + blank=True, + to="pokemon_v2.MoveMetaCategory", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveMetaStatChange", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("change", models.IntegerField()), + ( + "move", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movemetastatchange", + blank=True, + to="pokemon_v2.Move", + null=True, + ), + ), + ( + "stat", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movemetastatchange", + blank=True, + to="pokemon_v2.Stat", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movename_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movename", + blank=True, + to="pokemon_v2.Move", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveTarget", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=30)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveTargetDescription", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("description", models.CharField(default="", max_length=1000)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movetargetdescription_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move_target", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movetargetdescription", + blank=True, + to="pokemon_v2.MoveTarget", + null=True, + ), + ), + ], + options={"abstract": False,}, bases=(models.Model,), ), migrations.AddField( - model_name='movemeta', - name='move_meta_category', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='movemeta', blank=True, to='pokemon_v2.MoveMetaCategory', null=True), + model_name="movemeta", + name="move_meta_category", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="movemeta", + blank=True, + to="pokemon_v2.MoveMetaCategory", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='movemeta', - name='move', - field=models.OneToOneField(on_delete=models.CASCADE, related_name='movemeta', to='pokemon_v2.Move'), + model_name="movemeta", + name="move", + field=models.OneToOneField( + on_delete=models.CASCADE, related_name="movemeta", to="pokemon_v2.Move" + ), preserve_default=True, ), migrations.AddField( - model_name='movemeta', - name='move_meta_ailment', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='movemeta', blank=True, to='pokemon_v2.MoveMetaAilment', null=True), + model_name="movemeta", + name="move_meta_ailment", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="movemeta", + blank=True, + to="pokemon_v2.MoveMetaAilment", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='movechange', - name='move_effect', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.MoveEffect', null=True), + model_name="movechange", + name="move_effect", + field=models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.MoveEffect", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='movechange', - name='type', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='movechange', blank=True, to='pokemon_v2.Type', null=True), + model_name="movechange", + name="type", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="movechange", + blank=True, + to="pokemon_v2.Type", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='movechange', - name='version_group', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='movechange', blank=True, to='pokemon_v2.VersionGroup', null=True), + model_name="movechange", + name="version_group", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="movechange", + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='move', - name='move_damage_class', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.MoveDamageClass', null=True), + model_name="move", + name="move_damage_class", + field=models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.MoveDamageClass", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='move', - name='move_effect', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.MoveEffect', null=True), + model_name="move", + name="move_effect", + field=models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.MoveEffect", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='move', - name='move_target', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.MoveTarget', null=True), + model_name="move", + name="move_target", + field=models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.MoveTarget", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='move', - name='type', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Type', null=True), + model_name="move", + name="type", + field=models.ForeignKey( + on_delete=models.CASCADE, blank=True, to="pokemon_v2.Type", null=True + ), preserve_default=True, ), migrations.AlterField( - model_name='move', - name='accuracy', + model_name="move", + name="accuracy", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='move', - name='move_effect_chance', + model_name="move", + name="move_effect_chance", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='move', - name='power', + model_name="move", + name="power", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='move', - name='pp', + model_name="move", + name="pp", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='move', - name='priority', + model_name="move", + name="priority", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='move', - name='contest_effect_id', + model_name="move", + name="contest_effect_id", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='move', - name='contest_type_id', + model_name="move", + name="contest_type_id", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='move', - name='super_contest_effect_id', + model_name="move", + name="super_contest_effect_id", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='abilityflavortext', - name='flavor_text', + model_name="abilityflavortext", + name="flavor_text", field=models.CharField(max_length=200), preserve_default=True, ), migrations.AlterField( - model_name='movechange', - name='accuracy', + model_name="movechange", + name="accuracy", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movechange', - name='move_effect_chance', + model_name="movechange", + name="move_effect_chance", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movechange', - name='power', + model_name="movechange", + name="power", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movechange', - name='pp', + model_name="movechange", + name="pp", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='ability', - name='name', + model_name="ability", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='egggroup', - name='name', + model_name="egggroup", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='generation', - name='name', + model_name="generation", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='generationname', - name='name', + model_name="generationname", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='growthrate', - name='name', + model_name="growthrate", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='language', - name='name', + model_name="language", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='move', - name='name', + model_name="move", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='movebattlestyle', - name='name', + model_name="movebattlestyle", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='movedamageclass', - name='name', + model_name="movedamageclass", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='movemetaailment', - name='name', + model_name="movemetaailment", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='movemetacategory', - name='name', + model_name="movemetacategory", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='movetarget', - name='name', + model_name="movetarget", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='nature', - name='name', + model_name="nature", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='stat', - name='name', + model_name="stat", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='type', - name='name', + model_name="type", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='version', - name='name', + model_name="version", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='versiongroup', - name='name', + model_name="versiongroup", + name="name", field=models.CharField(max_length=40), preserve_default=True, ), migrations.AlterField( - model_name='ability', - name='name', + model_name="ability", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='egggroup', - name='name', + model_name="egggroup", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='generation', - name='name', + model_name="generation", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='generationname', - name='name', + model_name="generationname", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='growthrate', - name='name', + model_name="growthrate", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='language', - name='name', + model_name="language", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='move', - name='name', + model_name="move", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='movebattlestyle', - name='name', + model_name="movebattlestyle", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='movedamageclass', - name='name', + model_name="movedamageclass", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='movemetaailment', - name='name', + model_name="movemetaailment", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='movemetacategory', - name='name', + model_name="movemetacategory", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='movetarget', - name='name', + model_name="movetarget", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='nature', - name='name', + model_name="nature", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='stat', - name='name', + model_name="stat", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='type', - name='name', + model_name="type", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='version', - name='name', + model_name="version", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='versiongroup', - name='name', + model_name="versiongroup", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='ailment_chance', + model_name="movemeta", + name="ailment_chance", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='crit_rate', + model_name="movemeta", + name="crit_rate", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='flinch_chance', + model_name="movemeta", + name="flinch_chance", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='max_hits', + model_name="movemeta", + name="max_hits", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='max_turns', + model_name="movemeta", + name="max_turns", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='min_hits', + model_name="movemeta", + name="min_hits", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='min_turns', + model_name="movemeta", + name="min_turns", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='stat_chance', + model_name="movemeta", + name="stat_chance", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), - migrations.RemoveField( - model_name='movemeta', - name='drain', - ), - migrations.RemoveField( - model_name='movemeta', - name='healing', - ), + migrations.RemoveField(model_name="movemeta", name="drain",), + migrations.RemoveField(model_name="movemeta", name="healing",), migrations.AlterField( - model_name='movemeta', - name='ailment_chance', + model_name="movemeta", + name="ailment_chance", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='crit_rate', + model_name="movemeta", + name="crit_rate", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='flinch_chance', + model_name="movemeta", + name="flinch_chance", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='max_hits', + model_name="movemeta", + name="max_hits", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='max_turns', + model_name="movemeta", + name="max_turns", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='min_hits', + model_name="movemeta", + name="min_hits", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='min_turns', + model_name="movemeta", + name="min_turns", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='movemeta', - name='stat_chance', + model_name="movemeta", + name="stat_chance", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AddField( - model_name='movemeta', - name='drain', + model_name="movemeta", + name="drain", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AddField( - model_name='movemeta', - name='healing', + model_name="movemeta", + name="healing", field=models.IntegerField(null=True, blank=True), preserve_default=True, ), - migrations.RemoveField( - model_name='stat', - name='damage_class_id', + migrations.RemoveField(model_name="stat", name="damage_class_id",), + migrations.AddField( + model_name="stat", + name="move_damage_class", + field=models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.MoveDamageClass", + null=True, + ), + preserve_default=True, + ), + migrations.AddField( + model_name="type", + name="move_damage_class", + field=models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.MoveDamageClass", + null=True, + ), + preserve_default=True, + ), + migrations.CreateModel( + name="AbilityChange", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "ability", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="abilitychange", + blank=True, + to="pokemon_v2.Ability", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="EvolutionChain", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("baby_evolution_item", models.IntegerField()), + ], + options={}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="EvolutionTrigger", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="EvolutionTriggerName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "evolution_trigger", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="evolutiontriggername", + blank=True, + to="pokemon_v2.EvolutionTrigger", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="evolutiontriggername_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="Experience", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("level", models.IntegerField()), + ("experience", models.IntegerField()), + ( + "growth_rate", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="experience", + blank=True, + to="pokemon_v2.GrowthRate", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="Gender", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="Pokedex", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ("region_id", models.IntegerField(null=True, blank=True)), + ("is_main_series", models.BooleanField(default=False)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokedexDescription", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("description", models.CharField(default="", max_length=1000)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokedexdescription_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "pokedex", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokedexdescription", + blank=True, + to="pokemon_v2.Pokedex", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokedexVersionGroup", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "pokedex", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokedexversiongroup", + blank=True, + to="pokemon_v2.Pokedex", + null=True, + ), + ), + ( + "version_group", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokedexversiongroup", + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="Pokemon", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ("order", models.IntegerField()), + ("height", models.IntegerField()), + ("weight", models.IntegerField()), + ("base_experience", models.IntegerField()), + ("is_default", models.BooleanField(default=False)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonAbility", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("is_hidden", models.BooleanField(default=False)), + ("slot", models.IntegerField()), + ( + "ability", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonability", + blank=True, + to="pokemon_v2.Ability", + null=True, + ), + ), + ( + "pokemon", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonability", + blank=True, + to="pokemon_v2.Pokemon", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonColor", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonColorName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemoncolorname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "pokemon_color", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemoncolorname", + blank=True, + to="pokemon_v2.PokemonColor", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonDexNumber", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("pokedex_number", models.IntegerField()), + ( + "pokedex", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Pokedex", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonEggGroup", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "egg_group", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.EggGroup", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonEvolution", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("item", models.IntegerField()), + ("min_level", models.IntegerField()), + ("location_id", models.IntegerField()), + ("held_item", models.IntegerField()), + ("time_of_day", models.CharField(max_length=10)), + ("min_happiness", models.IntegerField()), + ("minimum_beauty", models.IntegerField()), + ("min_affection", models.IntegerField()), + ("relative_physical_stats", models.IntegerField()), + ("needs_overworld_rain", models.BooleanField(default=False)), + ("turn_upside_down", models.BooleanField(default=False)), + ( + "evolution_trigger", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.EvolutionTrigger", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonForm", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ("order", models.IntegerField()), + ("form_identifier", models.CharField(max_length=30)), + ("is_default", models.BooleanField(default=False)), + ("is_battle_only", models.BooleanField(default=False)), + ("is_mega_form_order", models.BooleanField(default=False)), + ( + "version_group", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), + ), + ( + "pokemon", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Pokemon", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonFormGeneration", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("game_index", models.IntegerField()), + ( + "generation", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonformgeneration", + blank=True, + to="pokemon_v2.Generation", + null=True, + ), + ), + ( + "pokemon_form", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonformgeneration", + blank=True, + to="pokemon_v2.PokemonForm", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonFormName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ("pokemon_name", models.CharField(max_length=30)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonformname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "pokemon_form", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonformname", + blank=True, + to="pokemon_v2.PokemonForm", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonGameIndex", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("game_index", models.IntegerField()), + ( + "pokemon", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemongameindex", + blank=True, + to="pokemon_v2.Pokemon", + null=True, + ), + ), + ( + "version", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemongameindex", + blank=True, + to="pokemon_v2.Version", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonHabitat", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonHabitatName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonhabitatname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "pokemon_habitat", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonhabitatname", + blank=True, + to="pokemon_v2.PokemonHabitat", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonItem", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("rarity", models.IntegerField()), + ( + "pokemon", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Pokemon", + null=True, + ), + ), + ( + "version", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Version", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonMove", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("order", models.IntegerField(null=True, blank=True)), + ("level", models.IntegerField()), + ( + "move", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonmove", + blank=True, + to="pokemon_v2.Move", + null=True, + ), + ), + ( + "pokemon", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonmove", + blank=True, + to="pokemon_v2.Pokemon", + null=True, + ), + ), + ( + "version_group", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonmove", + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveLearnMethod", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveLearnMethodName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movelearnmethodname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move_learn_method", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movelearnmethodname", + blank=True, + to="pokemon_v2.MoveLearnMethod", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonShape", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonShapeName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ("awesome_name", models.CharField(max_length=30)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonshapename_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "pokemon_shape", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonshapename", + blank=True, + to="pokemon_v2.PokemonShape", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonSpecies", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ("order", models.IntegerField()), + ("gender_rate", models.IntegerField()), + ("capture_rate", models.IntegerField()), + ("base_happiness", models.IntegerField()), + ("is_baby", models.BooleanField()), + ("hatch_counter", models.IntegerField()), + ("has_gender_differences", models.BooleanField()), + ("forms_switchable", models.BooleanField()), + ( + "evolution_chain", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.EvolutionChain", + null=True, + ), + ), + ( + "evolves_from_species", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.PokemonSpecies", + null=True, + ), + ), + ( + "generation", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Generation", + null=True, + ), + ), + ( + "growth_rate", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.GrowthRate", + null=True, + ), + ), + ( + "pokemon_color", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.PokemonColor", + null=True, + ), + ), + ( + "pokemon_habitat", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.PokemonHabitat", + null=True, + ), + ), + ( + "pokemon_shape", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.PokemonShape", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonSpeciesDescription", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("description", models.CharField(default="", max_length=1000)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonspeciesdescription_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "pokemon_species", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonspeciesdescription", + blank=True, + to="pokemon_v2.PokemonSpecies", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonSpeciesFlavorText", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("flavor_text", models.CharField(max_length=500)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonspeciesflavortext_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "pokemon_species", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonspeciesflavortext", + blank=True, + to="pokemon_v2.PokemonSpecies", + null=True, + ), + ), + ( + "version", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonspeciesflavortext", + blank=True, + to="pokemon_v2.Version", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonSpeciesName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ("genus", models.CharField(max_length=30)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonspeciesname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "pokemon_species", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonspeciesname", + blank=True, + to="pokemon_v2.PokemonSpecies", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonStat", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("base_stat", models.IntegerField()), + ("effort", models.IntegerField()), + ( + "pokemon", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonstat", + blank=True, + to="pokemon_v2.Pokemon", + null=True, + ), + ), + ( + "stat", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonstat", + blank=True, + to="pokemon_v2.Stat", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokemonType", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("slot", models.IntegerField()), + ( + "pokemon", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemontype", + blank=True, + to="pokemon_v2.Pokemon", + null=True, + ), + ), + ( + "type", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemontype", + blank=True, + to="pokemon_v2.Type", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), ), migrations.AddField( - model_name='stat', - name='move_damage_class', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.MoveDamageClass', null=True), + model_name="pokemonevolution", + name="evolved_species", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="evolved_species", + blank=True, + to="pokemon_v2.PokemonSpecies", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='type', - name='move_damage_class', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.MoveDamageClass', null=True), + model_name="pokemonevolution", + name="gender", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonevolution", + blank=True, + to="pokemon_v2.Gender", + null=True, + ), preserve_default=True, ), - migrations.CreateModel( - name='AbilityChange', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('ability', models.ForeignKey(on_delete=models.CASCADE, related_name='abilitychange', blank=True, to='pokemon_v2.Ability', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AddField( + model_name="pokemonevolution", + name="known_move", + field=models.ForeignKey( + on_delete=models.CASCADE, blank=True, to="pokemon_v2.Move", null=True + ), + preserve_default=True, ), - migrations.CreateModel( - name='EvolutionChain', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('baby_evolution_item', models.IntegerField()), - ], - options={ - }, - bases=(models.Model,), + migrations.AddField( + model_name="pokemonevolution", + name="known_move_type", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="known_move", + blank=True, + to="pokemon_v2.Type", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='EvolutionTrigger', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AddField( + model_name="pokemonevolution", + name="party_species", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="party_species", + blank=True, + to="pokemon_v2.PokemonSpecies", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='EvolutionTriggerName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('evolution_trigger', models.ForeignKey(on_delete=models.CASCADE, related_name='evolutiontriggername', blank=True, to='pokemon_v2.EvolutionTrigger', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='evolutiontriggername_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Experience', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('level', models.IntegerField()), - ('experience', models.IntegerField()), - ('growth_rate', models.ForeignKey(on_delete=models.CASCADE, related_name='experience', blank=True, to='pokemon_v2.GrowthRate', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Gender', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Pokedex', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('region_id', models.IntegerField(null=True, blank=True)), - ('is_main_series', models.BooleanField(default=False)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokedexDescription', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('description', models.CharField(default='', max_length=1000)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='pokedexdescription_language', blank=True, to='pokemon_v2.Language', null=True)), - ('pokedex', models.ForeignKey(on_delete=models.CASCADE, related_name='pokedexdescription', blank=True, to='pokemon_v2.Pokedex', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokedexVersionGroup', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('pokedex', models.ForeignKey(on_delete=models.CASCADE, related_name='pokedexversiongroup', blank=True, to='pokemon_v2.Pokedex', null=True)), - ('version_group', models.ForeignKey(on_delete=models.CASCADE, related_name='pokedexversiongroup', blank=True, to='pokemon_v2.VersionGroup', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Pokemon', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('order', models.IntegerField()), - ('height', models.IntegerField()), - ('weight', models.IntegerField()), - ('base_experience', models.IntegerField()), - ('is_default', models.BooleanField(default=False)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonAbility', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('is_hidden', models.BooleanField(default=False)), - ('slot', models.IntegerField()), - ('ability', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonability', blank=True, to='pokemon_v2.Ability', null=True)), - ('pokemon', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonability', blank=True, to='pokemon_v2.Pokemon', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonColor', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonColorName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemoncolorname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('pokemon_color', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemoncolorname', blank=True, to='pokemon_v2.PokemonColor', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonDexNumber', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('pokedex_number', models.IntegerField()), - ('pokedex', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Pokedex', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonEggGroup', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('egg_group', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.EggGroup', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonEvolution', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('item', models.IntegerField()), - ('min_level', models.IntegerField()), - ('location_id', models.IntegerField()), - ('held_item', models.IntegerField()), - ('time_of_day', models.CharField(max_length=10)), - ('min_happiness', models.IntegerField()), - ('minimum_beauty', models.IntegerField()), - ('min_affection', models.IntegerField()), - ('relative_physical_stats', models.IntegerField()), - ('needs_overworld_rain', models.BooleanField(default=False)), - ('turn_upside_down', models.BooleanField(default=False)), - ('evolution_trigger', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.EvolutionTrigger', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonForm', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('order', models.IntegerField()), - ('form_identifier', models.CharField(max_length=30)), - ('is_default', models.BooleanField(default=False)), - ('is_battle_only', models.BooleanField(default=False)), - ('is_mega_form_order', models.BooleanField(default=False)), - ('version_group', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.VersionGroup', null=True)), - ('pokemon', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Pokemon', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonFormGeneration', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('game_index', models.IntegerField()), - ('generation', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonformgeneration', blank=True, to='pokemon_v2.Generation', null=True)), - ('pokemon_form', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonformgeneration', blank=True, to='pokemon_v2.PokemonForm', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonFormName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('pokemon_name', models.CharField(max_length=30)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonformname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('pokemon_form', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonformname', blank=True, to='pokemon_v2.PokemonForm', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonGameIndex', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('game_index', models.IntegerField()), - ('pokemon', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemongameindex', blank=True, to='pokemon_v2.Pokemon', null=True)), - ('version', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemongameindex', blank=True, to='pokemon_v2.Version', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonHabitat', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonHabitatName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonhabitatname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('pokemon_habitat', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonhabitatname', blank=True, to='pokemon_v2.PokemonHabitat', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonItem', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('rarity', models.IntegerField()), - ('pokemon', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Pokemon', null=True)), - ('version', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Version', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonMove', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('order', models.IntegerField(null=True, blank=True)), - ('level', models.IntegerField()), - ('move', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonmove', blank=True, to='pokemon_v2.Move', null=True)), - ('pokemon', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonmove', blank=True, to='pokemon_v2.Pokemon', null=True)), - ('version_group', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonmove', blank=True, to='pokemon_v2.VersionGroup', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveLearnMethod', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='MoveLearnMethodName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='movelearnmethodname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move_learn_method', models.ForeignKey(on_delete=models.CASCADE, related_name='movelearnmethodname', blank=True, to='pokemon_v2.MoveLearnMethod', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonShape', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonShapeName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('awesome_name', models.CharField(max_length=30)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonshapename_language', blank=True, to='pokemon_v2.Language', null=True)), - ('pokemon_shape', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonshapename', blank=True, to='pokemon_v2.PokemonShape', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonSpecies', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('order', models.IntegerField()), - ('gender_rate', models.IntegerField()), - ('capture_rate', models.IntegerField()), - ('base_happiness', models.IntegerField()), - ('is_baby', models.BooleanField()), - ('hatch_counter', models.IntegerField()), - ('has_gender_differences', models.BooleanField()), - ('forms_switchable', models.BooleanField()), - ('evolution_chain', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.EvolutionChain', null=True)), - ('evolves_from_species', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.PokemonSpecies', null=True)), - ('generation', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Generation', null=True)), - ('growth_rate', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.GrowthRate', null=True)), - ('pokemon_color', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.PokemonColor', null=True)), - ('pokemon_habitat', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.PokemonHabitat', null=True)), - ('pokemon_shape', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.PokemonShape', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonSpeciesDescription', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('description', models.CharField(default='', max_length=1000)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonspeciesdescription_language', blank=True, to='pokemon_v2.Language', null=True)), - ('pokemon_species', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonspeciesdescription', blank=True, to='pokemon_v2.PokemonSpecies', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonSpeciesFlavorText', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('flavor_text', models.CharField(max_length=500)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonspeciesflavortext_language', blank=True, to='pokemon_v2.Language', null=True)), - ('pokemon_species', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonspeciesflavortext', blank=True, to='pokemon_v2.PokemonSpecies', null=True)), - ('version', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonspeciesflavortext', blank=True, to='pokemon_v2.Version', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonSpeciesName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('genus', models.CharField(max_length=30)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonspeciesname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('pokemon_species', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonspeciesname', blank=True, to='pokemon_v2.PokemonSpecies', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonStat', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('base_stat', models.IntegerField()), - ('effort', models.IntegerField()), - ('pokemon', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonstat', blank=True, to='pokemon_v2.Pokemon', null=True)), - ('stat', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonstat', blank=True, to='pokemon_v2.Stat', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokemonType', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('slot', models.IntegerField()), - ('pokemon', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemontype', blank=True, to='pokemon_v2.Pokemon', null=True)), - ('type', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemontype', blank=True, to='pokemon_v2.Type', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.AddField( - model_name='pokemonevolution', - name='evolved_species', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='evolved_species', blank=True, to='pokemon_v2.PokemonSpecies', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='pokemonevolution', - name='gender', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonevolution', blank=True, to='pokemon_v2.Gender', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='pokemonevolution', - name='known_move', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Move', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='pokemonevolution', - name='known_move_type', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='known_move', blank=True, to='pokemon_v2.Type', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='pokemonevolution', - name='party_species', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='party_species', blank=True, to='pokemon_v2.PokemonSpecies', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='pokemonevolution', - name='party_type', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='party_type', blank=True, to='pokemon_v2.Type', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='pokemonevolution', - name='trade_species', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='trade_species', blank=True, to='pokemon_v2.PokemonSpecies', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='pokemonegggroup', - name='pokemon_species', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonegggroup', blank=True, to='pokemon_v2.PokemonSpecies', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='pokemondexnumber', - name='pokemon_species', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemondexnumber', blank=True, to='pokemon_v2.PokemonSpecies', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='pokemon', - name='pokemon_species', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.PokemonSpecies', null=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='pokemonspecies', - name='forms_switchable', - field=models.BooleanField(default=False), - preserve_default=True, - ), - migrations.AlterField( - model_name='pokemonspecies', - name='has_gender_differences', - field=models.BooleanField(default=False), - preserve_default=True, - ), - migrations.AlterField( - model_name='pokemonspecies', - name='is_baby', - field=models.BooleanField(default=False), - preserve_default=True, - ), - migrations.RenameField( - model_name='evolutionchain', - old_name='baby_evolution_item', - new_name='baby_evolution_item_id', - ), - migrations.RemoveField( - model_name='evolutionchain', - name='baby_evolution_item_id', - ), - migrations.AlterField( - model_name='abilityflavortext', - name='flavor_text', - field=models.CharField(max_length=500), - preserve_default=True, - ), - migrations.RenameField( - model_name='pokemonevolution', - old_name='minimum_beauty', - new_name='min_beauty', - ), - migrations.RenameField( - model_name='pokemonevolution', - old_name='item', - new_name='evolution_item_id', - ), - migrations.RenameField( - model_name='pokemonevolution', - old_name='held_item', - new_name='held_item_id', - ), - migrations.RemoveField( - model_name='pokemonevolution', - name='evolution_item_id', - ), - migrations.RemoveField( - model_name='pokemonevolution', - name='held_item_id', - ), - migrations.RemoveField( - model_name='pokemonevolution', - name='location_id', - ), - migrations.AlterField( - model_name='pokemonevolution', - name='min_affection', - field=models.IntegerField(null=True, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='pokemonevolution', - name='min_beauty', - field=models.IntegerField(null=True, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='pokemonevolution', - name='min_happiness', - field=models.IntegerField(null=True, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='pokemonevolution', - name='relative_physical_stats', - field=models.IntegerField(null=True, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='pokemonevolution', - name='min_level', - field=models.IntegerField(null=True, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='pokemonevolution', - name='time_of_day', - field=models.CharField(max_length=10, null=True, blank=True), - preserve_default=True, - ), - migrations.RenameField( - model_name='pokemonform', - old_name='is_mega_form_order', - new_name='is_mega', - ), - migrations.AddField( - model_name='pokemonform', - name='form_order', - field=models.IntegerField(null=True, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='language', - name='order', - field=models.IntegerField(null=True, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='pokemon', - name='order', - field=models.IntegerField(null=True, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='pokemonform', - name='order', - field=models.IntegerField(null=True, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='pokemonspecies', - name='order', - field=models.IntegerField(null=True, blank=True), - preserve_default=True, - ), - migrations.AlterField( - model_name='versiongroup', - name='order', - field=models.IntegerField(null=True, blank=True), - preserve_default=True, - ), - migrations.CreateModel( - name='Machine', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('machine_number', models.IntegerField()), - ('growth_rate', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.GrowthRate', null=True)), - ('move', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Move', null=True)), - ('version_group', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.VersionGroup', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Item', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('cost', models.IntegerField(null=True, blank=True)), - ('fling_power', models.IntegerField(null=True, blank=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ItemCategory', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ItemCategoryName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('item_category', models.ForeignKey(on_delete=models.CASCADE, related_name='itemcategoryname', blank=True, to='pokemon_v2.ItemCategory', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='itemcategoryname_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ItemAttribute', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ItemFlavorText', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('flavor_text', models.CharField(max_length=500)), - ('item', models.ForeignKey(on_delete=models.CASCADE, related_name='itemflavortext', blank=True, to='pokemon_v2.Item', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='itemflavortext_language', blank=True, to='pokemon_v2.Language', null=True)), - ('version_group', models.ForeignKey(on_delete=models.CASCADE, related_name='itemflavortext', blank=True, to='pokemon_v2.VersionGroup', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - 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='ItemGameIndex', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('game_index', models.IntegerField()), - ('generation', models.ForeignKey(on_delete=models.CASCADE, related_name='itemgameindex', blank=True, to='pokemon_v2.Generation', null=True)), - ('item', models.ForeignKey(on_delete=models.CASCADE, related_name='itemgameindex', blank=True, to='pokemon_v2.Item', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ItemName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('item', models.ForeignKey(on_delete=models.CASCADE, related_name='itemname', blank=True, to='pokemon_v2.Item', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='itemname_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ItemPocket', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ItemPocketName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('item_pocket', models.ForeignKey(on_delete=models.CASCADE, related_name='itempocketname', blank=True, to='pokemon_v2.ItemPocket', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='itempocketname_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.AddField( - model_name='itemcategory', - name='item_pocket', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='itemcategory', blank=True, to='pokemon_v2.ItemPocket', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='item', - name='item_category', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='item', blank=True, to='pokemon_v2.ItemCategory', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='item', - name='item_fling_effect', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='item', blank=True, to='pokemon_v2.ItemFlingEffect', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='evolutionchain', - name='baby_trigger_item', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Item', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='machine', - name='item', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='machine', blank=True, to='pokemon_v2.Item', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='pokemonevolution', - name='evolution_item', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='evolution_item', blank=True, to='pokemon_v2.Item', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='pokemonevolution', - name='held_item', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='held_item', blank=True, to='pokemon_v2.Item', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='pokemonitem', - name='item', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonitem', blank=True, to='pokemon_v2.Item', null=True), - preserve_default=True, - ), - migrations.CreateModel( - name='Berry', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('natural_gift_power', models.IntegerField()), - ('size', models.IntegerField()), - ('max_harvest', models.IntegerField()), - ('growth_time', models.IntegerField()), - ('soil_dryness', models.IntegerField()), - ('smoothness', models.IntegerField()), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='BerryFirmness', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='BerryFirmnessName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('berry_firmness', models.ForeignKey(on_delete=models.CASCADE, related_name='berryfirmnessname', blank=True, to='pokemon_v2.BerryFirmness', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='berryfirmnessname_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='BerryFlavor', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('flavor', models.IntegerField()), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ContestCombo', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('first_move', models.ForeignKey(on_delete=models.CASCADE, related_name='first_move', blank=True, to='pokemon_v2.Move', null=True)), - ('second_move', models.ForeignKey(on_delete=models.CASCADE, related_name='second_move', blank=True, to='pokemon_v2.Move', null=True)), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ContestEffect', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('appeal', models.IntegerField()), - ('jam', models.IntegerField()), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ContestType', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ContestTypeName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('flavor', models.CharField(max_length=10)), - ('color', models.CharField(max_length=10)), - ('contest_type', models.ForeignKey(on_delete=models.CASCADE, related_name='contesttypename', blank=True, to='pokemon_v2.ContestType', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='contesttypename_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.AddField( - model_name='berryflavor', - name='contest_type', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='berryflavor', blank=True, to='pokemon_v2.ContestType', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='berry', - name='berry_firmness', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.BerryFirmness', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='berry', - name='item', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='berry', blank=True, to='pokemon_v2.Item', null=True), - preserve_default=True, - ), - migrations.RenameField( - model_name='nature', - old_name='hates_flavor_id', - new_name='hates_flavor', - ), - migrations.AlterField( - model_name='nature', - name='hates_flavor', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='hates_flavor', blank=True, to='pokemon_v2.BerryFlavor', null=True), - preserve_default=True, - ), - migrations.RenameField( - model_name='nature', - old_name='likes_flavor_id', - new_name='likes_flavor', - ), - migrations.AlterField( - model_name='nature', - name='likes_flavor', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='likes_flavor', blank=True, to='pokemon_v2.BerryFlavor', null=True), - preserve_default=True, - ), - migrations.CreateModel( - name='Region', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='RegionName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='regionname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('region', models.ForeignKey(on_delete=models.CASCADE, related_name='regionname', blank=True, to='pokemon_v2.Region', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.RemoveField( - model_name='generation', - name='main_region_id', - ), - migrations.RemoveField( - model_name='pokedex', - name='region_id', - ), - migrations.AddField( - model_name='generation', - name='region', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Region', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='pokedex', - name='region', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokedex', blank=True, to='pokemon_v2.Region', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='versiongroupregion', - name='region', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='versiongroupregion', blank=True, to='pokemon_v2.Region', null=True), - preserve_default=True, - ), - migrations.CreateModel( - name='Location', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('region', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Region', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='LocationArea', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('game_index', models.IntegerField()), - ('name', models.CharField(max_length=100)), - ('location', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Location', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='LocationAreaEncounterRate', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('rate', models.IntegerField()), - ('location_area', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.LocationArea', null=True)), - ('version', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Version', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='LocationAreaName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='locationareaname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('location_area', models.ForeignKey(on_delete=models.CASCADE, related_name='locationareaname', blank=True, to='pokemon_v2.LocationArea', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='LocationGameIndex', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('game_index', models.IntegerField()), - ('generation', models.ForeignKey(on_delete=models.CASCADE, related_name='locationgameindex', blank=True, to='pokemon_v2.Generation', null=True)), - ('location', models.ForeignKey(on_delete=models.CASCADE, related_name='locationgameindex', blank=True, to='pokemon_v2.Location', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='LocationName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='locationname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('location', models.ForeignKey(on_delete=models.CASCADE, related_name='locationname', blank=True, to='pokemon_v2.Location', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Encounter', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('min_level', models.IntegerField()), - ('max_level', models.IntegerField()), - ('location_area', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.LocationArea', null=True)), - ('pokemon', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Pokemon', null=True)), - ('version', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Version', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='EncounterCondition', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='EncounterConditionName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('encounter_condition', models.ForeignKey(on_delete=models.CASCADE, related_name='encounterconditionname', blank=True, to='pokemon_v2.EncounterCondition', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='encounterconditionname_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='EncounterConditionValue', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('is_default', models.BooleanField(default=False)), - ('encounter_condition', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.EncounterCondition', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='EncounterConditionValueMap', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('encounter', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.Encounter', null=True)), - ('encounter_condition_value', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.EncounterConditionValue', null=True)), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='EncounterConditionValueName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('encounter_condition_value', models.ForeignKey(on_delete=models.CASCADE, related_name='encounterconditionvaluename', blank=True, to='pokemon_v2.EncounterConditionValue', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='encounterconditionvaluename_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='EncounterMethod', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('order', models.IntegerField(null=True, blank=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='EncounterMethodName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('encounter_method', models.ForeignKey(on_delete=models.CASCADE, related_name='encountermethodname', blank=True, to='pokemon_v2.EncounterMethod', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='encountermethodname_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='EncounterSlot', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('slot', models.IntegerField(null=True, blank=True)), - ('rarity', models.IntegerField()), - ('encounter_method', models.ForeignKey(on_delete=models.CASCADE, related_name='encounterslot', blank=True, to='pokemon_v2.EncounterMethod', null=True)), - ('version_group', models.ForeignKey(on_delete=models.CASCADE, related_name='encounterslot', blank=True, to='pokemon_v2.VersionGroup', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.AddField( - model_name='locationareaencounterrate', - name='encounter_method', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='locationareaencounterrate', blank=True, to='pokemon_v2.EncounterMethod', null=True), - preserve_default=True, - ), - migrations.AddField( - model_name='encounter', - name='encounter_slot', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.EncounterSlot', null=True), - preserve_default=True, - ), - migrations.CreateModel( - name='PalPark', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('base_score', models.IntegerField()), - ('rate', models.IntegerField()), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PalParkArea', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PalParkAreaName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='palparkareaname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('pal_park_area', models.ForeignKey(on_delete=models.CASCADE, related_name='palparkareaname', blank=True, to='pokemon_v2.PalParkArea', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokeathlonStat', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='PokeathlonStatName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='pokeathlonstatname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('pokeathlon_stat', models.ForeignKey(on_delete=models.CASCADE, related_name='pokeathlonstatname', blank=True, to='pokemon_v2.PokeathlonStat', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='SuperContestCombo', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('first_move', models.ForeignKey(on_delete=models.CASCADE, related_name='first', blank=True, to='pokemon_v2.Move', null=True)), - ('second_move', models.ForeignKey(on_delete=models.CASCADE, related_name='second', blank=True, to='pokemon_v2.Move', null=True)), - ], - options={ - }, - bases=(models.Model,), + migrations.AddField( + model_name="pokemonevolution", + name="party_type", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="party_type", + blank=True, + to="pokemon_v2.Type", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='SuperContestEffect', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('appeal', models.IntegerField()), - ], - options={ - }, - bases=(models.Model,), + migrations.AddField( + model_name="pokemonevolution", + name="trade_species", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="trade_species", + blank=True, + to="pokemon_v2.PokemonSpecies", + null=True, + ), + preserve_default=True, ), migrations.AddField( - model_name='palpark', - name='pal_park_area', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='palpark', blank=True, to='pokemon_v2.PalParkArea', null=True), + model_name="pokemonegggroup", + name="pokemon_species", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonegggroup", + blank=True, + to="pokemon_v2.PokemonSpecies", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='palpark', - name='pokemon_species', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='palpark', blank=True, to='pokemon_v2.PokemonSpecies', null=True), + model_name="pokemondexnumber", + name="pokemon_species", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemondexnumber", + blank=True, + to="pokemon_v2.PokemonSpecies", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='naturepokeathlonstat', - name='pokeathlon_stat', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='naturepokeathlonstat', blank=True, to='pokemon_v2.PokeathlonStat', null=True), + model_name="pokemon", + name="pokemon_species", + field=models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.PokemonSpecies", + null=True, + ), preserve_default=True, ), migrations.AlterField( - model_name='palpark', - name='base_score', - field=models.IntegerField(null=True, blank=True), + model_name="pokemonspecies", + name="forms_switchable", + field=models.BooleanField(default=False), preserve_default=True, ), migrations.AlterField( - model_name='abilityflavortext', - name='ability', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='abilityflavortext_descriptions', blank=True, to='pokemon_v2.Ability', null=True), + model_name="pokemonspecies", + name="has_gender_differences", + field=models.BooleanField(default=False), preserve_default=True, ), migrations.AlterField( - model_name='abilityflavortext', - name='ability', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='abilityflavortext', blank=True, to='pokemon_v2.Ability', null=True), + model_name="pokemonspecies", + name="is_baby", + field=models.BooleanField(default=False), preserve_default=True, ), + migrations.RenameField( + model_name="evolutionchain", + old_name="baby_evolution_item", + new_name="baby_evolution_item_id", + ), + migrations.RemoveField( + model_name="evolutionchain", name="baby_evolution_item_id", + ), migrations.AlterField( - model_name='abilityflavortext', - name='language', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='abilityflavortext', blank=True, to='pokemon_v2.Language', null=True), + model_name="abilityflavortext", + name="flavor_text", + field=models.CharField(max_length=500), preserve_default=True, ), + migrations.RenameField( + model_name="pokemonevolution", + old_name="minimum_beauty", + new_name="min_beauty", + ), + migrations.RenameField( + model_name="pokemonevolution", + old_name="item", + new_name="evolution_item_id", + ), + migrations.RenameField( + model_name="pokemonevolution", + old_name="held_item", + new_name="held_item_id", + ), + migrations.RemoveField( + model_name="pokemonevolution", name="evolution_item_id", + ), + migrations.RemoveField(model_name="pokemonevolution", name="held_item_id",), + migrations.RemoveField(model_name="pokemonevolution", name="location_id",), migrations.AlterField( - model_name='abilityflavortext', - name='language', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='abilityflavortextlanguage', blank=True, to='pokemon_v2.Language', null=True), + model_name="pokemonevolution", + name="min_affection", + field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='ability', - name='generation', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='ability', blank=True, to='pokemon_v2.Generation', null=True), + model_name="pokemonevolution", + name="min_beauty", + field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='abilityflavortext', - name='language', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='abilityflavortext_language', blank=True, to='pokemon_v2.Language', null=True), + model_name="pokemonevolution", + name="min_happiness", + field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='encounter', - name='version', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='encounter', blank=True, to='pokemon_v2.Version', null=True), + model_name="pokemonevolution", + name="relative_physical_stats", + field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='generation', - name='region', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='generation', blank=True, to='pokemon_v2.Region', null=True), + model_name="pokemonevolution", + name="min_level", + field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='generationname', - name='generation', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='generationname', blank=True, to='pokemon_v2.Generation', null=True), + model_name="pokemonevolution", + name="time_of_day", + field=models.CharField(max_length=10, null=True, blank=True), preserve_default=True, ), - migrations.AlterField( - model_name='location', - name='region', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='location', blank=True, to='pokemon_v2.Region', null=True), + migrations.RenameField( + model_name="pokemonform", old_name="is_mega_form_order", new_name="is_mega", + ), + migrations.AddField( + model_name="pokemonform", + name="form_order", + field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='locationareaencounterrate', - name='version', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='locationareaencounterrate', blank=True, to='pokemon_v2.Version', null=True), + model_name="language", + name="order", + field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='move', - name='generation', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='move', blank=True, to='pokemon_v2.Generation', null=True), + model_name="pokemon", + name="order", + field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='move', - name='type', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='move', blank=True, to='pokemon_v2.Type', null=True), + model_name="pokemonform", + name="order", + field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='pokemonitem', - name='version', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonitem', blank=True, to='pokemon_v2.Version', null=True), + model_name="pokemonspecies", + name="order", + field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='pokemonspecies', - name='generation', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonspecies', blank=True, to='pokemon_v2.Generation', null=True), + model_name="versiongroup", + name="order", + field=models.IntegerField(null=True, blank=True), preserve_default=True, ), - migrations.AlterField( - model_name='type', - name='generation', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='type', blank=True, to='pokemon_v2.Generation', null=True), + migrations.CreateModel( + name="Machine", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("machine_number", models.IntegerField()), + ( + "growth_rate", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.GrowthRate", + null=True, + ), + ), + ( + "move", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Move", + null=True, + ), + ), + ( + "version_group", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="Item", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ("cost", models.IntegerField(null=True, blank=True)), + ("fling_power", models.IntegerField(null=True, blank=True)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ItemCategory", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ItemCategoryName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "item_category", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemcategoryname", + blank=True, + to="pokemon_v2.ItemCategory", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemcategoryname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ItemAttribute", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ItemFlavorText", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("flavor_text", models.CharField(max_length=500)), + ( + "item", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemflavortext", + blank=True, + to="pokemon_v2.Item", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemflavortext_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "version_group", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemflavortext", + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + 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="ItemGameIndex", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("game_index", models.IntegerField()), + ( + "generation", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemgameindex", + blank=True, + to="pokemon_v2.Generation", + null=True, + ), + ), + ( + "item", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemgameindex", + blank=True, + to="pokemon_v2.Item", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ItemName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "item", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemname", + blank=True, + to="pokemon_v2.Item", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ItemPocket", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ItemPocketName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "item_pocket", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itempocketname", + blank=True, + to="pokemon_v2.ItemPocket", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itempocketname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.AddField( + model_name="itemcategory", + name="item_pocket", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemcategory", + blank=True, + to="pokemon_v2.ItemPocket", + null=True, + ), preserve_default=True, ), - migrations.AlterField( - model_name='version', - name='version_group', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='version', blank=True, to='pokemon_v2.VersionGroup', null=True), + migrations.AddField( + model_name="item", + name="item_category", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="item", + blank=True, + to="pokemon_v2.ItemCategory", + null=True, + ), preserve_default=True, ), - migrations.AlterField( - model_name='versiongroup', - name='generation', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='versiongroup', blank=True, to='pokemon_v2.Generation', null=True), + migrations.AddField( + model_name="item", + name="item_fling_effect", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="item", + blank=True, + to="pokemon_v2.ItemFlingEffect", + null=True, + ), preserve_default=True, ), - migrations.AlterField( - model_name='versiongroupregion', - name='version_group', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='versiongroupregion', blank=True, to='pokemon_v2.VersionGroup', null=True), + migrations.AddField( + model_name="evolutionchain", + name="baby_trigger_item", + field=models.ForeignKey( + on_delete=models.CASCADE, blank=True, to="pokemon_v2.Item", null=True + ), preserve_default=True, ), migrations.AddField( - model_name='typeefficacy', - name='damage_type', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='damage_type', blank=True, to='pokemon_v2.Type', null=True), + model_name="machine", + name="item", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="machine", + blank=True, + to="pokemon_v2.Item", + null=True, + ), preserve_default=True, ), migrations.AddField( - model_name='typeefficacy', - name='target_type', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='target_type', blank=True, to='pokemon_v2.Type', null=True), + model_name="pokemonevolution", + name="evolution_item", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="evolution_item", + blank=True, + to="pokemon_v2.Item", + null=True, + ), preserve_default=True, ), - migrations.AlterField( - model_name='pokemon', - name='pokemon_species', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemon', blank=True, to='pokemon_v2.PokemonSpecies', null=True), + migrations.AddField( + model_name="pokemonevolution", + name="held_item", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="held_item", + blank=True, + to="pokemon_v2.Item", + null=True, + ), preserve_default=True, ), - migrations.AlterField( - model_name='pokemondexnumber', - name='pokedex', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemondexnumber', blank=True, to='pokemon_v2.Pokedex', null=True), + migrations.AddField( + model_name="pokemonitem", + name="item", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonitem", + blank=True, + to="pokemon_v2.Item", + null=True, + ), + preserve_default=True, + ), + migrations.CreateModel( + name="Berry", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("natural_gift_power", models.IntegerField()), + ("size", models.IntegerField()), + ("max_harvest", models.IntegerField()), + ("growth_time", models.IntegerField()), + ("soil_dryness", models.IntegerField()), + ("smoothness", models.IntegerField()), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="BerryFirmness", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="BerryFirmnessName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "berry_firmness", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="berryfirmnessname", + blank=True, + to="pokemon_v2.BerryFirmness", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="berryfirmnessname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="BerryFlavor", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("flavor", models.IntegerField()), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ContestCombo", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "first_move", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="first_move", + blank=True, + to="pokemon_v2.Move", + null=True, + ), + ), + ( + "second_move", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="second_move", + blank=True, + to="pokemon_v2.Move", + null=True, + ), + ), + ], + options={}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ContestEffect", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("appeal", models.IntegerField()), + ("jam", models.IntegerField()), + ], + options={}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ContestType", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ContestTypeName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ("flavor", models.CharField(max_length=10)), + ("color", models.CharField(max_length=10)), + ( + "contest_type", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="contesttypename", + blank=True, + to="pokemon_v2.ContestType", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="contesttypename_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.AddField( + model_name="berryflavor", + name="contest_type", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="berryflavor", + blank=True, + to="pokemon_v2.ContestType", + null=True, + ), preserve_default=True, ), - migrations.AlterField( - model_name='encounter', - name='location_area', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='encounter', blank=True, to='pokemon_v2.LocationArea', null=True), + migrations.AddField( + model_name="berry", + name="berry_firmness", + field=models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.BerryFirmness", + null=True, + ), preserve_default=True, ), - migrations.AlterField( - model_name='encounter', - name='pokemon', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='encounter', blank=True, to='pokemon_v2.Pokemon', null=True), + migrations.AddField( + model_name="berry", + name="item", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="berry", + blank=True, + to="pokemon_v2.Item", + null=True, + ), preserve_default=True, ), + migrations.RenameField( + model_name="nature", old_name="hates_flavor_id", new_name="hates_flavor", + ), migrations.AlterField( - model_name='encounterconditionvalue', - name='encounter_condition', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='encounterconditionvalue', blank=True, to='pokemon_v2.EncounterCondition', null=True), + model_name="nature", + name="hates_flavor", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="hates_flavor", + blank=True, + to="pokemon_v2.BerryFlavor", + null=True, + ), preserve_default=True, ), - migrations.AlterField( - model_name='locationarea', - name='location', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='locationarea', blank=True, to='pokemon_v2.Location', null=True), + migrations.RenameField( + model_name="nature", old_name="likes_flavor_id", new_name="likes_flavor", + ), + migrations.AlterField( + model_name="nature", + name="likes_flavor", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="likes_flavor", + blank=True, + to="pokemon_v2.BerryFlavor", + null=True, + ), + preserve_default=True, + ), + migrations.CreateModel( + name="Region", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="RegionName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="regionname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "region", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="regionname", + blank=True, + to="pokemon_v2.Region", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.RemoveField(model_name="generation", name="main_region_id",), + migrations.RemoveField(model_name="pokedex", name="region_id",), + migrations.AddField( + model_name="generation", + name="region", + field=models.ForeignKey( + on_delete=models.CASCADE, blank=True, to="pokemon_v2.Region", null=True + ), preserve_default=True, ), - migrations.AlterField( - model_name='locationareaencounterrate', - name='location_area', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='locationareaencounterrate', blank=True, to='pokemon_v2.LocationArea', null=True), + migrations.AddField( + model_name="pokedex", + name="region", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokedex", + blank=True, + to="pokemon_v2.Region", + null=True, + ), preserve_default=True, ), - migrations.AlterField( - model_name='machine', - name='growth_rate', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='machine', blank=True, to='pokemon_v2.GrowthRate', null=True), + migrations.AddField( + model_name="versiongroupregion", + name="region", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="versiongroupregion", + blank=True, + to="pokemon_v2.Region", + null=True, + ), + preserve_default=True, + ), + migrations.CreateModel( + name="Location", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "region", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Region", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="LocationArea", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("game_index", models.IntegerField()), + ("name", models.CharField(max_length=100)), + ( + "location", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Location", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="LocationAreaEncounterRate", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("rate", models.IntegerField()), + ( + "location_area", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.LocationArea", + null=True, + ), + ), + ( + "version", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Version", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="LocationAreaName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="locationareaname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "location_area", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="locationareaname", + blank=True, + to="pokemon_v2.LocationArea", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="LocationGameIndex", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("game_index", models.IntegerField()), + ( + "generation", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="locationgameindex", + blank=True, + to="pokemon_v2.Generation", + null=True, + ), + ), + ( + "location", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="locationgameindex", + blank=True, + to="pokemon_v2.Location", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="LocationName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="locationname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "location", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="locationname", + blank=True, + to="pokemon_v2.Location", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="Encounter", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("min_level", models.IntegerField()), + ("max_level", models.IntegerField()), + ( + "location_area", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.LocationArea", + null=True, + ), + ), + ( + "pokemon", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Pokemon", + null=True, + ), + ), + ( + "version", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Version", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="EncounterCondition", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="EncounterConditionName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "encounter_condition", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="encounterconditionname", + blank=True, + to="pokemon_v2.EncounterCondition", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="encounterconditionname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="EncounterConditionValue", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ("is_default", models.BooleanField(default=False)), + ( + "encounter_condition", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.EncounterCondition", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="EncounterConditionValueMap", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "encounter", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.Encounter", + null=True, + ), + ), + ( + "encounter_condition_value", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.EncounterConditionValue", + null=True, + ), + ), + ], + options={}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="EncounterConditionValueName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "encounter_condition_value", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="encounterconditionvaluename", + blank=True, + to="pokemon_v2.EncounterConditionValue", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="encounterconditionvaluename_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="EncounterMethod", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ("order", models.IntegerField(null=True, blank=True)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="EncounterMethodName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "encounter_method", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="encountermethodname", + blank=True, + to="pokemon_v2.EncounterMethod", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="encountermethodname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="EncounterSlot", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("slot", models.IntegerField(null=True, blank=True)), + ("rarity", models.IntegerField()), + ( + "encounter_method", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="encounterslot", + blank=True, + to="pokemon_v2.EncounterMethod", + null=True, + ), + ), + ( + "version_group", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="encounterslot", + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.AddField( + model_name="locationareaencounterrate", + name="encounter_method", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="locationareaencounterrate", + blank=True, + to="pokemon_v2.EncounterMethod", + null=True, + ), preserve_default=True, ), - migrations.AlterField( - model_name='movechange', - name='move', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='movechange', blank=True, to='pokemon_v2.Move', null=True), + migrations.AddField( + model_name="encounter", + name="encounter_slot", + field=models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.EncounterSlot", + null=True, + ), + preserve_default=True, + ), + migrations.CreateModel( + name="PalPark", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("base_score", models.IntegerField()), + ("rate", models.IntegerField()), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PalParkArea", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PalParkAreaName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="palparkareaname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "pal_park_area", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="palparkareaname", + blank=True, + to="pokemon_v2.PalParkArea", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokeathlonStat", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokeathlonStatName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokeathlonstatname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "pokeathlon_stat", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokeathlonstatname", + blank=True, + to="pokemon_v2.PokeathlonStat", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="SuperContestCombo", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "first_move", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="first", + blank=True, + to="pokemon_v2.Move", + null=True, + ), + ), + ( + "second_move", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="second", + blank=True, + to="pokemon_v2.Move", + null=True, + ), + ), + ], + options={}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="SuperContestEffect", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("appeal", models.IntegerField()), + ], + options={}, + bases=(models.Model,), + ), + migrations.AddField( + model_name="palpark", + name="pal_park_area", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="palpark", + blank=True, + to="pokemon_v2.PalParkArea", + null=True, + ), preserve_default=True, ), - migrations.AlterField( - model_name='pokemonegggroup', - name='egg_group', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonegggroup', blank=True, to='pokemon_v2.EggGroup', null=True), + migrations.AddField( + model_name="palpark", + name="pokemon_species", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="palpark", + blank=True, + to="pokemon_v2.PokemonSpecies", + null=True, + ), preserve_default=True, ), - migrations.AlterField( - model_name='pokemonevolution', - name='evolution_trigger', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonevolution', blank=True, to='pokemon_v2.EvolutionTrigger', null=True), + migrations.AddField( + model_name="naturepokeathlonstat", + name="pokeathlon_stat", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="naturepokeathlonstat", + blank=True, + to="pokemon_v2.PokeathlonStat", + null=True, + ), preserve_default=True, ), migrations.AlterField( - model_name='pokemonform', - name='pokemon', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonform', blank=True, to='pokemon_v2.Pokemon', null=True), + model_name="palpark", + name="base_score", + field=models.IntegerField(null=True, blank=True), preserve_default=True, ), migrations.AlterField( - model_name='pokemonitem', - name='pokemon', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonitem', blank=True, to='pokemon_v2.Pokemon', null=True), + model_name="abilityflavortext", + name="ability", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="abilityflavortext_descriptions", + blank=True, + to="pokemon_v2.Ability", + null=True, + ), preserve_default=True, ), migrations.AlterField( - model_name='pokemonspecies', - name='growth_rate', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonspecies', blank=True, to='pokemon_v2.GrowthRate', null=True), + model_name="abilityflavortext", + name="ability", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="abilityflavortext", + blank=True, + to="pokemon_v2.Ability", + null=True, + ), preserve_default=True, ), - migrations.RenameField( - model_name='pokemonform', - old_name='form_identifier', - new_name='form_name', - ), - migrations.AddField( - model_name='pokemonmove', - name='move_learn_method', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonmove', blank=True, to='pokemon_v2.MoveLearnMethod', null=True), + migrations.AlterField( + model_name="abilityflavortext", + name="language", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="abilityflavortext", + blank=True, + to="pokemon_v2.Language", + null=True, + ), preserve_default=True, ), - migrations.CreateModel( - name='VersionGroupMoveLearnMethod', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('move_learn_method', models.ForeignKey(on_delete=models.CASCADE, related_name='versiongroupmovelearnmethod', blank=True, to='pokemon_v2.MoveLearnMethod', null=True)), - ('version_group', models.ForeignKey(on_delete=models.CASCADE, related_name='versiongroupmovelearnmethod', blank=True, to='pokemon_v2.VersionGroup', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ItemAttributeDescription', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('description', models.CharField(default='', max_length=1000)), - ('item_attribute', models.ForeignKey(on_delete=models.CASCADE, related_name='itemattributedescription', blank=True, to='pokemon_v2.ItemAttribute', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='itemattributedescription_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='ItemAttributeMap', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('item', models.ForeignKey(on_delete=models.CASCADE, related_name='itemattributemap', blank=True, to='pokemon_v2.Item', null=True)), - ('item_attribute', models.ForeignKey(on_delete=models.CASCADE, related_name='itemattributemap', blank=True, to='pokemon_v2.ItemAttribute', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="abilityflavortext", + name="language", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="abilityflavortextlanguage", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + preserve_default=True, ), - migrations.AddField( - model_name='berry', - name='name', - field=models.CharField(default='name', max_length=100), - preserve_default=False, + migrations.AlterField( + model_name="ability", + name="generation", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="ability", + blank=True, + to="pokemon_v2.Generation", + null=True, + ), + preserve_default=True, ), - migrations.AddField( - model_name='languagename', - name='local_language', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='locallanguage', blank=True, to='pokemon_v2.Language', null=True), + migrations.AlterField( + model_name="abilityflavortext", + name="language", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="abilityflavortext_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), preserve_default=True, ), migrations.AlterField( - model_name='naturepokeathlonstat', - name='nature', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='naturepokeathlonstat', blank=True, to='pokemon_v2.Nature', null=True), + model_name="encounter", + name="version", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="encounter", + blank=True, + to="pokemon_v2.Version", + null=True, + ), preserve_default=True, ), - migrations.CreateModel( - name='ItemAttributeName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('item_attribute', models.ForeignKey(on_delete=models.CASCADE, related_name='itemattributename', blank=True, to='pokemon_v2.ItemAttribute', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='itemattributename_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="generation", + name="region", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="generation", + blank=True, + to="pokemon_v2.Region", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='MoveAttributeDescription', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('description', models.CharField(default='', max_length=1000)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='moveattributedescription_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move_attribute', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.MoveAttribute', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="generationname", + name="generation", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="generationname", + blank=True, + to="pokemon_v2.Generation", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='MoveAttributeMap', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('move', models.ForeignKey(on_delete=models.CASCADE, related_name='moveattributemap', blank=True, to='pokemon_v2.Move', null=True)), - ('move_attribute', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.MoveAttribute', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="location", + name="region", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="location", + blank=True, + to="pokemon_v2.Region", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='MoveAttributeName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='moveattributename_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move_attribute', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.MoveAttribute', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="locationareaencounterrate", + name="version", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="locationareaencounterrate", + blank=True, + to="pokemon_v2.Version", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='MoveDamageClassName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='movedamageclassname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move_damage_class', models.ForeignKey(on_delete=models.CASCADE, related_name='movedamageclassname', blank=True, to='pokemon_v2.MoveDamageClass', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="move", + name="generation", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="move", + blank=True, + to="pokemon_v2.Generation", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='MoveTargetName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='movetargetname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move_target', models.ForeignKey(on_delete=models.CASCADE, related_name='movetargetname', blank=True, to='pokemon_v2.MoveTarget', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="move", + name="type", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="move", + blank=True, + to="pokemon_v2.Type", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='PokedexName', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=100)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='pokedexname_language', blank=True, to='pokemon_v2.Language', null=True)), - ('pokedex', models.ForeignKey(on_delete=models.CASCADE, related_name='pokedexname', blank=True, to='pokemon_v2.Pokedex', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="pokemonitem", + name="version", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonitem", + blank=True, + to="pokemon_v2.Version", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='MoveLearnMethodDescription', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('description', models.CharField(default='', max_length=1000)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='movelearnmethoddescription_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move_learn_method', models.ForeignKey(on_delete=models.CASCADE, related_name='movelearnmethoddescription', blank=True, to='pokemon_v2.MoveLearnMethod', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="pokemonspecies", + name="generation", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonspecies", + blank=True, + to="pokemon_v2.Generation", + null=True, + ), + preserve_default=True, ), migrations.AlterField( - model_name='move', - name='move_damage_class', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='move', blank=True, to='pokemon_v2.MoveDamageClass', null=True), + model_name="type", + name="generation", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="type", + blank=True, + to="pokemon_v2.Generation", + null=True, + ), preserve_default=True, ), migrations.AlterField( - model_name='stat', - name='move_damage_class', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='stat', blank=True, to='pokemon_v2.MoveDamageClass', null=True), + model_name="version", + name="version_group", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="version", + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), preserve_default=True, ), migrations.AlterField( - model_name='type', - name='move_damage_class', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='type', blank=True, to='pokemon_v2.MoveDamageClass', null=True), + model_name="versiongroup", + name="generation", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="versiongroup", + blank=True, + to="pokemon_v2.Generation", + null=True, + ), preserve_default=True, ), migrations.AlterField( - model_name='move', - name='move_target', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='move', blank=True, to='pokemon_v2.MoveTarget', null=True), + model_name="versiongroupregion", + name="version_group", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="versiongroupregion", + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), preserve_default=True, ), - migrations.CreateModel( - name='AbilityChangeEffectText', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('effect', models.CharField(max_length=6000)), - ('ability_change', models.ForeignKey(on_delete=models.CASCADE, related_name='abilitychangeeffecttext', blank=True, to='pokemon_v2.AbilityChange', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='abilitychangeeffecttext_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AddField( + model_name="typeefficacy", + name="damage_type", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="damage_type", + blank=True, + to="pokemon_v2.Type", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='AbilityEffectText', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('effect', models.CharField(max_length=6000)), - ('short_effect', models.CharField(max_length=300)), - ('ability', models.ForeignKey(on_delete=models.CASCADE, related_name='abilityeffecttext', blank=True, to='pokemon_v2.Ability', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='abilityeffecttext_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AddField( + model_name="typeefficacy", + name="target_type", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="target_type", + blank=True, + to="pokemon_v2.Type", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='ItemEffectText', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('effect', models.CharField(max_length=6000)), - ('short_effect', models.CharField(max_length=300)), - ('item', models.ForeignKey(on_delete=models.CASCADE, related_name='itemeffecttext', blank=True, to='pokemon_v2.Item', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='itemeffecttext_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="pokemon", + name="pokemon_species", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemon", + blank=True, + to="pokemon_v2.PokemonSpecies", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='ContestEffectEffectText', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('effect', models.CharField(max_length=6000)), - ('contest_effect', models.ForeignKey(on_delete=models.CASCADE, related_name='contesteffecteffecttext', blank=True, to='pokemon_v2.ContestEffect', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='contesteffecteffecttext_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="pokemondexnumber", + name="pokedex", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemondexnumber", + blank=True, + to="pokemon_v2.Pokedex", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='MoveEffectChangeEffectText', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('effect', models.CharField(max_length=6000)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='moveeffectchangeeffecttext_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move_effect_change', models.ForeignKey(on_delete=models.CASCADE, related_name='moveeffectchangeeffecttext', blank=True, to='pokemon_v2.MoveEffectChange', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="encounter", + name="location_area", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="encounter", + blank=True, + to="pokemon_v2.LocationArea", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='MoveEffectEffectText', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('effect', models.CharField(max_length=6000)), - ('short_effect', models.CharField(max_length=300)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='moveeffecteffecttext_language', blank=True, to='pokemon_v2.Language', null=True)), - ('move_effect', models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.MoveEffect', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="encounter", + name="pokemon", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="encounter", + blank=True, + to="pokemon_v2.Pokemon", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='SuperContestEffectFlavorText', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('flavor_text', models.CharField(max_length=500)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='supercontesteffectflavortext_language', blank=True, to='pokemon_v2.Language', null=True)), - ('super_contest_effect', models.ForeignKey(on_delete=models.CASCADE, related_name='supercontesteffectflavortext', blank=True, to='pokemon_v2.SuperContestEffect', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="encounterconditionvalue", + name="encounter_condition", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="encounterconditionvalue", + blank=True, + to="pokemon_v2.EncounterCondition", + null=True, + ), + preserve_default=True, ), - migrations.CreateModel( - name='ContestEffectFlavorText', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('flavor_text', models.CharField(max_length=500)), - ('contest_effect', models.ForeignKey(on_delete=models.CASCADE, related_name='contesteffectflavortext', blank=True, to='pokemon_v2.ContestEffect', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='contesteffectflavortext_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="locationarea", + name="location", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="locationarea", + blank=True, + to="pokemon_v2.Location", + null=True, + ), + preserve_default=True, ), migrations.AlterField( - model_name='characteristic', - name='stat', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='characteristic', blank=True, to='pokemon_v2.Stat', null=True), + model_name="locationareaencounterrate", + name="location_area", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="locationareaencounterrate", + blank=True, + to="pokemon_v2.LocationArea", + null=True, + ), preserve_default=True, ), migrations.AlterField( - model_name='pokemonspecies', - name='pokemon_color', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonspecies', blank=True, to='pokemon_v2.PokemonColor', null=True), + model_name="machine", + name="growth_rate", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="machine", + blank=True, + to="pokemon_v2.GrowthRate", + null=True, + ), preserve_default=True, ), migrations.AlterField( - model_name='pokemonspecies', - name='pokemon_shape', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonspecies', blank=True, to='pokemon_v2.PokemonShape', null=True), + model_name="movechange", + name="move", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="movechange", + blank=True, + to="pokemon_v2.Move", + null=True, + ), preserve_default=True, ), - migrations.AddField( - model_name='pokemonevolution', - name='location', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='location', blank=True, to='pokemon_v2.Location', null=True), + migrations.AlterField( + model_name="pokemonegggroup", + name="egg_group", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonegggroup", + blank=True, + to="pokemon_v2.EggGroup", + null=True, + ), preserve_default=True, ), migrations.AlterField( - model_name='pokemonspecies', - name='pokemon_shape', - field=models.ForeignKey(on_delete=models.CASCADE, blank=True, to='pokemon_v2.PokemonShape', null=True), + model_name="pokemonevolution", + name="evolution_trigger", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonevolution", + blank=True, + to="pokemon_v2.EvolutionTrigger", + null=True, + ), preserve_default=True, ), - migrations.AddField( - model_name='naturebattlestylepreference', - name='move_battle_style', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='naturebattlestylepreference', blank=True, to='pokemon_v2.MoveBattleStyle', null=True), + migrations.AlterField( + model_name="pokemonform", + name="pokemon", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonform", + blank=True, + to="pokemon_v2.Pokemon", + null=True, + ), preserve_default=True, ), - migrations.AddField( - model_name='abilitychange', - name='version_group', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='abilitychange', blank=True, to='pokemon_v2.VersionGroup', null=True), + migrations.AlterField( + model_name="pokemonitem", + name="pokemon", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonitem", + blank=True, + to="pokemon_v2.Pokemon", + 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(on_delete=models.CASCADE, related_name='berryflavorname', blank=True, to='pokemon_v2.BerryFlavor', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='berryflavorname_language', blank=True, to='pokemon_v2.Language', null=True)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AlterField( + model_name="pokemonspecies", + name="growth_rate", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonspecies", + blank=True, + to="pokemon_v2.GrowthRate", + null=True, + ), + preserve_default=True, ), - migrations.RemoveField( - model_name='berryflavor', - name='flavor', + migrations.RenameField( + model_name="pokemonform", old_name="form_identifier", new_name="form_name", ), 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(on_delete=models.CASCADE, related_name='berryflavormap', blank=True, to='pokemon_v2.Berry', null=True)), - ('berry_flavor', models.ForeignKey(on_delete=models.CASCADE, related_name='berryflavormap', blank=True, to='pokemon_v2.BerryFlavor', null=True)), - ], - options={ - }, + model_name="pokemonmove", + name="move_learn_method", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonmove", + blank=True, + to="pokemon_v2.MoveLearnMethod", + null=True, + ), + preserve_default=True, + ), + migrations.CreateModel( + name="VersionGroupMoveLearnMethod", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "move_learn_method", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="versiongroupmovelearnmethod", + blank=True, + to="pokemon_v2.MoveLearnMethod", + null=True, + ), + ), + ( + "version_group", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="versiongroupmovelearnmethod", + blank=True, + to="pokemon_v2.VersionGroup", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ItemAttributeDescription", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("description", models.CharField(default="", max_length=1000)), + ( + "item_attribute", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemattributedescription", + blank=True, + to="pokemon_v2.ItemAttribute", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemattributedescription_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ItemAttributeMap", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "item", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemattributemap", + blank=True, + to="pokemon_v2.Item", + null=True, + ), + ), + ( + "item_attribute", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemattributemap", + blank=True, + to="pokemon_v2.ItemAttribute", + null=True, + ), + ), + ], + options={"abstract": False,}, 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(on_delete=models.CASCADE, related_name='itemflingeffecteffecttext', blank=True, to='pokemon_v2.ItemFlingEffect', null=True)), - ('language', models.ForeignKey(on_delete=models.CASCADE, related_name='itemflingeffecteffecttext_language', blank=True, to='pokemon_v2.Language', null=True)), - ('effect', models.CharField(max_length=6000)), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), + migrations.AddField( + model_name="berry", + name="name", + field=models.CharField(default="name", max_length=100), + preserve_default=False, ), - migrations.AlterField( - model_name='berry', - name='berry_firmness', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='berry', blank=True, to='pokemon_v2.BerryFirmness', null=True), + migrations.AddField( + model_name="languagename", + name="local_language", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="locallanguage", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + preserve_default=True, + ), + migrations.AlterField( + model_name="naturepokeathlonstat", + name="nature", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="naturepokeathlonstat", + blank=True, + to="pokemon_v2.Nature", + null=True, + ), + preserve_default=True, + ), + migrations.CreateModel( + name="ItemAttributeName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "item_attribute", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemattributename", + blank=True, + to="pokemon_v2.ItemAttribute", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemattributename_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveAttributeDescription", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("description", models.CharField(default="", max_length=1000)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="moveattributedescription_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move_attribute", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.MoveAttribute", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveAttributeMap", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "move", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="moveattributemap", + blank=True, + to="pokemon_v2.Move", + null=True, + ), + ), + ( + "move_attribute", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.MoveAttribute", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveAttributeName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="moveattributename_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move_attribute", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.MoveAttribute", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveDamageClassName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movedamageclassname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move_damage_class", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movedamageclassname", + blank=True, + to="pokemon_v2.MoveDamageClass", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveTargetName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movetargetname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move_target", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movetargetname", + blank=True, + to="pokemon_v2.MoveTarget", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="PokedexName", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("name", models.CharField(max_length=100)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokedexname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "pokedex", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokedexname", + blank=True, + to="pokemon_v2.Pokedex", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveLearnMethodDescription", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("description", models.CharField(default="", max_length=1000)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movelearnmethoddescription_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move_learn_method", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="movelearnmethoddescription", + blank=True, + to="pokemon_v2.MoveLearnMethod", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.AlterField( + model_name="move", + name="move_damage_class", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="move", + blank=True, + to="pokemon_v2.MoveDamageClass", + null=True, + ), + preserve_default=True, + ), + migrations.AlterField( + model_name="stat", + name="move_damage_class", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="stat", + blank=True, + to="pokemon_v2.MoveDamageClass", + null=True, + ), + preserve_default=True, + ), + migrations.AlterField( + model_name="type", + name="move_damage_class", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="type", + blank=True, + to="pokemon_v2.MoveDamageClass", + null=True, + ), + preserve_default=True, + ), + migrations.AlterField( + model_name="move", + name="move_target", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="move", + blank=True, + to="pokemon_v2.MoveTarget", + null=True, + ), + preserve_default=True, + ), + migrations.CreateModel( + name="AbilityChangeEffectText", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("effect", models.CharField(max_length=6000)), + ( + "ability_change", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="abilitychangeeffecttext", + blank=True, + to="pokemon_v2.AbilityChange", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="abilitychangeeffecttext_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="AbilityEffectText", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("effect", models.CharField(max_length=6000)), + ("short_effect", models.CharField(max_length=300)), + ( + "ability", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="abilityeffecttext", + blank=True, + to="pokemon_v2.Ability", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="abilityeffecttext_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ItemEffectText", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("effect", models.CharField(max_length=6000)), + ("short_effect", models.CharField(max_length=300)), + ( + "item", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemeffecttext", + blank=True, + to="pokemon_v2.Item", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemeffecttext_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ContestEffectEffectText", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("effect", models.CharField(max_length=6000)), + ( + "contest_effect", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="contesteffecteffecttext", + blank=True, + to="pokemon_v2.ContestEffect", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="contesteffecteffecttext_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveEffectChangeEffectText", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("effect", models.CharField(max_length=6000)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="moveeffectchangeeffecttext_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move_effect_change", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="moveeffectchangeeffecttext", + blank=True, + to="pokemon_v2.MoveEffectChange", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="MoveEffectEffectText", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("effect", models.CharField(max_length=6000)), + ("short_effect", models.CharField(max_length=300)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="moveeffecteffecttext_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "move_effect", + models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.MoveEffect", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="SuperContestEffectFlavorText", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("flavor_text", models.CharField(max_length=500)), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="supercontesteffectflavortext_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ( + "super_contest_effect", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="supercontesteffectflavortext", + blank=True, + to="pokemon_v2.SuperContestEffect", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.CreateModel( + name="ContestEffectFlavorText", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("flavor_text", models.CharField(max_length=500)), + ( + "contest_effect", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="contesteffectflavortext", + blank=True, + to="pokemon_v2.ContestEffect", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="contesteffectflavortext_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.AlterField( + model_name="characteristic", + name="stat", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="characteristic", + blank=True, + to="pokemon_v2.Stat", + null=True, + ), + preserve_default=True, + ), + migrations.AlterField( + model_name="pokemonspecies", + name="pokemon_color", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonspecies", + blank=True, + to="pokemon_v2.PokemonColor", + null=True, + ), + preserve_default=True, + ), + migrations.AlterField( + model_name="pokemonspecies", + name="pokemon_shape", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonspecies", + blank=True, + to="pokemon_v2.PokemonShape", + null=True, + ), preserve_default=True, ), - migrations.AlterField( - model_name='berryflavor', - name='contest_type', - field=models.OneToOneField(on_delete=models.CASCADE, related_name='berryflavor', null=True, blank=True, to='pokemon_v2.ContestType'), + migrations.AddField( + model_name="pokemonevolution", + name="location", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="location", + blank=True, + to="pokemon_v2.Location", + null=True, + ), preserve_default=True, ), - migrations.RemoveField( - model_name='move', - name='contest_effect_id', + migrations.AlterField( + model_name="pokemonspecies", + name="pokemon_shape", + field=models.ForeignKey( + on_delete=models.CASCADE, + blank=True, + to="pokemon_v2.PokemonShape", + null=True, + ), + preserve_default=True, ), - migrations.RemoveField( - model_name='move', - name='contest_type_id', + migrations.AddField( + model_name="naturebattlestylepreference", + name="move_battle_style", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="naturebattlestylepreference", + blank=True, + to="pokemon_v2.MoveBattleStyle", + null=True, + ), + preserve_default=True, ), - migrations.RemoveField( - model_name='move', - name='super_contest_effect_id', + migrations.AddField( + model_name="abilitychange", + name="version_group", + field=models.ForeignKey( + on_delete=models.CASCADE, + 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( + on_delete=models.CASCADE, + related_name="berryflavorname", + blank=True, + to="pokemon_v2.BerryFlavor", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="berryflavorname_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + 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( + on_delete=models.CASCADE, + related_name="berryflavormap", + blank=True, + to="pokemon_v2.Berry", + null=True, + ), + ), + ( + "berry_flavor", + models.ForeignKey( + on_delete=models.CASCADE, + 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( + on_delete=models.CASCADE, + related_name="itemflingeffecteffecttext", + blank=True, + to="pokemon_v2.ItemFlingEffect", + null=True, + ), + ), + ( + "language", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemflingeffecteffecttext_language", + blank=True, + to="pokemon_v2.Language", + null=True, + ), + ), + ("effect", models.CharField(max_length=6000)), + ], + options={"abstract": False,}, + bases=(models.Model,), + ), + migrations.AlterField( + model_name="berry", + name="berry_firmness", + field=models.ForeignKey( + on_delete=models.CASCADE, + 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( + on_delete=models.CASCADE, + 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(on_delete=models.CASCADE, related_name='move', blank=True, to='pokemon_v2.ContestEffect', null=True), + model_name="move", + name="contest_effect", + field=models.ForeignKey( + on_delete=models.CASCADE, + 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(on_delete=models.CASCADE, related_name='move', blank=True, to='pokemon_v2.ContestType', null=True), + model_name="move", + name="contest_type", + field=models.ForeignKey( + on_delete=models.CASCADE, + 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(on_delete=models.CASCADE, related_name='move', blank=True, to='pokemon_v2.SuperContestEffect', null=True), + model_name="move", + name="super_contest_effect", + field=models.ForeignKey( + on_delete=models.CASCADE, + 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(on_delete=models.CASCADE, related_name='pokemonspecies', blank=True, to='pokemon_v2.PokemonHabitat', null=True), + model_name="pokemonspecies", + name="pokemon_habitat", + field=models.ForeignKey( + on_delete=models.CASCADE, + 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(on_delete=models.CASCADE, related_name='pokemonspecies', blank=True, to='pokemon_v2.PokemonShape', null=True), + model_name="pokemonspecies", + name="pokemon_shape", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonspecies", + blank=True, + to="pokemon_v2.PokemonShape", + null=True, + ), preserve_default=True, ), migrations.AlterField( - model_name='generation', - name='region', - field=models.OneToOneField(on_delete=models.CASCADE, related_name='generation', null=True, blank=True, to='pokemon_v2.Region'), + model_name="generation", + name="region", + field=models.OneToOneField( + on_delete=models.CASCADE, + related_name="generation", + null=True, + blank=True, + to="pokemon_v2.Region", + ), preserve_default=True, ), migrations.AddField( - model_name='berry', - name='natural_gift_type', - field=models.ForeignKey(on_delete=models.CASCADE, related_name='berry', blank=True, to='pokemon_v2.Type', null=True), + model_name="berry", + name="natural_gift_type", + field=models.ForeignKey( + on_delete=models.CASCADE, + related_name="berry", + blank=True, + to="pokemon_v2.Type", + null=True, + ), preserve_default=True, ), migrations.AlterField( - model_name='itemflingeffect', - name='name', + model_name="itemflingeffect", + name="name", field=models.CharField(max_length=100), preserve_default=True, ), diff --git a/pokemon_v2/migrations/0002_itemsprites_pokemonformsprites_pokemonsprites.py b/pokemon_v2/migrations/0002_itemsprites_pokemonformsprites_pokemonsprites.py index 5a5278082..8fa7cd83d 100644 --- a/pokemon_v2/migrations/0002_itemsprites_pokemonformsprites_pokemonsprites.py +++ b/pokemon_v2/migrations/0002_itemsprites_pokemonformsprites_pokemonsprites.py @@ -4,41 +4,86 @@ class Migration(migrations.Migration): dependencies = [ - ('pokemon_v2', '0001_squashed_0002_auto_20160301_1408'), + ("pokemon_v2", "0001_squashed_0002_auto_20160301_1408"), ] operations = [ migrations.CreateModel( - name='ItemSprites', + name="ItemSprites", fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('sprites', models.CharField(max_length=500)), - ('item', models.ForeignKey(on_delete=models.CASCADE, related_name='itemsprites', blank=True, to='pokemon_v2.Item', null=True)), + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("sprites", models.CharField(max_length=500)), + ( + "item", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="itemsprites", + blank=True, + to="pokemon_v2.Item", + null=True, + ), + ), ], - options={ - 'abstract': False, - }, + options={"abstract": False,}, ), migrations.CreateModel( - name='PokemonFormSprites', + name="PokemonFormSprites", fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('sprites', models.CharField(max_length=500)), - ('pokemon_form', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonformsprites', blank=True, to='pokemon_v2.PokemonForm', null=True)), + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("sprites", models.CharField(max_length=500)), + ( + "pokemon_form", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonformsprites", + blank=True, + to="pokemon_v2.PokemonForm", + null=True, + ), + ), ], - options={ - 'abstract': False, - }, + options={"abstract": False,}, ), migrations.CreateModel( - name='PokemonSprites', + name="PokemonSprites", fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('sprites', models.CharField(max_length=500)), - ('pokemon', models.ForeignKey(on_delete=models.CASCADE, related_name='pokemonsprites', blank=True, to='pokemon_v2.Pokemon', null=True)), + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ("sprites", models.CharField(max_length=500)), + ( + "pokemon", + models.ForeignKey( + on_delete=models.CASCADE, + related_name="pokemonsprites", + blank=True, + to="pokemon_v2.Pokemon", + null=True, + ), + ), ], - options={ - 'abstract': False, - }, + options={"abstract": False,}, ), ] diff --git a/pokemon_v2/migrations/0003_auto_20160530_1132.py b/pokemon_v2/migrations/0003_auto_20160530_1132.py index 27ebe186d..f5edc9a15 100644 --- a/pokemon_v2/migrations/0003_auto_20160530_1132.py +++ b/pokemon_v2/migrations/0003_auto_20160530_1132.py @@ -4,493 +4,493 @@ class Migration(migrations.Migration): dependencies = [ - ('pokemon_v2', '0002_itemsprites_pokemonformsprites_pokemonsprites'), + ("pokemon_v2", "0002_itemsprites_pokemonformsprites_pokemonsprites"), ] operations = [ migrations.AlterField( - model_name='ability', - name='name', + model_name="ability", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='abilityname', - name='name', + model_name="abilityname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='berry', - name='name', + model_name="berry", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='berryfirmness', - name='name', + model_name="berryfirmness", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='berryfirmnessname', - name='name', + model_name="berryfirmnessname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='berryflavor', - name='name', + model_name="berryflavor", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='berryflavorname', - name='name', + model_name="berryflavorname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='contesttype', - name='name', + model_name="contesttype", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='contesttypename', - name='name', + model_name="contesttypename", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='egggroup', - name='name', + model_name="egggroup", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='egggroupname', - name='name', + model_name="egggroupname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='encountercondition', - name='name', + model_name="encountercondition", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='encounterconditionname', - name='name', + model_name="encounterconditionname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='encounterconditionvalue', - name='name', + model_name="encounterconditionvalue", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='encounterconditionvaluename', - name='name', + model_name="encounterconditionvaluename", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='encountermethod', - name='name', + model_name="encountermethod", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='encountermethodname', - name='name', + model_name="encountermethodname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='evolutiontrigger', - name='name', + model_name="evolutiontrigger", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='evolutiontriggername', - name='name', + model_name="evolutiontriggername", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='gender', - name='name', + model_name="gender", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='generation', - name='name', + model_name="generation", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='generationname', - name='name', + model_name="generationname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='growthrate', - name='name', + model_name="growthrate", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='item', - name='name', + model_name="item", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='itemattribute', - name='name', + model_name="itemattribute", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='itemattributename', - name='name', + model_name="itemattributename", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='itemcategory', - name='name', + model_name="itemcategory", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='itemcategoryname', - name='name', + model_name="itemcategoryname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='itemflingeffect', - name='name', + model_name="itemflingeffect", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='itemname', - name='name', + model_name="itemname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='itempocket', - name='name', + model_name="itempocket", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='itempocketname', - name='name', + model_name="itempocketname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='language', - name='name', + model_name="language", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='languagename', - name='name', + model_name="languagename", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='location', - name='name', + model_name="location", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='locationarea', - name='name', + model_name="locationarea", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='locationareaname', - name='name', + model_name="locationareaname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='locationname', - name='name', + model_name="locationname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='move', - name='name', + model_name="move", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='moveattribute', - name='name', + model_name="moveattribute", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='moveattributename', - name='name', + model_name="moveattributename", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='movebattlestyle', - name='name', + model_name="movebattlestyle", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='movebattlestylename', - name='name', + model_name="movebattlestylename", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='movedamageclass', - name='name', + model_name="movedamageclass", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='movedamageclassname', - name='name', + model_name="movedamageclassname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='movelearnmethod', - name='name', + model_name="movelearnmethod", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='movelearnmethodname', - name='name', + model_name="movelearnmethodname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='movemetaailment', - name='name', + model_name="movemetaailment", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='movemetaailmentname', - name='name', + model_name="movemetaailmentname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='movemetacategory', - name='name', + model_name="movemetacategory", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='movename', - name='name', + model_name="movename", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='movetarget', - name='name', + model_name="movetarget", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='movetargetname', - name='name', + model_name="movetargetname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='nature', - name='name', + model_name="nature", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='naturename', - name='name', + model_name="naturename", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='palparkarea', - name='name', + model_name="palparkarea", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='palparkareaname', - name='name', + model_name="palparkareaname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokeathlonstat', - name='name', + model_name="pokeathlonstat", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokeathlonstatname', - name='name', + model_name="pokeathlonstatname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokedex', - name='name', + model_name="pokedex", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokedexname', - name='name', + model_name="pokedexname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokemon', - name='name', + model_name="pokemon", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokemoncolor', - name='name', + model_name="pokemoncolor", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokemoncolorname', - name='name', + model_name="pokemoncolorname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokemonform', - name='name', + model_name="pokemonform", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokemonformname', - name='name', + model_name="pokemonformname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokemonhabitat', - name='name', + model_name="pokemonhabitat", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokemonhabitatname', - name='name', + model_name="pokemonhabitatname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokemonshape', - name='name', + model_name="pokemonshape", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokemonshapename', - name='name', + model_name="pokemonshapename", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokemonspecies', - name='name', + model_name="pokemonspecies", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='pokemonspeciesname', - name='name', + model_name="pokemonspeciesname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='region', - name='name', + model_name="region", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='regionname', - name='name', + model_name="regionname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='stat', - name='name', + model_name="stat", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='statname', - name='name', + model_name="statname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='type', - name='name', + model_name="type", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='typename', - name='name', + model_name="typename", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='version', - name='name', + model_name="version", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='versiongroup', - name='name', + model_name="versiongroup", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), migrations.AlterField( - model_name='versionname', - name='name', + model_name="versionname", + name="name", field=models.CharField(max_length=100, db_index=True), preserve_default=True, ), diff --git a/pokemon_v2/models.py b/pokemon_v2/models.py index dc93eb49d..96042599e 100755 --- a/pokemon_v2/models.py +++ b/pokemon_v2/models.py @@ -7,8 +7,13 @@ class HasAbility(models.Model): - ability = models.ForeignKey('Ability', blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + ability = models.ForeignKey( + "Ability", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -17,7 +22,12 @@ class Meta: class HasCharacteristic(models.Model): characteristic = models.ForeignKey( - 'Characteristic', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "Characteristic", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -26,7 +36,12 @@ class Meta: class HasContestType(models.Model): contest_type = models.ForeignKey( - 'ContestType', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "ContestType", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -35,7 +50,12 @@ class Meta: class HasContestEffect(models.Model): contest_effect = models.ForeignKey( - 'ContestEffect', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "ContestEffect", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -44,8 +64,11 @@ class Meta: class HasSuperContestEffect(models.Model): super_contest_effect = models.ForeignKey( - 'SuperContestEffect', blank=True, null=True, related_name="%(class)s", - on_delete=models.CASCADE + "SuperContestEffect", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, ) class Meta: @@ -54,7 +77,7 @@ class Meta: class HasDescription(models.Model): - description = models.CharField(max_length=1000, default='') + description = models.CharField(max_length=1000, default="") class Meta: abstract = True @@ -63,7 +86,12 @@ class Meta: class HasGender(models.Model): gender = models.ForeignKey( - 'Gender', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "Gender", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -80,7 +108,12 @@ class Meta: class HasEggGroup(models.Model): egg_group = models.ForeignKey( - 'EggGroup', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "EggGroup", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -89,8 +122,12 @@ class Meta: class HasEncounterMethod(models.Model): encounter_method = models.ForeignKey( - 'EncounterMethod', blank=True, null=True, related_name="%(class)s", - on_delete=models.CASCADE) + "EncounterMethod", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -99,8 +136,12 @@ class Meta: class HasEncounterCondition(models.Model): encounter_condition = models.ForeignKey( - 'EncounterCondition', blank=True, null=True, related_name="%(class)s", - on_delete=models.CASCADE) + "EncounterCondition", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -109,8 +150,12 @@ class Meta: class HasEvolutionTrigger(models.Model): evolution_trigger = models.ForeignKey( - 'EvolutionTrigger', blank=True, null=True, related_name="%(class)s", - on_delete=models.CASCADE) + "EvolutionTrigger", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -127,8 +172,12 @@ class Meta: class HasFlingEffect(models.Model): item_fling_effect = models.ForeignKey( - 'ItemFlingEffect', blank=True, null=True, related_name="%(class)s", - on_delete=models.CASCADE) + "ItemFlingEffect", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -144,8 +193,13 @@ class Meta: class HasGeneration(models.Model): - generation = models.ForeignKey('Generation', blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + generation = models.ForeignKey( + "Generation", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -153,8 +207,13 @@ class Meta: class HasGrowthRate(models.Model): - growth_rate = models.ForeignKey('GrowthRate', blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + growth_rate = models.ForeignKey( + "GrowthRate", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -162,8 +221,13 @@ class Meta: class HasItem(models.Model): - item = models.ForeignKey('Item', blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + item = models.ForeignKey( + "Item", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -172,7 +236,12 @@ class Meta: class HasItemAttribute(models.Model): item_attribute = models.ForeignKey( - 'ItemAttribute', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "ItemAttribute", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -181,7 +250,12 @@ class Meta: class HasItemCategory(models.Model): item_category = models.ForeignKey( - 'ItemCategory', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "ItemCategory", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -190,7 +264,12 @@ class Meta: class HasItemPocket(models.Model): item_pocket = models.ForeignKey( - 'ItemPocket', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "ItemPocket", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -199,8 +278,12 @@ class Meta: class HasLanguage(models.Model): language = models.ForeignKey( - 'Language', blank=True, null=True, related_name="%(class)s_language", - on_delete=models.CASCADE) + "Language", + blank=True, + null=True, + related_name="%(class)s_language", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -208,8 +291,13 @@ class Meta: class HasLocation(models.Model): - location = models.ForeignKey('Location', blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + location = models.ForeignKey( + "Location", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -218,7 +306,12 @@ class Meta: class HasLocationArea(models.Model): location_area = models.ForeignKey( - 'LocationArea', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "LocationArea", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -227,8 +320,12 @@ class Meta: class HasMetaAilment(models.Model): move_meta_ailment = models.ForeignKey( - 'MoveMetaAilment', blank=True, null=True, related_name="%(class)s", - on_delete=models.CASCADE) + "MoveMetaAilment", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -237,8 +334,12 @@ class Meta: class HasMetaCategory(models.Model): move_meta_category = models.ForeignKey( - 'MoveMetaCategory', blank=True, null=True, related_name="%(class)s", - on_delete=models.CASCADE) + "MoveMetaCategory", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -246,8 +347,13 @@ class Meta: class HasMove(models.Model): - move = models.ForeignKey('Move', blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + move = models.ForeignKey( + "Move", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -256,8 +362,12 @@ class Meta: class HasMoveDamageClass(models.Model): move_damage_class = models.ForeignKey( - 'MoveDamageClass', blank=True, null=True, related_name="%(class)s", - on_delete=models.CASCADE) + "MoveDamageClass", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -265,7 +375,9 @@ class Meta: class HasMoveEffect(models.Model): - move_effect = models.ForeignKey('MoveEffect', blank=True, null=True, on_delete=models.CASCADE) + move_effect = models.ForeignKey( + "MoveEffect", blank=True, null=True, on_delete=models.CASCADE + ) class Meta: abstract = True @@ -274,7 +386,8 @@ class Meta: class HasMoveAttribute(models.Model): move_attribute = models.ForeignKey( - 'MoveAttribute', blank=True, null=True, on_delete=models.CASCADE) + "MoveAttribute", blank=True, null=True, on_delete=models.CASCADE + ) class Meta: abstract = True @@ -283,7 +396,12 @@ class Meta: class HasMoveTarget(models.Model): move_target = models.ForeignKey( - 'MoveTarget', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "MoveTarget", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -299,8 +417,13 @@ class Meta: class HasNature(models.Model): - nature = models.ForeignKey('Nature', blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + nature = models.ForeignKey( + "Nature", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -317,7 +440,12 @@ class Meta: class HasPokeathlonStat(models.Model): pokeathlon_stat = models.ForeignKey( - 'PokeathlonStat', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "PokeathlonStat", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -325,8 +453,13 @@ class Meta: class HasPokedex(models.Model): - pokedex = models.ForeignKey('Pokedex', blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + pokedex = models.ForeignKey( + "Pokedex", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -334,8 +467,13 @@ class Meta: class HasPokemon(models.Model): - pokemon = models.ForeignKey('Pokemon', blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + pokemon = models.ForeignKey( + "Pokemon", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -344,7 +482,12 @@ class Meta: class HasPokemonColor(models.Model): pokemon_color = models.ForeignKey( - 'PokemonColor', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "PokemonColor", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -353,7 +496,12 @@ class Meta: class HasPokemonForm(models.Model): pokemon_form = models.ForeignKey( - 'PokemonForm', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "PokemonForm", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -362,7 +510,12 @@ class Meta: class HasPokemonHabitat(models.Model): pokemon_habitat = models.ForeignKey( - 'PokemonHabitat', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "PokemonHabitat", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -372,8 +525,12 @@ class Meta: class HasMoveLearnMethod(models.Model): move_learn_method = models.ForeignKey( - 'MoveLearnMethod', blank=True, null=True, related_name="%(class)s", - on_delete=models.CASCADE) + "MoveLearnMethod", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -382,7 +539,12 @@ class Meta: class HasPokemonShape(models.Model): pokemon_shape = models.ForeignKey( - 'PokemonShape', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "PokemonShape", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -391,7 +553,12 @@ class Meta: class HasPokemonSpecies(models.Model): pokemon_species = models.ForeignKey( - 'PokemonSpecies', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "PokemonSpecies", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -399,8 +566,13 @@ class Meta: class HasRegion(models.Model): - region = models.ForeignKey('Region', blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + region = models.ForeignKey( + "Region", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -416,8 +588,13 @@ class Meta: class HasStat(models.Model): - stat = models.ForeignKey('Stat', blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + stat = models.ForeignKey( + "Stat", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -425,8 +602,13 @@ class Meta: class HasType(models.Model): - type = models.ForeignKey('Type', blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + type = models.ForeignKey( + "Type", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -434,8 +616,13 @@ class Meta: class HasVersion(models.Model): - version = models.ForeignKey('Version', blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + version = models.ForeignKey( + "Version", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True @@ -444,26 +631,28 @@ class Meta: class HasVersionGroup(models.Model): version_group = models.ForeignKey( - 'VersionGroup', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "VersionGroup", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Meta: abstract = True class IsDescription(HasLanguage, HasDescription): - class Meta: abstract = True class IsName(HasLanguage, HasName): - class Meta: abstract = True class IsFlavorText(HasLanguage, HasFlavorText): - class Meta: abstract = True @@ -472,6 +661,7 @@ class Meta: # VERSION MODELS # #################### + class Version(HasName, HasVersionGroup): pass @@ -497,6 +687,7 @@ class VersionGroupMoveLearnMethod(HasVersionGroup, HasMoveLearnMethod): # LANGUAGE MODELS # ##################### + class Language(HasName, HasOrder): iso639 = models.CharField(max_length=10) @@ -509,17 +700,28 @@ class Language(HasName, HasOrder): class LanguageName(IsName): local_language = models.ForeignKey( - 'Language', blank=True, null=True, related_name="locallanguage", on_delete=models.CASCADE) + "Language", + blank=True, + null=True, + related_name="locallanguage", + on_delete=models.CASCADE, + ) ####################### # GENERATION MODELS # ####################### + class Generation(HasName): - region = models.OneToOneField('Region', blank=True, null=True, related_name="%(class)s", - on_delete=models.CASCADE) + region = models.OneToOneField( + "Region", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class GenerationName(IsName, HasGeneration): @@ -530,6 +732,7 @@ class GenerationName(IsName, HasGeneration): # REGION MODELS # ################### + class Region(HasName): pass @@ -542,6 +745,7 @@ class RegionName(IsName, HasRegion): # ABILITY MODELS # #################### + class Ability(HasName, HasGeneration): is_main_series = models.BooleanField(default=False) @@ -566,13 +770,19 @@ class AbilityChange(HasAbility, HasVersionGroup): class AbilityChangeEffectText(HasLanguage, HasEffect): ability_change = models.ForeignKey( - AbilityChange, blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + AbilityChange, + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) ################# # TYPE MODELS # ################# + class Type(HasName, HasGeneration, HasMoveDamageClass): pass @@ -587,11 +797,21 @@ class TypeGameIndex(HasType, HasGeneration, HasGameIndex): class TypeEfficacy(models.Model): - damage_type = models.ForeignKey('Type', blank=True, null=True, - related_name="damage_type", on_delete=models.CASCADE) + damage_type = models.ForeignKey( + "Type", + blank=True, + null=True, + related_name="damage_type", + on_delete=models.CASCADE, + ) - target_type = models.ForeignKey('Type', blank=True, null=True, - related_name="target_type", on_delete=models.CASCADE) + target_type = models.ForeignKey( + "Type", + blank=True, + null=True, + related_name="target_type", + on_delete=models.CASCADE, + ) damage_factor = models.IntegerField() @@ -600,6 +820,7 @@ class TypeEfficacy(models.Model): # STAT MODELS # ################# + class Stat(HasName, HasMoveDamageClass): is_battle_only = models.BooleanField(default=False) @@ -615,6 +836,7 @@ class StatName(IsName, HasStat): # CHARACTERISTIC MODELS # ########################### + class Characteristic(HasStat): gene_mod_5 = models.IntegerField() @@ -628,6 +850,7 @@ class CharacteristicDescription(HasCharacteristic, IsDescription): # EGG GROUP MODELS # ###################### + class EggGroup(HasName): pass @@ -640,6 +863,7 @@ class EggGroupName(IsName, HasEggGroup): # ITEM MODELS # ################# + class ItemPocket(HasName): pass @@ -712,6 +936,7 @@ class ItemSprites(HasItem): # CONTEST MODELS # #################### + class ContestType(HasName): pass @@ -740,17 +965,28 @@ class ContestEffectFlavorText(HasLanguage, HasFlavorText, HasContestEffect): class ContestCombo(models.Model): - first_move = models.ForeignKey('Move', blank=True, null=True, - related_name='first_move', on_delete=models.CASCADE) + first_move = models.ForeignKey( + "Move", + blank=True, + null=True, + related_name="first_move", + on_delete=models.CASCADE, + ) - second_move = models.ForeignKey('Move', blank=True, null=True, - related_name='second_move', on_delete=models.CASCADE) + second_move = models.ForeignKey( + "Move", + blank=True, + null=True, + related_name="second_move", + on_delete=models.CASCADE, + ) ################## # BERRY MODELS # ################## + class BerryFirmness(HasName): pass @@ -758,18 +994,29 @@ class BerryFirmness(HasName): class BerryFirmnessName(IsName): berry_firmness = models.ForeignKey( - BerryFirmness, blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + BerryFirmness, + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class Berry(HasName, HasItem): berry_firmness = models.ForeignKey( - BerryFirmness, blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + BerryFirmness, + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) natural_gift_power = models.IntegerField() natural_gift_type = models.ForeignKey( - Type, blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + Type, blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE + ) size = models.IntegerField() @@ -782,7 +1029,6 @@ class Berry(HasName, HasItem): smoothness = models.IntegerField() - # Berry Flavors are a bit of a hack because their relationship # in terms of flavors to contest types is really awkward the # way it was handled in the veekun data set. Berry Flavor here @@ -793,22 +1039,38 @@ class Berry(HasName, HasItem): class BerryFlavor(HasName): contest_type = models.OneToOneField( - 'ContestType', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "ContestType", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class BerryFlavorName(IsName): - berry_flavor = models.ForeignKey(BerryFlavor, blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + berry_flavor = models.ForeignKey( + BerryFlavor, + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class BerryFlavorMap(models.Model): - berry = models.ForeignKey(Berry, blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + berry = models.ForeignKey( + Berry, blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE + ) - berry_flavor = models.ForeignKey(BerryFlavor, blank=True, null=True, - related_name="%(class)s", on_delete=models.CASCADE) + berry_flavor = models.ForeignKey( + BerryFlavor, + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) potency = models.IntegerField() @@ -817,6 +1079,7 @@ class BerryFlavorMap(models.Model): # GROWTH RATE MODELS # ######################## + class GrowthRate(HasName): formula = models.CharField(max_length=500) @@ -830,19 +1093,32 @@ class GrowthRateDescription(HasGrowthRate, IsDescription): # NATURE MODELS # ################### + class Nature(HasName): decreased_stat = models.ForeignKey( - Stat, blank=True, null=True, related_name='decreased', on_delete=models.CASCADE) + Stat, blank=True, null=True, related_name="decreased", on_delete=models.CASCADE + ) increased_stat = models.ForeignKey( - Stat, blank=True, null=True, related_name='increased', on_delete=models.CASCADE) + Stat, blank=True, null=True, related_name="increased", on_delete=models.CASCADE + ) hates_flavor = models.ForeignKey( - BerryFlavor, blank=True, null=True, related_name='hates_flavor', on_delete=models.CASCADE) + BerryFlavor, + blank=True, + null=True, + related_name="hates_flavor", + on_delete=models.CASCADE, + ) likes_flavor = models.ForeignKey( - BerryFlavor, blank=True, null=True, related_name='likes_flavor', on_delete=models.CASCADE) + BerryFlavor, + blank=True, + null=True, + related_name="likes_flavor", + on_delete=models.CASCADE, + ) game_index = models.IntegerField() @@ -859,8 +1135,12 @@ class NaturePokeathlonStat(HasNature, HasPokeathlonStat): class NatureBattleStylePreference(HasNature): move_battle_style = models.ForeignKey( - 'MoveBattleStyle', blank=True, null=True, related_name="%(class)s", - on_delete=models.CASCADE) + "MoveBattleStyle", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) low_hp_preference = models.IntegerField() @@ -871,6 +1151,7 @@ class NatureBattleStylePreference(HasNature): # LOCATION MODELS # ##################### + class Location(HasRegion, HasName): pass @@ -900,6 +1181,7 @@ class LocationAreaEncounterRate(HasEncounterMethod, HasLocationArea, HasVersion) # ENCOUNTER MODELS # ###################### + class EncounterMethod(HasName, HasOrder): pass @@ -917,8 +1199,9 @@ class EncounterSlot(HasVersionGroup, HasEncounterMethod): class Encounter(HasVersion, HasLocationArea, HasPokemon): - encounter_slot = models.ForeignKey(EncounterSlot, blank=True, - null=True, on_delete=models.CASCADE) + encounter_slot = models.ForeignKey( + EncounterSlot, blank=True, null=True, on_delete=models.CASCADE + ) min_level = models.IntegerField() @@ -941,25 +1224,41 @@ class EncounterConditionValue(HasEncounterCondition, HasName): class EncounterConditionValueName(IsName): encounter_condition_value = models.ForeignKey( - EncounterConditionValue, blank=True, null=True, related_name="%(class)s", - on_delete=models.CASCADE) + EncounterConditionValue, + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class EncounterConditionValueMap(models.Model): - encounter = models.ForeignKey(Encounter, blank=True, null=True, on_delete=models.CASCADE) + encounter = models.ForeignKey( + Encounter, blank=True, null=True, on_delete=models.CASCADE + ) encounter_condition_value = models.ForeignKey( - EncounterConditionValue, blank=True, null=True, on_delete=models.CASCADE) + EncounterConditionValue, blank=True, null=True, on_delete=models.CASCADE + ) ################# # MOVE MODELS # ################# + class Move( - HasName, HasGeneration, HasType, HasMoveDamageClass, HasMoveEffect, - HasMoveTarget, HasContestType, HasContestEffect, HasSuperContestEffect): + HasName, + HasGeneration, + HasType, + HasMoveDamageClass, + HasMoveEffect, + HasMoveTarget, + HasContestType, + HasContestEffect, + HasSuperContestEffect, +): power = models.IntegerField(blank=True, null=True) @@ -995,6 +1294,7 @@ class MoveChange(HasMove, HasVersionGroup, HasType, HasMoveEffect): # MOVE DAMAGE CLASS MODELS # ############################## + class MoveDamageClass(HasName): pass @@ -1011,6 +1311,7 @@ class MoveDamageClassDescription(HasMoveDamageClass, IsDescription): # MOVE BATTLE STYLE MODELS # ############################## + class MoveBattleStyle(HasName): pass @@ -1018,13 +1319,19 @@ class MoveBattleStyle(HasName): class MoveBattleStyleName(IsName): move_battle_style = models.ForeignKey( - MoveBattleStyle, blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + MoveBattleStyle, + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) ######################## # MOVE EFFECT MODELS # ######################## + class MoveEffect(models.Model): pass @@ -1040,14 +1347,19 @@ class MoveEffectChange(HasMoveEffect, HasVersionGroup): class MoveEffectChangeEffectText(HasLanguage, HasEffect): move_effect_change = models.ForeignKey( - 'MoveEffectChange', blank=True, null=True, related_name="%(class)s", - on_delete=models.CASCADE) + "MoveEffectChange", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) ################################ # MOVE FLAG/ATTRIBUTE MODELS # ################################ + class MoveAttribute(HasName): pass @@ -1068,6 +1380,7 @@ class MoveAttributeMap(HasMove, HasMoveAttribute): # MOVE TARGET MODELS # ######################## + class MoveTarget(HasName): pass @@ -1084,10 +1397,16 @@ class MoveTargetDescription(HasMoveTarget, IsDescription): # MOVE META MODELS # ###################### + class MoveMeta(HasMetaAilment, HasMetaCategory): - move = models.OneToOneField(Move, blank=False, null=False, related_name="%(class)s", - on_delete=models.CASCADE) + move = models.OneToOneField( + Move, + blank=False, + null=False, + related_name="%(class)s", + on_delete=models.CASCADE, + ) min_hits = models.IntegerField(blank=True, null=True) @@ -1135,6 +1454,7 @@ class MoveMetaStatChange(HasMove, HasStat): # EXPERIENCE MODELS # ####################### + class Experience(HasGrowthRate): level = models.IntegerField() @@ -1146,6 +1466,7 @@ class Experience(HasGrowthRate): # GENDER MODELS # ################### + class Gender(HasName): pass @@ -1154,11 +1475,14 @@ class Gender(HasName): # MACHINE MODELS # #################### + class Machine(HasGrowthRate, HasItem): machine_number = models.IntegerField() - version_group = models.ForeignKey(VersionGroup, blank=True, null=True, on_delete=models.CASCADE) + version_group = models.ForeignKey( + VersionGroup, blank=True, null=True, on_delete=models.CASCADE + ) move = models.ForeignKey(Move, blank=True, null=True, on_delete=models.CASCADE) @@ -1167,6 +1491,7 @@ class Machine(HasGrowthRate, HasItem): # POKEATHLON MODELS # ####################### + class PokeathlonStat(HasName): pass @@ -1179,6 +1504,7 @@ class PokeathlonStatName(IsName, HasPokeathlonStat): # PAL PARK MODELS # ##################### + class PalParkArea(HasName): pass @@ -1186,13 +1512,23 @@ class PalParkArea(HasName): class PalParkAreaName(IsName): pal_park_area = models.ForeignKey( - PalParkArea, blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + PalParkArea, + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class PalPark(HasPokemonSpecies): pal_park_area = models.ForeignKey( - PalParkArea, blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + PalParkArea, + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) base_score = models.IntegerField(blank=True, null=True) @@ -1203,6 +1539,7 @@ class PalPark(HasPokemonSpecies): # SUPER CONTEST MODELS # ########################## + class SuperContestEffect(models.Model): appeal = models.IntegerField() @@ -1214,20 +1551,25 @@ class SuperContestEffectFlavorText(IsFlavorText, HasSuperContestEffect): class SuperContestCombo(models.Model): - first_move = models.ForeignKey(Move, blank=True, null=True, - related_name='first', on_delete=models.CASCADE) + first_move = models.ForeignKey( + Move, blank=True, null=True, related_name="first", on_delete=models.CASCADE + ) - second_move = models.ForeignKey(Move, blank=True, null=True, - related_name='second', on_delete=models.CASCADE) + second_move = models.ForeignKey( + Move, blank=True, null=True, related_name="second", on_delete=models.CASCADE + ) ###################### # EVOLUTION MODELS # ###################### + class EvolutionChain(models.Model): - baby_trigger_item = models.ForeignKey(Item, blank=True, null=True, on_delete=models.CASCADE) + baby_trigger_item = models.ForeignKey( + Item, blank=True, null=True, on_delete=models.CASCADE + ) class EvolutionTrigger(HasName): @@ -1242,6 +1584,7 @@ class EvolutionTriggerName(HasEvolutionTrigger, IsName): # POKEDEX MODELS # #################### + class Pokedex(HasName, HasRegion): is_main_series = models.BooleanField(default=False) @@ -1263,17 +1606,26 @@ class PokedexVersionGroup(HasPokedex, HasVersionGroup): # POKEMON MODELS # #################### -class PokemonSpecies(HasName, HasGeneration, HasPokemonColor, - HasPokemonShape, HasGrowthRate, HasOrder): + +class PokemonSpecies( + HasName, HasGeneration, HasPokemonColor, HasPokemonShape, HasGrowthRate, HasOrder +): evolves_from_species = models.ForeignKey( - 'self', blank=True, null=True, on_delete=models.CASCADE) + "self", blank=True, null=True, on_delete=models.CASCADE + ) evolution_chain = models.ForeignKey( - EvolutionChain, blank=True, null=True, on_delete=models.CASCADE) + EvolutionChain, blank=True, null=True, on_delete=models.CASCADE + ) pokemon_habitat = models.ForeignKey( - 'PokemonHabitat', blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + "PokemonHabitat", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) gender_rate = models.IntegerField() @@ -1341,27 +1693,44 @@ class PokemonEggGroup(HasPokemonSpecies, HasEggGroup): class PokemonEvolution(HasEvolutionTrigger, HasGender): evolution_item = models.ForeignKey( - Item, blank=True, null=True, related_name='evolution_item', - on_delete=models.CASCADE) + Item, + blank=True, + null=True, + related_name="evolution_item", + on_delete=models.CASCADE, + ) evolved_species = models.ForeignKey( - PokemonSpecies, related_name="evolved_species", blank=True, null=True, - on_delete=models.CASCADE) + PokemonSpecies, + related_name="evolved_species", + blank=True, + null=True, + on_delete=models.CASCADE, + ) min_level = models.IntegerField(blank=True, null=True) - location = models.ForeignKey(Location, related_name="location", - blank=True, null=True, on_delete=models.CASCADE) + location = models.ForeignKey( + Location, + related_name="location", + blank=True, + null=True, + on_delete=models.CASCADE, + ) - held_item = models.ForeignKey(Item, blank=True, null=True, - related_name='held_item', on_delete=models.CASCADE) + held_item = models.ForeignKey( + Item, blank=True, null=True, related_name="held_item", on_delete=models.CASCADE + ) time_of_day = models.CharField(max_length=10, blank=True, null=True) - known_move = models.ForeignKey(Move, blank=True, null=True, on_delete=models.CASCADE) + known_move = models.ForeignKey( + Move, blank=True, null=True, on_delete=models.CASCADE + ) known_move_type = models.ForeignKey( - Type, related_name="known_move", blank=True, null=True, on_delete=models.CASCADE) + Type, related_name="known_move", blank=True, null=True, on_delete=models.CASCADE + ) min_happiness = models.IntegerField(blank=True, null=True) @@ -1372,15 +1741,24 @@ class PokemonEvolution(HasEvolutionTrigger, HasGender): relative_physical_stats = models.IntegerField(blank=True, null=True) party_species = models.ForeignKey( - PokemonSpecies, related_name="party_species", blank=True, null=True, - on_delete=models.CASCADE) + PokemonSpecies, + related_name="party_species", + blank=True, + null=True, + on_delete=models.CASCADE, + ) - party_type = models.ForeignKey(Type, related_name="party_type", - blank=True, null=True, on_delete=models.CASCADE) + party_type = models.ForeignKey( + Type, related_name="party_type", blank=True, null=True, on_delete=models.CASCADE + ) trade_species = models.ForeignKey( - PokemonSpecies, related_name="trade_species", blank=True, null=True, - on_delete=models.CASCADE) + PokemonSpecies, + related_name="trade_species", + blank=True, + null=True, + on_delete=models.CASCADE, + ) needs_overworld_rain = models.BooleanField(default=False) @@ -1391,7 +1769,9 @@ class PokemonForm(HasName, HasPokemon, HasOrder): form_name = models.CharField(max_length=30) - version_group = models.ForeignKey(VersionGroup, blank=True, null=True, on_delete=models.CASCADE) + version_group = models.ForeignKey( + VersionGroup, blank=True, null=True, on_delete=models.CASCADE + ) is_default = models.BooleanField(default=False) @@ -1427,7 +1807,12 @@ class PokemonHabitat(HasName): class PokemonHabitatName(IsName): pokemon_habitat = models.ForeignKey( - PokemonHabitat, blank=True, null=True, related_name="%(class)s", on_delete=models.CASCADE) + PokemonHabitat, + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) class PokemonItem(HasPokemon, HasVersion, HasItem): @@ -1463,8 +1848,11 @@ class PokemonShapeName(IsName): awesome_name = models.CharField(max_length=30) pokemon_shape = models.ForeignKey( - PokemonShape, blank=True, null=True, - related_name="pokemonshapename", on_delete=models.CASCADE + PokemonShape, + blank=True, + null=True, + related_name="pokemonshapename", + on_delete=models.CASCADE, ) diff --git a/pokemon_v2/serializers.py b/pokemon_v2/serializers.py index 6df38749c..422d2f077 100644 --- a/pokemon_v2/serializers.py +++ b/pokemon_v2/serializers.py @@ -19,364 +19,321 @@ # Putting summary serializers up top so there are no conflicts # with reference accross models due to script running order -class AbilitySummarySerializer(serializers.HyperlinkedModelSerializer): +class AbilitySummarySerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Ability - fields = ('name', 'url') + fields = ("name", "url") class BerryFirmnessSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = BerryFirmness - fields = ('name', 'url') + fields = ("name", "url") class BerryFlavorSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = BerryFlavor - fields = ('name', 'url') + fields = ("name", "url") class BerrySummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Berry - fields = ('name', 'url') + fields = ("name", "url") class CharacteristicSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Characteristic - fields = ('url',) + fields = ("url",) class ContestEffectSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = ContestEffect - fields = ('url',) + fields = ("url",) class ContestTypeSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = ContestType - fields = ('name', 'url') + fields = ("name", "url") class EggGroupSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = EggGroup - fields = ('name', 'url') + fields = ("name", "url") class EncounterConditionSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = EncounterCondition - fields = ('name', 'url') + fields = ("name", "url") class EncounterConditionValueSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = EncounterConditionValue - fields = ('name', 'url') + fields = ("name", "url") class EncounterMethodSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = EncounterMethod - fields = ('name', 'url') + fields = ("name", "url") class EvolutionTriggerSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = EvolutionTrigger - fields = ('name', 'url') + fields = ("name", "url") class EvolutionChainSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = EvolutionChain - fields = ('url',) + fields = ("url",) class GenerationSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Generation - fields = ('name', 'url') + fields = ("name", "url") class GenderSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Gender - fields = ('name', 'url') + fields = ("name", "url") class GrowthRateSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = GrowthRate - fields = ('name', 'url') + fields = ("name", "url") class ItemPocketSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = ItemPocket - fields = ('name', 'url') + fields = ("name", "url") class ItemCategorySummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = ItemCategory - fields = ('name', 'url') + fields = ("name", "url") class ItemAttributeSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = ItemAttribute - fields = ('name', 'url') + fields = ("name", "url") class ItemFlingEffectSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = ItemFlingEffect - fields = ('name', 'url') + fields = ("name", "url") class ItemSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Item - fields = ('name', 'url') + fields = ("name", "url") class LanguageSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Language - fields = ('name', 'url') + fields = ("name", "url") class LocationSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Location - fields = ('name', 'url') + fields = ("name", "url") class LocationAreaSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = LocationArea - fields = ('name', 'url') + fields = ("name", "url") class MachineSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Machine - fields = ('url',) + fields = ("url",) class MoveBattleStyleSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = MoveBattleStyle - fields = ('name', 'url') + fields = ("name", "url") class MoveDamageClassSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = MoveDamageClass - fields = ('name', 'url') + fields = ("name", "url") class MoveMetaAilmentSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = MoveMetaAilment - fields = ('name', 'url') + fields = ("name", "url") class MoveMetaCategorySummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = MoveMetaCategory - fields = ('name', 'url') + fields = ("name", "url") class MoveTargetSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = MoveTarget - fields = ('name', 'url') + fields = ("name", "url") class MoveSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Move - fields = ('name', 'url') + fields = ("name", "url") class MoveLearnMethodSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = MoveLearnMethod - fields = ('name', 'url') + fields = ("name", "url") class NatureSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Nature - fields = ('name', 'url') + fields = ("name", "url") class PalParkAreaSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = PalParkArea - fields = ('name', 'url') + fields = ("name", "url") class PokeathlonStatSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = PokeathlonStat - fields = ('name', 'url') + fields = ("name", "url") class PokedexSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Pokedex - fields = ('name', 'url') + fields = ("name", "url") class PokemonColorSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = PokemonColor - fields = ('name', 'url') + fields = ("name", "url") class PokemonHabitatSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = PokemonHabitat - fields = ('name', 'url') + fields = ("name", "url") class PokemonShapeSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = PokemonShape - fields = ('name', 'url') + fields = ("name", "url") class PokemonSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Pokemon - fields = ('name', 'url') + fields = ("name", "url") class PokemonSpeciesSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = PokemonSpecies - fields = ('name', 'url') + fields = ("name", "url") class PokemonFormSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = PokemonForm - fields = ('name', 'url') + fields = ("name", "url") class RegionSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Region - fields = ('name', 'url') + fields = ("name", "url") class StatSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Stat - fields = ('name', 'url') + fields = ("name", "url") class SuperContestEffectSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = SuperContestEffect - fields = ('url',) + fields = ("url",) class TypeSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Type - fields = ('name', 'url') + fields = ("name", "url") class VersionSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = Version - fields = ('name', 'url') + fields = ("name", "url") class VersionGroupSummarySerializer(serializers.HyperlinkedModelSerializer): - class Meta: model = VersionGroup - fields = ('name', 'url') + fields = ("name", "url") ##################### # MAP SERIALIZERS # ##################### + class BerryFlavorMapSerializer(serializers.ModelSerializer): berry = BerrySummarySerializer() - flavor = BerryFlavorSummarySerializer(source='berry_flavor') + flavor = BerryFlavorSummarySerializer(source="berry_flavor") class Meta: model = BerryFlavorMap - fields = ('potency', 'berry', 'flavor') + fields = ("potency", "berry", "flavor") class ItemAttributeMapSerializer(serializers.ModelSerializer): item = ItemSummarySerializer() - attribute = ItemAttributeSummarySerializer(source='item_attribute') + attribute = ItemAttributeSummarySerializer(source="item_attribute") class Meta: model = ItemAttributeMap - fields = ('item', 'attribute',) + fields = ( + "item", + "attribute", + ) class MoveMetaStatChangeSerializer(serializers.ModelSerializer): @@ -386,7 +343,7 @@ class MoveMetaStatChangeSerializer(serializers.ModelSerializer): class Meta: model = MoveMetaStatChange - fields = ('change', 'move', 'stat') + fields = ("change", "move", "stat") class NaturePokeathlonStatSerializer(serializers.ModelSerializer): @@ -396,7 +353,7 @@ class NaturePokeathlonStatSerializer(serializers.ModelSerializer): class Meta: model = NaturePokeathlonStat - fields = ('max_change', 'nature', 'pokeathlon_stat') + fields = ("max_change", "nature", "pokeathlon_stat") class PokemonAbilitySerializer(serializers.ModelSerializer): @@ -406,7 +363,7 @@ class PokemonAbilitySerializer(serializers.ModelSerializer): class Meta: model = PokemonAbility - fields = ('is_hidden', 'slot', 'ability', 'pokemon') + fields = ("is_hidden", "slot", "ability", "pokemon") class PokemonDexEntrySerializer(serializers.ModelSerializer): @@ -416,7 +373,7 @@ class PokemonDexEntrySerializer(serializers.ModelSerializer): class Meta: model = PokemonDexNumber - fields = ('entry_number', 'pokedex') + fields = ("entry_number", "pokedex") class PokemonTypeSerializer(serializers.ModelSerializer): @@ -426,7 +383,7 @@ class PokemonTypeSerializer(serializers.ModelSerializer): class Meta: model = PokemonType - fields = ('slot', 'pokemon', 'type') + fields = ("slot", "pokemon", "type") class PokedexVersionGroupSerializer(serializers.ModelSerializer): @@ -436,7 +393,7 @@ class PokedexVersionGroupSerializer(serializers.ModelSerializer): class Meta: model = PokedexVersionGroup - fields = ('pokedex', 'version_group') + fields = ("pokedex", "version_group") class VersionGroupMoveLearnMethodSerializer(serializers.ModelSerializer): @@ -446,7 +403,7 @@ class VersionGroupMoveLearnMethodSerializer(serializers.ModelSerializer): class Meta: model = ItemAttributeMap - fields = ('version_group', 'move_learn_method') + fields = ("version_group", "move_learn_method") class VersionGroupRegionSerializer(serializers.ModelSerializer): @@ -456,42 +413,55 @@ class VersionGroupRegionSerializer(serializers.ModelSerializer): class Meta: model = ItemAttributeMap - fields = ('version_group', 'region',) + fields = ( + "version_group", + "region", + ) class EncounterConditionValueMapSerializer(serializers.ModelSerializer): - condition_value = EncounterConditionValueSummarySerializer(source='encounter_condition_value') + condition_value = EncounterConditionValueSummarySerializer( + source="encounter_condition_value" + ) class Meta: model = EncounterConditionValueMap - fields = ('condition_value',) + fields = ("condition_value",) ################################ # CHARACTERISTIC SERIALIZERS # ################################ + class CharacteristicDescriptionSerializer(serializers.ModelSerializer): language = LanguageSummarySerializer() class Meta: model = CharacteristicDescription - fields = ('description', 'language') + fields = ("description", "language") class CharacteristicDetailSerializer(serializers.ModelSerializer): descriptions = CharacteristicDescriptionSerializer( - many=True, read_only=True, source='characteristicdescription') + many=True, read_only=True, source="characteristicdescription" + ) highest_stat = StatSummarySerializer(source="stat") - gene_modulo = serializers.IntegerField(source='gene_mod_5') - possible_values = serializers.SerializerMethodField('get_values') + gene_modulo = serializers.IntegerField(source="gene_mod_5") + possible_values = serializers.SerializerMethodField("get_values") class Meta: model = Characteristic - fields = ('id', 'gene_modulo', 'possible_values', 'highest_stat', 'descriptions') + fields = ( + "id", + "gene_modulo", + "possible_values", + "highest_stat", + "descriptions", + ) def get_values(self, obj): @@ -508,24 +478,26 @@ def get_values(self, obj): # CONTEST SERIALIZERS # ######################### + class SuperContestEffectFlavorTextSerializer(serializers.ModelSerializer): language = LanguageSummarySerializer() class Meta: model = SuperContestEffectFlavorText - fields = ('flavor_text', 'language') + fields = ("flavor_text", "language") class SuperContestEffectDetailSerializer(serializers.ModelSerializer): flavor_text_entries = SuperContestEffectFlavorTextSerializer( - many=True, read_only=True, source='supercontesteffectflavortext') - moves = MoveSummarySerializer(many=True, read_only=True, source='move') + 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', 'moves') + fields = ("id", "appeal", "flavor_text_entries", "moves") class ContestEffectEffectTextSerializer(serializers.ModelSerializer): @@ -534,7 +506,7 @@ class ContestEffectEffectTextSerializer(serializers.ModelSerializer): class Meta: model = ContestEffectEffectText - fields = ('effect', 'language') + fields = ("effect", "language") class ContestEffectFlavorTextSerializer(serializers.ModelSerializer): @@ -543,19 +515,21 @@ class ContestEffectFlavorTextSerializer(serializers.ModelSerializer): class Meta: model = ContestEffectFlavorText - fields = ('flavor_text', 'language') + fields = ("flavor_text", "language") class ContestEffectDetailSerializer(serializers.ModelSerializer): effect_entries = ContestEffectEffectTextSerializer( - many=True, read_only=True, source='contesteffecteffecttext') + many=True, read_only=True, source="contesteffecteffecttext" + ) flavor_text_entries = ContestEffectFlavorTextSerializer( - many=True, read_only=True, source='contesteffectflavortext') + many=True, read_only=True, source="contesteffectflavortext" + ) class Meta: model = ContestEffect - fields = ('id', 'appeal', 'jam', 'effect_entries', 'flavor_text_entries') + fields = ("id", "appeal", "jam", "effect_entries", "flavor_text_entries") class ContestTypeNameSerializer(serializers.ModelSerializer): @@ -564,17 +538,19 @@ class ContestTypeNameSerializer(serializers.ModelSerializer): class Meta: model = ContestTypeName - fields = ('name', 'color', 'language') + fields = ("name", "color", "language") class ContestTypeDetailSerializer(serializers.ModelSerializer): - names = ContestTypeNameSerializer(many=True, read_only=True, source='contesttypename') - berry_flavor = BerryFlavorSummarySerializer(read_only=True, source='berryflavor') + names = ContestTypeNameSerializer( + many=True, read_only=True, source="contesttypename" + ) + berry_flavor = BerryFlavorSummarySerializer(read_only=True, source="berryflavor") class Meta: model = ContestType - fields = ('id', 'name', 'berry_flavor', 'names') + fields = ("id", "name", "berry_flavor", "names") class SuperContestComboSerializer(serializers.ModelSerializer): @@ -584,7 +560,7 @@ class SuperContestComboSerializer(serializers.ModelSerializer): class Meta: model = SuperContestCombo - fields = ('first_move', 'second_move') + fields = ("first_move", "second_move") class ContestComboSerializer(serializers.ModelSerializer): @@ -594,44 +570,53 @@ class ContestComboSerializer(serializers.ModelSerializer): class Meta: model = ContestCombo - fields = ('first_move', 'second_move') + fields = ("first_move", "second_move") ######################## # REGION SERIALIZERS # ######################## + class RegionNameSerializer(serializers.ModelSerializer): language = LanguageSummarySerializer() class Meta: model = RegionName - fields = ('name', 'language') + fields = ("name", "language") class RegionDetailSerializer(serializers.ModelSerializer): names = RegionNameSerializer(many=True, read_only=True, source="regionname") locations = LocationSummarySerializer(many=True, read_only=True, source="location") - version_groups = serializers.SerializerMethodField('get_region_version_groups') + version_groups = serializers.SerializerMethodField("get_region_version_groups") pokedexes = PokedexSummarySerializer(many=True, read_only=True, source="pokedex") main_generation = GenerationSummarySerializer(read_only=True, source="generation") class Meta: model = Region fields = ( - 'id', 'name', 'locations', 'main_generation', 'names', 'pokedexes', 'version_groups' + "id", + "name", + "locations", + "main_generation", + "names", + "pokedexes", + "version_groups", ) def get_region_version_groups(self, obj): vg_regions = VersionGroupRegion.objects.filter(region=obj) - data = VersionGroupRegionSerializer(vg_regions, many=True, context=self.context).data + data = VersionGroupRegionSerializer( + vg_regions, many=True, context=self.context + ).data groups = [] for group in data: - groups.append(group['version_group']) + groups.append(group["version_group"]) return groups @@ -640,31 +625,42 @@ def get_region_version_groups(self, obj): # GENERATION SERIALIZERS # ############################ + class GenerationNameSerializer(serializers.ModelSerializer): language = LanguageSummarySerializer() class Meta: model = GenerationName - fields = ('name', 'language') + fields = ("name", "language") class GenerationDetailSerializer(serializers.ModelSerializer): - main_region = RegionSummarySerializer(source='region') + main_region = RegionSummarySerializer(source="region") names = GenerationNameSerializer(many=True, read_only=True, source="generationname") abilities = AbilitySummarySerializer(many=True, read_only=True, source="ability") moves = MoveSummarySerializer(many=True, read_only=True, source="move") pokemon_species = PokemonSpeciesSummarySerializer( - many=True, read_only=True, source="pokemonspecies") + many=True, read_only=True, source="pokemonspecies" + ) types = TypeSummarySerializer(many=True, read_only=True, source="type") - version_groups = VersionGroupSummarySerializer(many=True, read_only=True, source="versiongroup") + version_groups = VersionGroupSummarySerializer( + many=True, read_only=True, source="versiongroup" + ) class Meta: model = Generation fields = ( - 'id', 'name', 'abilities', 'main_region', 'moves', 'names', - 'pokemon_species', 'types', 'version_groups' + "id", + "name", + "abilities", + "main_region", + "moves", + "names", + "pokemon_species", + "types", + "version_groups", ) @@ -672,33 +668,35 @@ class Meta: # GENDER SERIALIZERS # ######################## + class GenderDetailSerializer(serializers.ModelSerializer): - pokemon_species_details = serializers.SerializerMethodField('get_species') - required_for_evolution = serializers.SerializerMethodField('get_required') + pokemon_species_details = serializers.SerializerMethodField("get_species") + required_for_evolution = serializers.SerializerMethodField("get_required") class Meta: model = Gender - fields = ('id', 'name', 'pokemon_species_details', 'required_for_evolution') + fields = ("id", "name", "pokemon_species_details", "required_for_evolution") def get_species(self, obj): species_objects = [] - if obj.name == 'female': + if obj.name == "female": species_objects = PokemonSpecies.objects.filter(gender_rate__gt=0) - elif obj.name == 'male': + elif obj.name == "male": species_objects = PokemonSpecies.objects.filter(gender_rate__range=[0, 7]) - elif obj.name == 'genderless': + elif obj.name == "genderless": species_objects = PokemonSpecies.objects.filter(gender_rate=-1) details = [] for species in species_objects: detail = OrderedDict() - detail['rate'] = species.gender_rate - detail['pokemon_species'] = PokemonSpeciesSummarySerializer( - species, context=self.context).data + detail["rate"] = species.gender_rate + detail["pokemon_species"] = PokemonSpeciesSummarySerializer( + species, context=self.context + ).data details.append(detail) return details @@ -710,7 +708,8 @@ def get_required(self, obj): for evo in evo_objects: species = PokemonSpeciesSummarySerializer( - evo.evolved_species, context=self.context).data + evo.evolved_species, context=self.context + ).data species_list.append(species) return species_list @@ -720,11 +719,11 @@ def get_required(self, obj): # GROWTH RATE SERIALIZERS # ############################# -class ExperienceSerializer(serializers.ModelSerializer): +class ExperienceSerializer(serializers.ModelSerializer): class Meta: model = Experience - fields = ('level', 'experience') + fields = ("level", "experience") class GrowthRateDescriptionSerializer(serializers.ModelSerializer): @@ -733,67 +732,75 @@ class GrowthRateDescriptionSerializer(serializers.ModelSerializer): class Meta: model = GrowthRateDescription - fields = ('description', 'language') + fields = ("description", "language") class GrowthRateDetailSerializer(serializers.ModelSerializer): descriptions = GrowthRateDescriptionSerializer( - many=True, read_only=True, source="growthratedescription") + many=True, read_only=True, source="growthratedescription" + ) levels = ExperienceSerializer(many=True, read_only=True, source="experience") pokemon_species = PokemonSpeciesSummarySerializer( - many=True, read_only=True, source="pokemonspecies") + many=True, read_only=True, source="pokemonspecies" + ) class Meta: model = GrowthRate - fields = ('id', 'name', 'formula', 'descriptions', 'levels', 'pokemon_species') + fields = ("id", "name", "formula", "descriptions", "levels", "pokemon_species") ########################## # LANGUAGE SERIALIZERS # ########################## + class LanguageNameSerializer(serializers.ModelSerializer): language = LanguageSummarySerializer(source="local_language") class Meta: model = LanguageName - fields = ('name', 'language') + fields = ("name", "language") class LanguageDetailSerializer(serializers.ModelSerializer): - names = LanguageNameSerializer(many=True, read_only=True, source='languagename_language') + names = LanguageNameSerializer( + many=True, read_only=True, source="languagename_language" + ) class Meta: model = Language - fields = ('id', 'name', 'official', 'iso639', 'iso3166', 'names') + fields = ("id", "name", "official", "iso639", "iso3166", "names") ######################################## # LOCATION AND ENCOUNTER SERIALIZERS # ######################################## + class EncounterConditionNameSerializer(serializers.ModelSerializer): language = LanguageSummarySerializer() class Meta: model = EncounterConditionName - fields = ('name', 'language') + fields = ("name", "language") class EncounterConditionDetailSerializer(serializers.ModelSerializer): names = EncounterConditionNameSerializer( - many=True, read_only=True, source='encounterconditionname') + many=True, read_only=True, source="encounterconditionname" + ) values = EncounterConditionValueSummarySerializer( - many=True, read_only=True, source='encounterconditionvalue') + many=True, read_only=True, source="encounterconditionvalue" + ) class Meta: model = EncounterCondition - fields = ('id', 'name', 'values', 'names') + fields = ("id", "name", "values", "names") class EncounterConditionValueNameSerializer(serializers.ModelSerializer): @@ -802,18 +809,19 @@ class EncounterConditionValueNameSerializer(serializers.ModelSerializer): class Meta: model = EncounterConditionValueName - fields = ('name', 'language') + fields = ("name", "language") class EncounterConditionValueDetailSerializer(serializers.ModelSerializer): - condition = EncounterConditionSummarySerializer(source='encounter_condition') + condition = EncounterConditionSummarySerializer(source="encounter_condition") names = EncounterConditionValueNameSerializer( - many=True, read_only=True, source='encounterconditionvaluename') + many=True, read_only=True, source="encounterconditionvaluename" + ) class Meta: model = EncounterConditionValue - fields = ('id', 'name', 'condition', 'names') + fields = ("id", "name", "condition", "names") class EncounterMethodNameSerializer(serializers.ModelSerializer): @@ -822,26 +830,28 @@ class EncounterMethodNameSerializer(serializers.ModelSerializer): class Meta: model = EncounterMethodName - fields = ('name', 'language') + fields = ("name", "language") class EncounterMethodDetailSerializer(serializers.ModelSerializer): - names = EncounterMethodNameSerializer(many=True, read_only=True, source='encountermethodname') + names = EncounterMethodNameSerializer( + many=True, read_only=True, source="encountermethodname" + ) class Meta: model = EncounterMethod - fields = ('id', 'name', 'order', 'names') + fields = ("id", "name", "order", "names") class EncounterSlotSerializer(serializers.ModelSerializer): encounter_method = EncounterMethodSummarySerializer() - chance = serializers.IntegerField(source='rarity') + chance = serializers.IntegerField(source="rarity") class Meta: model = EncounterSlot - fields = ('id', 'slot', 'chance', 'encounter_method', 'version_group') + fields = ("id", "slot", "chance", "encounter_method", "version_group") class EncounterDetailSerializer(serializers.ModelSerializer): @@ -849,24 +859,30 @@ class EncounterDetailSerializer(serializers.ModelSerializer): version = VersionSummarySerializer() location_area = LocationAreaSummarySerializer() pokemon = PokemonSummarySerializer() - condition_values = serializers.SerializerMethodField('get_encounter_conditions') + condition_values = serializers.SerializerMethodField("get_encounter_conditions") class Meta: model = Encounter fields = ( - 'min_level', 'max_level', 'version', 'encounter_slot', - 'pokemon', 'location_area', 'condition_values' + "min_level", + "max_level", + "version", + "encounter_slot", + "pokemon", + "location_area", + "condition_values", ) def get_encounter_conditions(self, obj): condition_values = EncounterConditionValueMap.objects.filter(encounter=obj) data = EncounterConditionValueMapSerializer( - condition_values, many=True, context=self.context).data + condition_values, many=True, context=self.context + ).data values = [] for map in data: - values.append(map['condition_value']) + values.append(map["condition_value"]) return values @@ -878,7 +894,7 @@ class LocationAreaEncounterRateSerializer(serializers.ModelSerializer): class Meta: model = LocationAreaEncounterRate - fields = ('rate', 'encounter_method', 'version') + fields = ("rate", "encounter_method", "version") class LocationAreaNameSerializer(serializers.ModelSerializer): @@ -887,29 +903,37 @@ class LocationAreaNameSerializer(serializers.ModelSerializer): class Meta: model = LocationAreaName - fields = ('name', 'language') + fields = ("name", "language") class LocationAreaDetailSerializer(serializers.ModelSerializer): location = LocationSummarySerializer() - encounter_method_rates = serializers.SerializerMethodField('get_method_rates') - pokemon_encounters = serializers.SerializerMethodField('get_encounters') - names = LocationAreaNameSerializer(many=True, read_only=True, source='locationareaname') + encounter_method_rates = serializers.SerializerMethodField("get_method_rates") + pokemon_encounters = serializers.SerializerMethodField("get_encounters") + names = LocationAreaNameSerializer( + many=True, read_only=True, source="locationareaname" + ) class Meta: model = LocationArea fields = ( - 'id', 'name', 'game_index', 'encounter_method_rates', - 'location', 'names', 'pokemon_encounters' + "id", + "name", + "game_index", + "encounter_method_rates", + "location", + "names", + "pokemon_encounters", ) def get_method_rates(self, obj): # Get encounters related to this area and pull out unique encounter methods encounter_rates = LocationAreaEncounterRate.objects.filter( - location_area=obj).order_by('encounter_method_id') - method_ids = encounter_rates.values('encounter_method_id').distinct() + location_area=obj + ).order_by("encounter_method_id") + method_ids = encounter_rates.values("encounter_method_id").distinct() encounter_rate_list = [] for id in method_ids: @@ -917,26 +941,31 @@ def get_method_rates(self, obj): encounter_rate_details = OrderedDict() # Get each Unique Item by ID - encounter_method_object = EncounterMethod.objects.get(pk=id['encounter_method_id']) + encounter_method_object = EncounterMethod.objects.get( + pk=id["encounter_method_id"] + ) encounter_method_data = EncounterMethodSummarySerializer( - encounter_method_object, context=self.context).data - encounter_rate_details['encounter_method'] = encounter_method_data + encounter_method_object, context=self.context + ).data + encounter_rate_details["encounter_method"] = encounter_method_data # Get Versions associated with each unique item area_encounter_objects = encounter_rates.filter( - encounter_method_id=id['encounter_method_id']) + encounter_method_id=id["encounter_method_id"] + ) serializer = LocationAreaEncounterRateSerializer( - area_encounter_objects, many=True, context=self.context) - encounter_rate_details['version_details'] = [] + area_encounter_objects, many=True, context=self.context + ) + encounter_rate_details["version_details"] = [] for area_encounter in serializer.data: version_detail = OrderedDict() - version_detail['rate'] = area_encounter['rate'] - version_detail['version'] = area_encounter['version'] + version_detail["rate"] = area_encounter["rate"] + version_detail["version"] = area_encounter["version"] - encounter_rate_details['version_details'].append(version_detail) + encounter_rate_details["version_details"].append(version_detail) encounter_rate_list.append(encounter_rate_details) @@ -947,51 +976,57 @@ def get_encounters(self, obj): # get versions for later use version_objects = Version.objects.all() version_data = VersionSummarySerializer( - version_objects, many=True, context=self.context).data + version_objects, many=True, context=self.context + ).data # all encounters associated with location area - all_encounters = Encounter.objects.filter(location_area=obj).order_by('pokemon') + all_encounters = Encounter.objects.filter(location_area=obj).order_by("pokemon") encounters_list = [] # break encounters into pokemon groupings - for poke in all_encounters.values('pokemon').distinct(): + for poke in all_encounters.values("pokemon").distinct(): - pokemon_object = Pokemon.objects.get(pk=poke['pokemon']) + pokemon_object = Pokemon.objects.get(pk=poke["pokemon"]) pokemon_detail = OrderedDict() - pokemon_detail['pokemon'] = PokemonSummarySerializer( - pokemon_object, context=self.context).data - pokemon_detail['version_details'] = [] + pokemon_detail["pokemon"] = PokemonSummarySerializer( + pokemon_object, context=self.context + ).data + pokemon_detail["version_details"] = [] - poke_encounters = all_encounters.filter(pokemon=poke['pokemon']).order_by('version') + poke_encounters = all_encounters.filter(pokemon=poke["pokemon"]).order_by( + "version" + ) # each pokemon has multiple versions it could be encountered in - for ver in poke_encounters.values('version').distinct(): + for ver in poke_encounters.values("version").distinct(): version_detail = OrderedDict() - version_detail['version'] = version_data[ver['version'] - 1] - version_detail['max_chance'] = 0 - version_detail['encounter_details'] = [] + version_detail["version"] = version_data[ver["version"] - 1] + version_detail["max_chance"] = 0 + version_detail["encounter_details"] = [] poke_data = EncounterDetailSerializer( - poke_encounters.filter(version=ver['version']), - many=True, context=self.context).data + poke_encounters.filter(version=ver["version"]), + many=True, + context=self.context, + ).data # each version has multiple ways a pokemon can be encountered for encounter in poke_data: - slot = EncounterSlot.objects.get(pk=encounter['encounter_slot']) + slot = EncounterSlot.objects.get(pk=encounter["encounter_slot"]) slot_data = EncounterSlotSerializer(slot, context=self.context).data - del encounter['pokemon'] - del encounter['encounter_slot'] - del encounter['location_area'] - del encounter['version'] - encounter['chance'] = slot_data['chance'] - version_detail['max_chance'] += slot_data['chance'] - encounter['method'] = slot_data['encounter_method'] + del encounter["pokemon"] + del encounter["encounter_slot"] + del encounter["location_area"] + del encounter["version"] + encounter["chance"] = slot_data["chance"] + version_detail["max_chance"] += slot_data["chance"] + encounter["method"] = slot_data["encounter_method"] - version_detail['encounter_details'].append(encounter) + version_detail["encounter_details"].append(encounter) - pokemon_detail['version_details'].append(version_detail) + pokemon_detail["version_details"].append(version_detail) encounters_list.append(pokemon_detail) @@ -1004,7 +1039,7 @@ class LocationGameIndexSerializer(serializers.ModelSerializer): class Meta: model = LocationGameIndex - fields = ('game_index', 'generation') + fields = ("game_index", "generation") class LocationNameSerializer(serializers.ModelSerializer): @@ -1013,7 +1048,7 @@ class LocationNameSerializer(serializers.ModelSerializer): class Meta: model = LocationName - fields = ('name', 'language') + fields = ("name", "language") class LocationDetailSerializer(serializers.ModelSerializer): @@ -1021,25 +1056,29 @@ class LocationDetailSerializer(serializers.ModelSerializer): region = RegionSummarySerializer() names = LocationNameSerializer(many=True, read_only=True, source="locationname") game_indices = LocationGameIndexSerializer( - many=True, read_only=True, source="locationgameindex") - areas = LocationAreaSummarySerializer(many=True, read_only=True, source="locationarea") + many=True, read_only=True, source="locationgameindex" + ) + areas = LocationAreaSummarySerializer( + many=True, read_only=True, source="locationarea" + ) class Meta: model = Location - fields = ('id', 'name', 'region', 'names', 'game_indices', 'areas') + fields = ("id", "name", "region", "names", "game_indices", "areas") ######################### # ABILITY SERIALIZERS # ######################### + class AbilityEffectTextSerializer(serializers.ModelSerializer): language = LanguageSummarySerializer() class Meta: model = AbilityEffectText - fields = ('effect', 'short_effect', 'language') + fields = ("effect", "short_effect", "language") class AbilityFlavorTextSerializer(serializers.ModelSerializer): @@ -1050,7 +1089,7 @@ class AbilityFlavorTextSerializer(serializers.ModelSerializer): class Meta: model = AbilityFlavorText - fields = ('flavor_text', 'language', 'version_group') + fields = ("flavor_text", "language", "version_group") class AbilityChangeEffectTextSerializer(serializers.ModelSerializer): @@ -1059,18 +1098,22 @@ class AbilityChangeEffectTextSerializer(serializers.ModelSerializer): class Meta: model = AbilityChangeEffectText - fields = ('effect', 'language',) + fields = ( + "effect", + "language", + ) class AbilityChangeSerializer(serializers.ModelSerializer): version_group = VersionGroupSummarySerializer() effect_entries = AbilityChangeEffectTextSerializer( - many=True, read_only=True, source="abilitychangeeffecttext") + many=True, read_only=True, source="abilitychangeeffecttext" + ) class Meta: model = AbilityChange - fields = ('version_group', 'effect_entries') + fields = ("version_group", "effect_entries") class AbilityNameSerializer(serializers.ModelSerializer): @@ -1079,43 +1122,48 @@ class AbilityNameSerializer(serializers.ModelSerializer): class Meta: model = AbilityName - fields = ('name', 'language') + fields = ("name", "language") class AbilityDetailSerializer(serializers.ModelSerializer): effect_entries = AbilityEffectTextSerializer( - many=True, read_only=True, source="abilityeffecttext") + many=True, read_only=True, source="abilityeffecttext" + ) flavor_text_entries = AbilityFlavorTextSerializer( - many=True, read_only=True, source="abilityflavortext") + many=True, read_only=True, source="abilityflavortext" + ) names = AbilityNameSerializer(many=True, read_only=True, source="abilityname") generation = GenerationSummarySerializer() - effect_changes = AbilityChangeSerializer(many=True, read_only=True, source="abilitychange") - pokemon = serializers.SerializerMethodField('get_ability_pokemon') + effect_changes = AbilityChangeSerializer( + many=True, read_only=True, source="abilitychange" + ) + pokemon = serializers.SerializerMethodField("get_ability_pokemon") class Meta: model = Ability fields = ( - 'id', - 'name', - 'is_main_series', - 'generation', - 'names', - 'effect_entries', - 'effect_changes', - 'flavor_text_entries', - 'pokemon', + "id", + "name", + "is_main_series", + "generation", + "names", + "effect_entries", + "effect_changes", + "flavor_text_entries", + "pokemon", ) def get_ability_pokemon(self, obj): pokemon_ability_objects = PokemonAbility.objects.filter(ability=obj) data = PokemonAbilitySerializer( - pokemon_ability_objects, many=True, context=self.context).data + pokemon_ability_objects, many=True, context=self.context + ).data pokemon = [] for poke in data: - del poke['ability'] + del poke["ability"] pokemon.append(poke) return pokemon @@ -1125,13 +1173,14 @@ def get_ability_pokemon(self, obj): # STAT SERIALIZERS # ###################### + class StatNameSerializer(serializers.ModelSerializer): language = LanguageSummarySerializer() class Meta: model = StatName - fields = ('name', 'language') + fields = ("name", "language") class StatDetailSerializer(serializers.ModelSerializer): @@ -1139,64 +1188,80 @@ 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') + 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', 'affecting_moves', - 'affecting_natures', 'characteristics', 'move_damage_class', 'names' + "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', [])]) + 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) + del change["stat"] + if change["change"] > 0: + changes["increase"].append(change) else: - changes['decrease'].append(change) + 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 + 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 + decreases = NatureSummarySerializer( + decrease_objects, many=True, context=self.context + ).data - return OrderedDict([('increase', increases), ('decrease', decreases)]) + return OrderedDict([("increase", increases), ("decrease", decreases)]) ############################# # ITEM POCKET SERIALIZERS # ############################# + class ItemPocketNameSerializer(serializers.ModelSerializer): language = LanguageSummarySerializer() class Meta: model = ItemName - fields = ('name', 'language') + fields = ("name", "language") class ItemPocketDetailSerializer(serializers.ModelSerializer): names = ItemPocketNameSerializer(many=True, read_only=True, source="itempocketname") - categories = ItemCategorySummarySerializer(many=True, read_only=True, source="itemcategory") + categories = ItemCategorySummarySerializer( + many=True, read_only=True, source="itemcategory" + ) class Meta: model = ItemPocket - fields = ('id', 'name', 'categories', 'categories', 'names') + fields = ("id", "name", "categories", "categories", "names") ############################### @@ -1208,31 +1273,34 @@ class ItemCategoryNameSerializer(serializers.ModelSerializer): class Meta: model = ItemName - fields = ('name', 'language') + fields = ("name", "language") class ItemCategoryDetailSerializer(serializers.ModelSerializer): - names = ItemCategoryNameSerializer(many=True, read_only=True, source="itemcategoryname") + names = ItemCategoryNameSerializer( + many=True, read_only=True, source="itemcategoryname" + ) pocket = ItemPocketSummarySerializer(source="item_pocket") items = ItemSummarySerializer(many=True, read_only=True, source="item") class Meta: model = ItemCategory - fields = ('id', 'name', 'items', 'names', 'pocket') + fields = ("id", "name", "items", "names", "pocket") ################################ # ITEM ATTRIBUTE SERIALIZERS # ################################ + class ItemAttributeNameSerializer(serializers.ModelSerializer): language = LanguageSummarySerializer() class Meta: model = ItemAttributeName - fields = ('name', 'language') + fields = ("name", "language") class ItemAttributeDescriptionSerializer(serializers.ModelSerializer): @@ -1241,19 +1309,22 @@ class ItemAttributeDescriptionSerializer(serializers.ModelSerializer): class Meta: model = ItemAttributeDescription - fields = ('description', 'language') + fields = ("description", "language") class ItemAttributeDetailSerializer(serializers.ModelSerializer): - names = ItemAttributeNameSerializer(many=True, read_only=True, source="itemattributename") + names = ItemAttributeNameSerializer( + many=True, read_only=True, source="itemattributename" + ) descriptions = ItemAttributeDescriptionSerializer( - many=True, read_only=True, source="itemattributedescription") - items = serializers.SerializerMethodField('get_attribute_items') + many=True, read_only=True, source="itemattributedescription" + ) + items = serializers.SerializerMethodField("get_attribute_items") class Meta: model = ItemAttribute - fields = ('id', 'name', 'descriptions', 'items', 'names') + fields = ("id", "name", "descriptions", "items", "names") def get_attribute_items(self, obj): @@ -1277,18 +1348,19 @@ class ItemFlingEffectEffectTextSerializer(serializers.ModelSerializer): class Meta: model = ItemFlingEffectEffectText - fields = ('effect', 'language') + fields = ("effect", "language") class ItemFlingEffectDetailSerializer(serializers.ModelSerializer): effect_entries = ItemFlingEffectEffectTextSerializer( - many=True, read_only=True, source="itemflingeffecteffecttext") + many=True, read_only=True, source="itemflingeffecteffecttext" + ) items = ItemSummarySerializer(many=True, read_only=True, source="item") class Meta: model = ItemFlingEffect - fields = ('id', 'name', 'effect_entries', 'items') + fields = ("id", "name", "effect_entries", "items") ####################### @@ -1302,7 +1374,7 @@ class ItemFlavorTextSerializer(serializers.ModelSerializer): class Meta: model = ItemFlavorText - fields = ('text', 'version_group', 'language') + fields = ("text", "version_group", "language") class ItemEffectTextSerializer(serializers.ModelSerializer): @@ -1311,7 +1383,7 @@ class ItemEffectTextSerializer(serializers.ModelSerializer): class Meta: model = ItemEffectText - fields = ('effect', 'short_effect', 'language') + fields = ("effect", "short_effect", "language") class ItemGameIndexSerializer(serializers.ModelSerializer): @@ -1320,7 +1392,7 @@ class ItemGameIndexSerializer(serializers.ModelSerializer): class Meta: model = ItemGameIndex - fields = ('game_index', 'generation') + fields = ("game_index", "generation") class ItemNameSerializer(serializers.ModelSerializer): @@ -1329,49 +1401,53 @@ class ItemNameSerializer(serializers.ModelSerializer): class Meta: model = ItemName - fields = ('name', 'language') + fields = ("name", "language") class ItemSpritesSerializer(serializers.ModelSerializer): - class Meta: model = ItemSprites - fields = ('sprites',) + fields = ("sprites",) class ItemDetailSerializer(serializers.ModelSerializer): names = ItemNameSerializer(many=True, read_only=True, source="itemname") - game_indices = ItemGameIndexSerializer(many=True, read_only=True, source="itemgameindex") - effect_entries = ItemEffectTextSerializer(many=True, read_only=True, source="itemeffecttext") + game_indices = ItemGameIndexSerializer( + many=True, read_only=True, source="itemgameindex" + ) + effect_entries = ItemEffectTextSerializer( + many=True, read_only=True, source="itemeffecttext" + ) flavor_text_entries = ItemFlavorTextSerializer( - many=True, read_only=True, source="itemflavortext") + many=True, read_only=True, source="itemflavortext" + ) category = ItemCategorySummarySerializer(source="item_category") attributes = serializers.SerializerMethodField("get_item_attributes") fling_effect = ItemFlingEffectSummarySerializer(source="item_fling_effect") - held_by_pokemon = serializers.SerializerMethodField(source='get_held_by_pokemon') - baby_trigger_for = serializers.SerializerMethodField(source='get_baby_trigger_for') - sprites = serializers.SerializerMethodField('get_item_sprites') - machines = serializers.SerializerMethodField('get_item_machines') + held_by_pokemon = serializers.SerializerMethodField(source="get_held_by_pokemon") + baby_trigger_for = serializers.SerializerMethodField(source="get_baby_trigger_for") + sprites = serializers.SerializerMethodField("get_item_sprites") + machines = serializers.SerializerMethodField("get_item_machines") class Meta: model = Item fields = ( - 'id', - 'name', - 'cost', - 'fling_power', - 'fling_effect', - 'attributes', - 'category', - 'effect_entries', - 'flavor_text_entries', - 'game_indices', - 'names', - 'held_by_pokemon', - 'sprites', - 'baby_trigger_for', - 'machines', + "id", + "name", + "cost", + "fling_power", + "fling_effect", + "attributes", + "category", + "effect_entries", + "flavor_text_entries", + "game_indices", + "names", + "held_by_pokemon", + "sprites", + "baby_trigger_for", + "machines", ) def get_item_machines(self, obj): @@ -1383,15 +1459,16 @@ def get_item_machines(self, obj): for machine_object in machine_objects: machine_data = MachineSummarySerializer( - machine_object, context=self.context).data + machine_object, context=self.context + ).data version_group_data = VersionGroupSummarySerializer( - machine_object.version_group, context=self.context).data + machine_object.version_group, context=self.context + ).data - machines.append({ - 'machine': machine_data, - 'version_group': version_group_data - }) + machines.append( + {"machine": machine_data, "version_group": version_group_data} + ) return machines @@ -1399,12 +1476,14 @@ def get_item_sprites(self, obj): sprites_object = ItemSprites.objects.get(item_id=obj) sprites_data = ItemSpritesSerializer(sprites_object, context=self.context).data - sprites_data = json.loads(sprites_data['sprites']) - host = 'raw.githubusercontent.com/PokeAPI/sprites/master/' + sprites_data = json.loads(sprites_data["sprites"]) + host = "raw.githubusercontent.com/PokeAPI/sprites/master/" for key in sprites_data: if sprites_data[key]: - sprites_data[key] = 'https://' + host + sprites_data[key].replace('/media/', '') + sprites_data[key] = ( + "https://" + host + sprites_data[key].replace("/media/", "") + ) return sprites_data @@ -1412,23 +1491,24 @@ def get_item_attributes(self, obj): item_attribute_maps = ItemAttributeMap.objects.filter(item=obj) serializer = ItemAttributeMapSerializer( - item_attribute_maps, many=True, context=self.context) + item_attribute_maps, many=True, context=self.context + ) data = serializer.data attributes = [] for map in data: attribute = OrderedDict() - attribute['name'] = map['attribute']['name'] - attribute['url'] = map['attribute']['url'] + attribute["name"] = map["attribute"]["name"] + attribute["url"] = map["attribute"]["url"] attributes.append(attribute) return attributes def get_held_by_pokemon(self, obj): - pokemon_items = PokemonItem.objects.filter(item=obj).order_by('pokemon_id') - pokemon_ids = pokemon_items.values('pokemon_id').distinct() + pokemon_items = PokemonItem.objects.filter(item=obj).order_by("pokemon_id") + pokemon_ids = pokemon_items.values("pokemon_id").distinct() pokemon_list = [] for id in pokemon_ids: @@ -1436,21 +1516,24 @@ def get_held_by_pokemon(self, obj): item_pokemon_details = OrderedDict() # Get each Unique Item by ID - pokemon_object = Pokemon.objects.get(pk=id['pokemon_id']) - pokemon_data = PokemonSummarySerializer(pokemon_object, context=self.context).data - item_pokemon_details['pokemon'] = pokemon_data + pokemon_object = Pokemon.objects.get(pk=id["pokemon_id"]) + pokemon_data = PokemonSummarySerializer( + pokemon_object, context=self.context + ).data + item_pokemon_details["pokemon"] = pokemon_data # Get Versions associated with each unique item - pokemon_item_objects = pokemon_items.filter(pokemon_id=id['pokemon_id']) + pokemon_item_objects = pokemon_items.filter(pokemon_id=id["pokemon_id"]) serializer = PokemonItemSerializer( - pokemon_item_objects, many=True, context=self.context) - item_pokemon_details['version_details'] = [] + pokemon_item_objects, many=True, context=self.context + ) + item_pokemon_details["version_details"] = [] for pokemon in serializer.data: version_detail = OrderedDict() - version_detail['rarity'] = pokemon['rarity'] - version_detail['version'] = pokemon['version'] - item_pokemon_details['version_details'].append(version_detail) + version_detail["rarity"] = pokemon["rarity"] + version_detail["version"] = pokemon["version"] + item_pokemon_details["version_details"].append(version_detail) pokemon_list.append(item_pokemon_details) @@ -1460,7 +1543,9 @@ def get_baby_trigger_for(self, obj): try: chain_object = EvolutionChain.objects.get(baby_trigger_item=obj) - data = EvolutionChainSummarySerializer(chain_object, context=self.context).data + data = EvolutionChainSummarySerializer( + chain_object, context=self.context + ).data except EvolutionChain.DoesNotExist: data = None @@ -1471,13 +1556,18 @@ def get_baby_trigger_for(self, obj): # NATURE SERIALIZERS # ######################## + class NatureBattleStylePreferenceSerializer(serializers.ModelSerializer): move_battle_style = MoveBattleStyleSummarySerializer() class Meta: model = NatureBattleStylePreference - fields = ('low_hp_preference', 'high_hp_preference', 'move_battle_style',) + fields = ( + "low_hp_preference", + "high_hp_preference", + "move_battle_style", + ) class NatureNameSerializer(serializers.ModelSerializer): @@ -1486,7 +1576,7 @@ class NatureNameSerializer(serializers.ModelSerializer): class Meta: model = NatureName - fields = ('name', 'language') + fields = ("name", "language") class NatureDetailSerializer(serializers.ModelSerializer): @@ -1497,26 +1587,35 @@ class NatureDetailSerializer(serializers.ModelSerializer): likes_flavor = BerryFlavorSummarySerializer() hates_flavor = BerryFlavorSummarySerializer() berries = BerrySummarySerializer(many=True, read_only=True, source="berry") - pokeathlon_stat_changes = serializers.SerializerMethodField('get_pokeathlon_stats') + pokeathlon_stat_changes = serializers.SerializerMethodField("get_pokeathlon_stats") move_battle_style_preferences = NatureBattleStylePreferenceSerializer( - many=True, read_only=True, source="naturebattlestylepreference") + 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' + "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 + pokeathlon_stat_objects, many=True, context=self.context + ).data for stat in pokeathlon_stats: - del stat['nature'] + del stat["nature"] return pokeathlon_stats @@ -1525,23 +1624,26 @@ def get_pokeathlon_stats(self, obj): # BERRY SERIALIZERS # ####################### + class BerryFirmnessNameSerializer(serializers.ModelSerializer): language = LanguageSummarySerializer() class Meta: model = BerryFirmnessName - fields = ('name', 'language') + fields = ("name", "language") class BerryFirmnessDetailSerializer(serializers.ModelSerializer): - names = BerryFirmnessNameSerializer(many=True, read_only=True, source="berryfirmnessname") + names = BerryFirmnessNameSerializer( + many=True, read_only=True, source="berryfirmnessname" + ) berries = BerrySummarySerializer(many=True, read_only=True, source="berry") class Meta: model = BerryFirmness - fields = ('id', 'name', 'berries', 'names') + fields = ("id", "name", "berries", "names") class BerryFlavorNameSerializer(serializers.ModelSerializer): @@ -1550,28 +1652,32 @@ class BerryFlavorNameSerializer(serializers.ModelSerializer): class Meta: model = BerryFlavorName - fields = ('name', 'language') + fields = ("name", "language") class BerryFlavorDetailSerializer(serializers.ModelSerializer): - names = BerryFlavorNameSerializer(many=True, read_only=True, source="berryflavorname") + names = BerryFlavorNameSerializer( + many=True, read_only=True, source="berryflavorname" + ) contest_type = ContestTypeSummarySerializer() - berries = serializers.SerializerMethodField('get_berries_with_flavor') + berries = serializers.SerializerMethodField("get_berries_with_flavor") class Meta: model = BerryFlavor - fields = ('id', 'name', 'berries', 'contest_type', 'names') + fields = ("id", "name", "berries", "contest_type", "names") def get_berries_with_flavor(self, obj): flavor_map_objects = BerryFlavorMap.objects.filter( - berry_flavor=obj, potency__gt=0).order_by('potency') + berry_flavor=obj, potency__gt=0 + ).order_by("potency") flavor_maps = BerryFlavorMapSerializer( - flavor_map_objects, many=True, context=self.context).data + flavor_map_objects, many=True, context=self.context + ).data for map in flavor_maps: - del map['flavor'] + del map["flavor"] return flavor_maps @@ -1581,34 +1687,35 @@ class BerryDetailSerializer(serializers.ModelSerializer): item = ItemSummarySerializer() natural_gift_type = TypeSummarySerializer() firmness = BerryFirmnessSummarySerializer(source="berry_firmness") - flavors = serializers.SerializerMethodField('get_berry_flavors') + flavors = serializers.SerializerMethodField("get_berry_flavors") class Meta: model = Berry fields = ( - 'id', - 'name', - 'growth_time', - 'max_harvest', - 'natural_gift_power', - 'size', - 'smoothness', - 'soil_dryness', - 'firmness', - 'flavors', - 'item', - 'natural_gift_type', + "id", + "name", + "growth_time", + "max_harvest", + "natural_gift_power", + "size", + "smoothness", + "soil_dryness", + "firmness", + "flavors", + "item", + "natural_gift_type", ) def get_berry_flavors(self, obj): flavor_map_objects = BerryFlavorMap.objects.filter(berry=obj) flavor_maps = BerryFlavorMapSerializer( - flavor_map_objects, many=True, context=self.context).data + flavor_map_objects, many=True, context=self.context + ).data flavors = [] for map in flavor_maps: - del map['berry'] + del map["berry"] flavors.append(map) return flavors @@ -1624,7 +1731,7 @@ class PokemonEggGroupSerializer(serializers.ModelSerializer): class Meta: model = PokemonEggGroup - fields = ('species', 'egg_group') + fields = ("species", "egg_group") class EggGroupNameSerializer(serializers.ModelSerializer): @@ -1633,17 +1740,17 @@ class EggGroupNameSerializer(serializers.ModelSerializer): class Meta: model = EggGroupName - fields = ('name', 'language') + fields = ("name", "language") class EggGroupDetailSerializer(serializers.ModelSerializer): names = EggGroupNameSerializer(many=True, read_only=True, source="egggroupname") - pokemon_species = serializers.SerializerMethodField('get_species') + pokemon_species = serializers.SerializerMethodField("get_species") class Meta: model = EggGroup - fields = ('id', 'name', 'names', 'pokemon_species') + fields = ("id", "name", "names", "pokemon_species") def get_species(self, obj): @@ -1651,7 +1758,7 @@ def get_species(self, obj): data = PokemonEggGroupSerializer(results, many=True, context=self.context).data associated_species = [] for species in data: - associated_species.append(species['species']) + associated_species.append(species["species"]) return associated_species @@ -1661,10 +1768,9 @@ def get_species(self, obj): ###################### # https://stackoverflow.com/a/45987450/3482533 class TypeEfficacySerializer(serializers.ModelSerializer): - class Meta: model = TypeEfficacy - fields = '__all__' + fields = "__all__" class TypeGameIndexSerializer(serializers.ModelSerializer): @@ -1673,7 +1779,7 @@ class TypeGameIndexSerializer(serializers.ModelSerializer): class Meta: model = TypeGameIndex - fields = ('game_index', 'generation') + fields = ("game_index", "generation") class TypeNameSerializer(serializers.ModelSerializer): @@ -1682,80 +1788,98 @@ class TypeNameSerializer(serializers.ModelSerializer): class Meta: model = TypeName - fields = ('name', 'language') + fields = ("name", "language") class TypeDetailSerializer(serializers.ModelSerializer): """ Serializer for the Type resource """ + generation = GenerationSummarySerializer() names = AbilityNameSerializer(many=True, read_only=True, source="typename") - game_indices = TypeGameIndexSerializer(many=True, read_only=True, source="typegameindex") + game_indices = TypeGameIndexSerializer( + many=True, read_only=True, source="typegameindex" + ) move_damage_class = MoveDamageClassSummarySerializer() - damage_relations = serializers.SerializerMethodField('get_type_relationships') - pokemon = serializers.SerializerMethodField('get_type_pokemon') + 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', 'damage_relations', 'game_indices', 'generation', - 'move_damage_class', 'names', 'pokemon', 'moves' + "id", + "name", + "damage_relations", + "game_indices", + "generation", + "move_damage_class", + "names", + "pokemon", + "moves", ) def get_type_relationships(self, obj): relations = OrderedDict() - relations['no_damage_to'] = [] - relations['half_damage_to'] = [] - relations['double_damage_to'] = [] + relations["no_damage_to"] = [] + relations["half_damage_to"] = [] + relations["double_damage_to"] = [] - relations['no_damage_from'] = [] - relations['half_damage_from'] = [] - relations['double_damage_from'] = [] + relations["no_damage_from"] = [] + relations["half_damage_from"] = [] + relations["double_damage_from"] = [] # Damage To results = TypeEfficacy.objects.filter(damage_type=obj) serializer = TypeEfficacySerializer(results, many=True, context=self.context) for relation in serializer.data: - type = Type.objects.get(pk=relation['target_type']) - if relation['damage_factor'] == 200: - relations['double_damage_to'].append( - TypeSummarySerializer(type, context=self.context).data) - elif relation['damage_factor'] == 50: - relations['half_damage_to'].append( - TypeSummarySerializer(type, context=self.context).data) - elif relation['damage_factor'] == 0: - relations['no_damage_to'].append( - TypeSummarySerializer(type, context=self.context).data) + type = Type.objects.get(pk=relation["target_type"]) + if relation["damage_factor"] == 200: + relations["double_damage_to"].append( + TypeSummarySerializer(type, context=self.context).data + ) + elif relation["damage_factor"] == 50: + relations["half_damage_to"].append( + TypeSummarySerializer(type, context=self.context).data + ) + elif relation["damage_factor"] == 0: + relations["no_damage_to"].append( + TypeSummarySerializer(type, context=self.context).data + ) # Damage From results = TypeEfficacy.objects.filter(target_type=obj) serializer = TypeEfficacySerializer(results, many=True, context=self.context) for relation in serializer.data: - type = Type.objects.get(pk=relation['damage_type']) - if relation['damage_factor'] == 200: - relations['double_damage_from'].append( - TypeSummarySerializer(type, context=self.context).data) - elif relation['damage_factor'] == 50: - relations['half_damage_from'].append( - TypeSummarySerializer(type, context=self.context).data) - elif relation['damage_factor'] == 0: - relations['no_damage_from'].append( - TypeSummarySerializer(type, context=self.context).data) + type = Type.objects.get(pk=relation["damage_type"]) + if relation["damage_factor"] == 200: + relations["double_damage_from"].append( + TypeSummarySerializer(type, context=self.context).data + ) + elif relation["damage_factor"] == 50: + relations["half_damage_from"].append( + TypeSummarySerializer(type, context=self.context).data + ) + elif relation["damage_factor"] == 0: + relations["no_damage_from"].append( + TypeSummarySerializer(type, context=self.context).data + ) return relations def get_type_pokemon(self, obj): poke_type_objects = PokemonType.objects.filter(type=obj) - poke_types = PokemonTypeSerializer(poke_type_objects, many=True, context=self.context).data + poke_types = PokemonTypeSerializer( + poke_type_objects, many=True, context=self.context + ).data for poke_type in poke_types: - del poke_type['type'] + del poke_type["type"] return poke_types @@ -1771,7 +1895,7 @@ class MachineDetailSerializer(serializers.ModelSerializer): class Meta: model = Machine - fields = ('id', 'item', 'version_group', 'move') + fields = ("id", "item", "version_group", "move") ################################### @@ -1783,16 +1907,18 @@ class MoveBattleStyleNameSerializer(serializers.ModelSerializer): class Meta: model = MoveBattleStyleName - fields = ('name', 'language') + fields = ("name", "language") class MoveBattleStyleDetailSerializer(serializers.ModelSerializer): - names = MoveBattleStyleNameSerializer(many=True, read_only=True, source="movebattlestylename") + names = MoveBattleStyleNameSerializer( + many=True, read_only=True, source="movebattlestylename" + ) class Meta: model = MoveBattleStyle - fields = ('id', 'name', 'names') + fields = ("id", "name", "names") ################################### @@ -1804,7 +1930,7 @@ class MoveDamageClassNameSerializer(serializers.ModelSerializer): class Meta: model = MoveDamageClassName - fields = ('name', 'language') + fields = ("name", "language") class MoveDamageClassDescriptionSerializer(serializers.ModelSerializer): @@ -1813,19 +1939,28 @@ class MoveDamageClassDescriptionSerializer(serializers.ModelSerializer): class Meta: model = MoveDamageClassDescription - fields = ('description', 'language') + fields = ("description", "language") class MoveDamageClassDetailSerializer(serializers.ModelSerializer): - names = MoveDamageClassNameSerializer(many=True, read_only=True, source="movedamageclassname") + names = MoveDamageClassNameSerializer( + many=True, read_only=True, source="movedamageclassname" + ) descriptions = MoveDamageClassDescriptionSerializer( - many=True, read_only=True, source="movedamageclassdescription") + many=True, read_only=True, source="movedamageclassdescription" + ) moves = MoveSummarySerializer(many=True, read_only=True, source="move") class Meta: model = MoveDamageClass - fields = ('id', 'name', 'descriptions', 'moves', 'names',) + fields = ( + "id", + "name", + "descriptions", + "moves", + "names", + ) ########################### @@ -1837,17 +1972,19 @@ class MoveMetaAilmentNameSerializer(serializers.ModelSerializer): class Meta: model = MoveMetaAilmentName - fields = ('name', 'language') + fields = ("name", "language") class MoveMetaAilmentDetailSerializer(serializers.ModelSerializer): - names = MoveMetaAilmentNameSerializer(many=True, read_only=True, source="movemetaailmentname") - moves = serializers.SerializerMethodField('get_ailment_moves') + names = MoveMetaAilmentNameSerializer( + many=True, read_only=True, source="movemetaailmentname" + ) + moves = serializers.SerializerMethodField("get_ailment_moves") class Meta: model = MoveMetaAilment - fields = ('id', 'name', 'moves', 'names') + fields = ("id", "name", "moves", "names") def get_ailment_moves(self, obj): @@ -1868,18 +2005,19 @@ class MoveMetaCategoryDescriptionSerializer(serializers.ModelSerializer): class Meta: model = MoveMetaCategoryDescription - fields = ('description', 'language') + fields = ("description", "language") class MoveMetaCategoryDetailSerializer(serializers.ModelSerializer): descriptions = MoveMetaCategoryDescriptionSerializer( - many=True, read_only=True, source="movemetacategorydescription") - moves = serializers.SerializerMethodField('get_category_moves') + many=True, read_only=True, source="movemetacategorydescription" + ) + moves = serializers.SerializerMethodField("get_category_moves") class Meta: model = MoveMetaCategory - fields = ('id', 'name', 'descriptions', 'moves') + fields = ("id", "name", "descriptions", "moves") def get_category_moves(self, obj): @@ -1902,18 +2040,18 @@ class MoveMetaSerializer(serializers.ModelSerializer): class Meta: model = MoveMeta fields = ( - 'ailment', - 'category', - 'min_hits', - 'max_hits', - 'min_turns', - 'max_turns', - 'drain', - 'healing', - 'crit_rate', - 'ailment_chance', - 'flinch_chance', - 'stat_chance' + "ailment", + "category", + "min_hits", + "max_hits", + "min_turns", + "max_turns", + "drain", + "healing", + "crit_rate", + "ailment_chance", + "flinch_chance", + "stat_chance", ) @@ -1926,7 +2064,7 @@ class MoveTargetNameSerializer(serializers.ModelSerializer): class Meta: model = MoveTargetName - fields = ('name', 'language') + fields = ("name", "language") class MoveTargetDescriptionSerializer(serializers.ModelSerializer): @@ -1935,19 +2073,20 @@ class MoveTargetDescriptionSerializer(serializers.ModelSerializer): class Meta: model = MoveTargetDescription - fields = ('description', 'language') + fields = ("description", "language") class MoveTargetDetailSerializer(serializers.ModelSerializer): names = MoveTargetNameSerializer(many=True, read_only=True, source="movetargetname") descriptions = MoveTargetDescriptionSerializer( - many=True, read_only=True, source="movetargetdescription") + many=True, read_only=True, source="movetargetdescription" + ) moves = MoveSummarySerializer(many=True, read_only=True, source="move") class Meta: model = MoveTarget - fields = ('id', 'name', 'descriptions', 'moves', 'names') + fields = ("id", "name", "descriptions", "moves", "names") ###################### @@ -1959,26 +2098,34 @@ class MoveNameSerializer(serializers.ModelSerializer): class Meta: model = AbilityName - fields = ('name', 'language') + fields = ("name", "language") class MoveChangeSerializer(serializers.ModelSerializer): version_group = VersionGroupSummarySerializer() type = TypeSummarySerializer() - effect_entries = serializers.SerializerMethodField('get_effects') - effect_chance = serializers.IntegerField(source='move_effect_chance') + effect_entries = serializers.SerializerMethodField("get_effects") + effect_chance = serializers.IntegerField(source="move_effect_chance") class Meta: model = MoveChange fields = ( - 'accuracy', 'power', 'pp', 'effect_chance', 'effect_entries', 'type', 'version_group' + "accuracy", + "power", + "pp", + "effect_chance", + "effect_entries", + "type", + "version_group", ) def get_effects(self, obj): effect_texts = MoveEffectEffectText.objects.filter(move_effect=obj.move_effect) - data = MoveEffectEffectTextSerializer(effect_texts, many=True, context=self.context).data + data = MoveEffectEffectTextSerializer( + effect_texts, many=True, context=self.context + ).data return data @@ -1989,7 +2136,7 @@ class MoveEffectEffectTextSerializer(serializers.ModelSerializer): class Meta: model = MoveEffectEffectText - fields = ('effect', 'short_effect', 'language') + fields = ("effect", "short_effect", "language") class MoveEffectChangeEffectTextSerializer(serializers.ModelSerializer): @@ -1998,18 +2145,19 @@ class MoveEffectChangeEffectTextSerializer(serializers.ModelSerializer): class Meta: model = MoveEffectChangeEffectText - fields = ('effect', 'language') + fields = ("effect", "language") class MoveEffectChangeSerializer(serializers.ModelSerializer): version_group = VersionGroupSummarySerializer() effect_entries = MoveEffectChangeEffectTextSerializer( - many=True, read_only=True, source="moveeffectchangeeffecttext") + many=True, read_only=True, source="moveeffectchangeeffecttext" + ) class Meta: model = MoveEffectChange - fields = ('version_group', 'effect_entries') + fields = ("version_group", "effect_entries") class MoveFlavorTextSerializer(serializers.ModelSerializer): @@ -2020,7 +2168,7 @@ class MoveFlavorTextSerializer(serializers.ModelSerializer): class Meta: model = MoveFlavorText - fields = ('flavor_text', 'language', 'version_group') + fields = ("flavor_text", "language", "version_group") class MoveDetailSerializer(serializers.ModelSerializer): @@ -2033,43 +2181,44 @@ class MoveDetailSerializer(serializers.ModelSerializer): damage_class = MoveDamageClassSummarySerializer(source="move_damage_class") meta = MoveMetaSerializer(read_only=True, source="movemeta") names = MoveNameSerializer(many=True, read_only=True, source="movename") - effect_entries = serializers.SerializerMethodField('get_effect_text') + effect_entries = serializers.SerializerMethodField("get_effect_text") effect_chance = serializers.IntegerField(source="move_effect_chance") - contest_combos = serializers.SerializerMethodField('get_combos') - stat_changes = serializers.SerializerMethodField('get_move_stat_change') + contest_combos = serializers.SerializerMethodField("get_combos") + stat_changes = serializers.SerializerMethodField("get_move_stat_change") super_contest_effect = SuperContestEffectSummarySerializer() past_values = MoveChangeSerializer(many=True, read_only=True, source="movechange") - effect_changes = serializers.SerializerMethodField('get_effect_change_text') - machines = serializers.SerializerMethodField('get_move_machines') + effect_changes = serializers.SerializerMethodField("get_effect_change_text") + machines = serializers.SerializerMethodField("get_move_machines") flavor_text_entries = MoveFlavorTextSerializer( - many=True, read_only=True, source="moveflavortext") + many=True, read_only=True, source="moveflavortext" + ) class Meta: model = Move fields = ( - 'id', - 'name', - 'accuracy', - 'effect_chance', - 'pp', - 'priority', - 'power', - 'contest_combos', - 'contest_type', - 'contest_effect', - 'damage_class', - 'effect_entries', - 'effect_changes', - 'generation', - 'meta', - 'names', - 'past_values', - 'stat_changes', - 'super_contest_effect', - 'target', - 'type', - 'machines', - 'flavor_text_entries', + "id", + "name", + "accuracy", + "effect_chance", + "pp", + "priority", + "power", + "contest_combos", + "contest_type", + "contest_effect", + "damage_class", + "effect_entries", + "effect_changes", + "generation", + "meta", + "names", + "past_values", + "stat_changes", + "super_contest_effect", + "target", + "type", + "machines", + "flavor_text_entries", ) def get_move_machines(self, obj): @@ -2080,15 +2229,16 @@ def get_move_machines(self, obj): for machine_object in machine_objects: machine_data = MachineSummarySerializer( - machine_object, context=self.context).data + machine_object, context=self.context + ).data version_group_data = VersionGroupSummarySerializer( - machine_object.version_group, context=self.context).data + machine_object.version_group, context=self.context + ).data - machines.append({ - 'machine': machine_data, - 'version_group': version_group_data - }) + machines.append( + {"machine": machine_data, "version_group": version_group_data} + ) return machines @@ -2096,63 +2246,76 @@ def get_combos(self, obj): normal_before_objects = ContestCombo.objects.filter(first_move=obj) normal_before_data = ContestComboSerializer( - normal_before_objects, many=True, context=self.context).data + normal_before_objects, many=True, context=self.context + ).data normal_after_objects = ContestCombo.objects.filter(second_move=obj) normal_after_data = ContestComboSerializer( - normal_after_objects, many=True, context=self.context).data + normal_after_objects, many=True, context=self.context + ).data super_before_objects = SuperContestCombo.objects.filter(first_move=obj) super_before_data = SuperContestComboSerializer( - super_before_objects, many=True, context=self.context).data + super_before_objects, many=True, context=self.context + ).data super_after_objects = SuperContestCombo.objects.filter(second_move=obj) super_after_data = SuperContestComboSerializer( - super_after_objects, many=True, context=self.context).data + super_after_objects, many=True, context=self.context + ).data details = None - if normal_before_data or normal_after_data or super_before_data or super_after_data: + if ( + normal_before_data + or normal_after_data + or super_before_data + or super_after_data + ): details = OrderedDict() - details['normal'] = OrderedDict() - details['normal']['use_before'] = None - details['normal']['use_after'] = None - details['super'] = OrderedDict() - details['super']['use_before'] = None - details['super']['use_after'] = None + details["normal"] = OrderedDict() + details["normal"]["use_before"] = None + details["normal"]["use_after"] = None + details["super"] = OrderedDict() + details["super"]["use_before"] = None + details["super"]["use_after"] = None for combo in normal_before_data: - if details['normal']['use_before'] is None: - details['normal']['use_before'] = [] - details['normal']['use_before'].append(combo['second_move']) + if details["normal"]["use_before"] is None: + details["normal"]["use_before"] = [] + details["normal"]["use_before"].append(combo["second_move"]) for combo in normal_after_data: - if details['normal']['use_after'] is None: - details['normal']['use_after'] = [] - details['normal']['use_after'].append(combo['first_move']) + if details["normal"]["use_after"] is None: + details["normal"]["use_after"] = [] + details["normal"]["use_after"].append(combo["first_move"]) for combo in super_before_data: - if details['super']['use_before'] is None: - details['super']['use_before'] = [] - details['super']['use_before'].append(combo['second_move']) + if details["super"]["use_before"] is None: + details["super"]["use_before"] = [] + details["super"]["use_before"].append(combo["second_move"]) for combo in super_after_data: - if details['super']['use_after'] is None: - details['super']['use_after'] = [] - details['super']['use_after'].append(combo['first_move']) + if details["super"]["use_after"] is None: + details["super"]["use_after"] = [] + details["super"]["use_after"].append(combo["first_move"]) return details def get_effect_text(self, obj): effect_texts = MoveEffectEffectText.objects.filter(move_effect=obj.move_effect) - data = MoveEffectEffectTextSerializer(effect_texts, many=True, context=self.context).data + data = MoveEffectEffectTextSerializer( + effect_texts, many=True, context=self.context + ).data return data def get_effect_change_text(self, obj): effect_changes = MoveEffectChange.objects.filter(move_effect=obj.move_effect) - data = MoveEffectChangeSerializer(effect_changes, many=True, context=self.context).data + data = MoveEffectChangeSerializer( + effect_changes, many=True, context=self.context + ).data return data @@ -2160,10 +2323,11 @@ 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 + stat_change_objects, many=True, context=self.context + ).data for change in stat_changes: - del change['move'] + del change["move"] return stat_changes @@ -2172,6 +2336,7 @@ def get_move_stat_change(self, obj): # PAL PARK SERIALIZERS # ########################## + class PalParkSerializer(serializers.ModelSerializer): area = PalParkAreaSummarySerializer(read_only=True, source="pal_park_area") @@ -2179,7 +2344,7 @@ class PalParkSerializer(serializers.ModelSerializer): class Meta: model = PalPark - fields = ('base_score', 'rate', 'area', 'pokemon_species') + fields = ("base_score", "rate", "area", "pokemon_species") class PalParkAreaNameSerializer(serializers.HyperlinkedModelSerializer): @@ -2188,26 +2353,30 @@ class PalParkAreaNameSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = PalParkAreaName - fields = ('name', 'language') + fields = ("name", "language") class PalParkAreaDetailSerializer(serializers.ModelSerializer): - names = PalParkAreaNameSerializer(many=True, read_only=True, source="palparkareaname") - pokemon_encounters = serializers.SerializerMethodField('get_encounters') + names = PalParkAreaNameSerializer( + many=True, read_only=True, source="palparkareaname" + ) + pokemon_encounters = serializers.SerializerMethodField("get_encounters") class Meta: model = PalParkArea - fields = ('id', 'name', 'names', 'pokemon_encounters') + fields = ("id", "name", "names", "pokemon_encounters") def get_encounters(self, obj): pal_park_objects = PalPark.objects.filter(pal_park_area=obj) - parks = PalParkSerializer(pal_park_objects, many=True, context=self.context).data + parks = PalParkSerializer( + pal_park_objects, many=True, context=self.context + ).data encounters = [] for encounter in parks: - del encounter['area'] + del encounter["area"] encounters.append(encounter) return encounters @@ -2217,34 +2386,37 @@ def get_encounters(self, obj): # POKEMON COLOR SERIALIZERS # ############################### + class PokemonColorNameSerializer(serializers.HyperlinkedModelSerializer): language = LanguageSummarySerializer() class Meta: model = PokemonColorName - fields = ('name', 'language') + fields = ("name", "language") class PokemonColorDetailSerializer(serializers.ModelSerializer): - names = PokemonColorNameSerializer(many=True, read_only=True, source="pokemoncolorname") + names = PokemonColorNameSerializer( + many=True, read_only=True, source="pokemoncolorname" + ) pokemon_species = PokemonSpeciesSummarySerializer( - many=True, read_only=True, source="pokemonspecies") + many=True, read_only=True, source="pokemonspecies" + ) class Meta: model = PokemonColor - fields = ('id', 'name', 'names', 'pokemon_species') + fields = ("id", "name", "names", "pokemon_species") ############################## # POKEMON FORM SERIALIZERS # ############################## class PokemonFormSpritesSerializer(serializers.ModelSerializer): - class Meta: model = PokemonFormSprites - fields = ('sprites',) + fields = ("sprites",) class PokemonFormNameSerializer(serializers.ModelSerializer): @@ -2253,61 +2425,83 @@ class PokemonFormNameSerializer(serializers.ModelSerializer): class Meta: model = PokemonFormName - fields = ('name', 'pokemon_name', 'language') + fields = ("name", "pokemon_name", "language") class PokemonFormDetailSerializer(serializers.ModelSerializer): pokemon = PokemonSummarySerializer() version_group = VersionGroupSummarySerializer() - sprites = serializers.SerializerMethodField('get_pokemon_form_sprites') - form_names = serializers.SerializerMethodField('get_pokemon_form_names') - names = serializers.SerializerMethodField('get_pokemon_form_pokemon_names') + sprites = serializers.SerializerMethodField("get_pokemon_form_sprites") + form_names = serializers.SerializerMethodField("get_pokemon_form_names") + names = serializers.SerializerMethodField("get_pokemon_form_pokemon_names") class Meta: model = PokemonForm fields = ( - 'id', 'name', 'order', 'form_order', 'is_default', 'is_battle_only', - 'is_mega', 'form_name', 'pokemon', 'sprites', 'version_group', - 'form_names', 'names' + "id", + "name", + "order", + "form_order", + "is_default", + "is_battle_only", + "is_mega", + "form_name", + "pokemon", + "sprites", + "version_group", + "form_names", + "names", ) def get_pokemon_form_names(self, obj): - form_results = PokemonFormName.objects.filter(pokemon_form=obj, name__regex=".+") - form_serializer = PokemonFormNameSerializer(form_results, many=True, context=self.context) + form_results = PokemonFormName.objects.filter( + pokemon_form=obj, name__regex=".+" + ) + form_serializer = PokemonFormNameSerializer( + form_results, many=True, context=self.context + ) data = form_serializer.data for name in data: - del name['pokemon_name'] + del name["pokemon_name"] return data def get_pokemon_form_pokemon_names(self, obj): - form_results = PokemonFormName.objects.filter(pokemon_form=obj, pokemon_name__regex=".+") - form_serializer = PokemonFormNameSerializer(form_results, many=True, context=self.context) + form_results = PokemonFormName.objects.filter( + pokemon_form=obj, pokemon_name__regex=".+" + ) + form_serializer = PokemonFormNameSerializer( + form_results, many=True, context=self.context + ) data = form_serializer.data for name in data: - name['name'] = name['pokemon_name'] - del name['pokemon_name'] + name["name"] = name["pokemon_name"] + del name["pokemon_name"] return data def get_pokemon_form_sprites(self, obj): sprites_object = PokemonFormSprites.objects.get(pokemon_form_id=obj) - sprites_data = PokemonFormSpritesSerializer(sprites_object, context=self.context).data - sprites_data = json.loads(sprites_data['sprites']) + sprites_data = PokemonFormSpritesSerializer( + sprites_object, context=self.context + ).data + sprites_data = json.loads(sprites_data["sprites"]) - host = 'raw.githubusercontent.com/PokeAPI/sprites/master/' + host = "raw.githubusercontent.com/PokeAPI/sprites/master/" for key in sprites_data: if sprites_data[key]: - sprites_data[key] = 'https://' + host + sprites_data[key].replace('/media/', '') + sprites_data[key] = ( + "https://" + host + sprites_data[key].replace("/media/", "") + ) return sprites_data @@ -2316,37 +2510,42 @@ def get_pokemon_form_sprites(self, obj): # POKEMON HABITAT SERIALIZERS # ################################# + class PokemonHabitatNameSerializer(serializers.HyperlinkedModelSerializer): language = LanguageSummarySerializer() class Meta: model = PokemonHabitatName - fields = ('name', 'language') + fields = ("name", "language") class PokemonHabitatDetailSerializer(serializers.ModelSerializer): - names = PokemonHabitatNameSerializer(many=True, read_only=True, source="pokemonhabitatname") + names = PokemonHabitatNameSerializer( + many=True, read_only=True, source="pokemonhabitatname" + ) pokemon_species = PokemonSpeciesSummarySerializer( - many=True, read_only=True, source='pokemonspecies') + many=True, read_only=True, source="pokemonspecies" + ) class Meta: model = PokemonHabitat - fields = ('id', 'name', 'names', 'pokemon_species') + fields = ("id", "name", "names", "pokemon_species") ############################## # POKEMON MOVE SERIALIZERS # ############################## + class MoveLearnMethodNameSerializer(serializers.HyperlinkedModelSerializer): language = LanguageSummarySerializer() class Meta: model = MoveLearnMethodName - fields = ('name', 'language') + fields = ("name", "language") class MoveLearnMethodDescriptionSerializer(serializers.HyperlinkedModelSerializer): @@ -2355,39 +2554,44 @@ class MoveLearnMethodDescriptionSerializer(serializers.HyperlinkedModelSerialize class Meta: model = MoveLearnMethodDescription - fields = ('description', 'language') + fields = ("description", "language") class MoveLearnMethodDetailSerializer(serializers.ModelSerializer): - names = MoveLearnMethodNameSerializer(many=True, read_only=True, source="movelearnmethodname") + names = MoveLearnMethodNameSerializer( + many=True, read_only=True, source="movelearnmethodname" + ) descriptions = MoveLearnMethodDescriptionSerializer( - many=True, read_only=True, source="movelearnmethoddescription") - version_groups = serializers.SerializerMethodField('get_method_version_groups') + many=True, read_only=True, source="movelearnmethoddescription" + ) + version_groups = serializers.SerializerMethodField("get_method_version_groups") class Meta: model = MoveLearnMethod - fields = ('id', 'name', 'names', 'descriptions', 'version_groups') + fields = ("id", "name", "names", "descriptions", "version_groups") def get_method_version_groups(self, obj): - version_group_objects = VersionGroupMoveLearnMethod.objects.filter(move_learn_method=obj) + version_group_objects = VersionGroupMoveLearnMethod.objects.filter( + move_learn_method=obj + ) version_group_data = VersionGroupMoveLearnMethodSerializer( - version_group_objects, many=True, context=self.context).data + version_group_objects, many=True, context=self.context + ).data groups = [] for vg in version_group_data: - groups.append(vg['version_group']) + groups.append(vg["version_group"]) return groups # https://stackoverflow.com/a/45987450/3482533 class PokemonMoveSerializer(serializers.ModelSerializer): - class Meta: model = PokemonMove - fields = '__all__' + fields = "__all__" ############################### @@ -2399,39 +2603,44 @@ class PokemonShapeNameSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = PokemonShapeName - fields = ('name', 'awesome_name', 'language') + fields = ("name", "awesome_name", "language") class PokemonShapeDetailSerializer(serializers.ModelSerializer): - names = serializers.SerializerMethodField('get_shape_names') - awesome_names = serializers.SerializerMethodField('get_shape_awesome_names') + names = serializers.SerializerMethodField("get_shape_names") + awesome_names = serializers.SerializerMethodField("get_shape_awesome_names") pokemon_species = PokemonSpeciesSummarySerializer( - many=True, read_only=True, source='pokemonspecies') + many=True, read_only=True, source="pokemonspecies" + ) class Meta: model = PokemonShape - fields = ('id', 'name', 'awesome_names', 'names', 'pokemon_species') + fields = ("id", "name", "awesome_names", "names", "pokemon_species") def get_shape_names(self, obj): results = PokemonShapeName.objects.filter(pokemon_shape_id=obj) - serializer = PokemonShapeNameSerializer(results, many=True, context=self.context) + serializer = PokemonShapeNameSerializer( + results, many=True, context=self.context + ) data = serializer.data for entry in data: - del entry['awesome_name'] + del entry["awesome_name"] return data def get_shape_awesome_names(self, obj): results = PokemonShapeName.objects.filter(pokemon_shape_id=obj) - serializer = PokemonShapeNameSerializer(results, many=True, context=self.context) + serializer = PokemonShapeNameSerializer( + results, many=True, context=self.context + ) data = serializer.data for entry in data: - del entry['name'] + del entry["name"] return data @@ -2446,7 +2655,7 @@ class PokemonItemSerializer(serializers.ModelSerializer): class Meta: model = PokemonItem - fields = ('rarity', 'item', 'version') + fields = ("rarity", "item", "version") ############################## @@ -2458,74 +2667,82 @@ class PokemonStatSerializer(serializers.ModelSerializer): class Meta: model = PokemonStat - fields = ('base_stat', 'effort', 'stat') + fields = ("base_stat", "effort", "stat") ######################### # POKEMON SERIALIZERS # ######################### + class PokemonGameIndexSerializer(serializers.ModelSerializer): version = VersionSummarySerializer() class Meta: model = PokemonGameIndex - fields = ('game_index', 'version') + fields = ("game_index", "version") class PokemonSpritesSerializer(serializers.ModelSerializer): - class Meta: model = PokemonSprites - fields = ('sprites',) + fields = ("sprites",) class PokemonDetailSerializer(serializers.ModelSerializer): - abilities = serializers.SerializerMethodField('get_pokemon_abilities') - game_indices = PokemonGameIndexSerializer(many=True, read_only=True, source="pokemongameindex") - moves = serializers.SerializerMethodField('get_pokemon_moves') + abilities = serializers.SerializerMethodField("get_pokemon_abilities") + game_indices = PokemonGameIndexSerializer( + many=True, read_only=True, source="pokemongameindex" + ) + moves = serializers.SerializerMethodField("get_pokemon_moves") species = PokemonSpeciesSummarySerializer(source="pokemon_species") stats = PokemonStatSerializer(many=True, read_only=True, source="pokemonstat") - types = serializers.SerializerMethodField('get_pokemon_types') - forms = PokemonFormSummarySerializer(many=True, read_only=True, source="pokemonform") - held_items = serializers.SerializerMethodField('get_pokemon_held_items') - location_area_encounters = serializers.SerializerMethodField('get_encounters') - sprites = serializers.SerializerMethodField('get_pokemon_sprites') + types = serializers.SerializerMethodField("get_pokemon_types") + forms = PokemonFormSummarySerializer( + many=True, read_only=True, source="pokemonform" + ) + held_items = serializers.SerializerMethodField("get_pokemon_held_items") + location_area_encounters = serializers.SerializerMethodField("get_encounters") + sprites = serializers.SerializerMethodField("get_pokemon_sprites") class Meta: model = Pokemon fields = ( - 'id', - 'name', - 'base_experience', - 'height', - 'is_default', - 'order', - 'weight', - 'abilities', - 'forms', - 'game_indices', - 'held_items', - 'location_area_encounters', - 'moves', - 'species', - 'sprites', - 'stats', - 'types', + "id", + "name", + "base_experience", + "height", + "is_default", + "order", + "weight", + "abilities", + "forms", + "game_indices", + "held_items", + "location_area_encounters", + "moves", + "species", + "sprites", + "stats", + "types", ) def get_pokemon_sprites(self, obj): sprites_object = PokemonSprites.objects.get(pokemon_id=obj) - sprites_data = PokemonSpritesSerializer(sprites_object, context=self.context).data - sprites_data = json.loads(sprites_data['sprites']) - host = 'raw.githubusercontent.com/PokeAPI/sprites/master/' + sprites_data = PokemonSpritesSerializer( + sprites_object, context=self.context + ).data + sprites_data = json.loads(sprites_data["sprites"]) + host = "raw.githubusercontent.com/PokeAPI/sprites/master/" for key in sprites_data: if sprites_data[key]: - sprites_data[key] = 'https://' + host + sprites_data[key].replace('/media/', '') + sprites_data[key] = ( + "https://" + host + sprites_data[key].replace("/media/", "") + ) return sprites_data @@ -2533,18 +2750,20 @@ def get_pokemon_moves(self, obj): version_objects = VersionGroup.objects.all() version_data = VersionGroupSummarySerializer( - version_objects, many=True, context=self.context).data + version_objects, many=True, context=self.context + ).data method_objects = MoveLearnMethod.objects.all() method_data = MoveLearnMethodSummarySerializer( - method_objects, many=True, context=self.context).data + method_objects, many=True, context=self.context + ).data # Get moves related to this pokemon and pull out unique Move IDs. # Note that it's important to order by the same column we're using to # determine if the entries are unique. Otherwise distinct() will # return apparent duplicates. - pokemon_moves = PokemonMove.objects.filter(pokemon_id=obj).order_by('move_id') - move_ids = pokemon_moves.values('move_id').distinct() + pokemon_moves = PokemonMove.objects.filter(pokemon_id=obj).order_by("move_id") + move_ids = pokemon_moves.values("move_id").distinct() move_list = [] for id in move_ids: @@ -2552,25 +2771,30 @@ def get_pokemon_moves(self, obj): pokemon_move_details = OrderedDict() # Get each Unique Move by ID - move_object = Move.objects.get(pk=id['move_id']) + move_object = Move.objects.get(pk=id["move_id"]) move_data = MoveSummarySerializer(move_object, context=self.context).data - pokemon_move_details['move'] = move_data + pokemon_move_details["move"] = move_data # Get Versions and Move Methods associated with each unique move - pokemon_move_objects = pokemon_moves.filter(move_id=id['move_id']) + pokemon_move_objects = pokemon_moves.filter(move_id=id["move_id"]) serializer = PokemonMoveSerializer( - pokemon_move_objects, many=True, context=self.context) - pokemon_move_details['version_group_details'] = [] + pokemon_move_objects, many=True, context=self.context + ) + pokemon_move_details["version_group_details"] = [] for move in serializer.data: version_detail = OrderedDict() - version_detail['level_learned_at'] = move['level'] - version_detail['version_group'] = version_data[move['version_group'] - 1] - version_detail['move_learn_method'] = method_data[move['move_learn_method'] - 1] + version_detail["level_learned_at"] = move["level"] + version_detail["version_group"] = version_data[ + move["version_group"] - 1 + ] + version_detail["move_learn_method"] = method_data[ + move["move_learn_method"] - 1 + ] - pokemon_move_details['version_group_details'].append(version_detail) + pokemon_move_details["version_group_details"].append(version_detail) move_list.append(pokemon_move_details) @@ -2579,8 +2803,8 @@ def get_pokemon_moves(self, obj): def get_pokemon_held_items(self, obj): # Get items related to this pokemon and pull out unique Item IDs - pokemon_items = PokemonItem.objects.filter(pokemon_id=obj).order_by('item_id') - item_ids = pokemon_items.values('item_id').distinct() + pokemon_items = PokemonItem.objects.filter(pokemon_id=obj).order_by("item_id") + item_ids = pokemon_items.values("item_id").distinct() item_list = [] for id in item_ids: @@ -2588,24 +2812,25 @@ def get_pokemon_held_items(self, obj): pokemon_item_details = OrderedDict() # Get each Unique Item by ID - item_object = Item.objects.get(pk=id['item_id']) + item_object = Item.objects.get(pk=id["item_id"]) item_data = ItemSummarySerializer(item_object, context=self.context).data - pokemon_item_details['item'] = item_data + pokemon_item_details["item"] = item_data # Get Versions associated with each unique item - pokemon_item_objects = pokemon_items.filter(item_id=id['item_id']) + pokemon_item_objects = pokemon_items.filter(item_id=id["item_id"]) serializer = PokemonItemSerializer( - pokemon_item_objects, many=True, context=self.context) - pokemon_item_details['version_details'] = [] + pokemon_item_objects, many=True, context=self.context + ) + pokemon_item_details["version_details"] = [] for item in serializer.data: version_detail = OrderedDict() - version_detail['rarity'] = item['rarity'] - version_detail['version'] = item['version'] + version_detail["rarity"] = item["rarity"] + version_detail["version"] = item["version"] - pokemon_item_details['version_details'].append(version_detail) + pokemon_item_details["version_details"].append(version_detail) item_list.append(pokemon_item_details) @@ -2615,11 +2840,12 @@ def get_pokemon_abilities(self, obj): pokemon_ability_objects = PokemonAbility.objects.filter(pokemon=obj) data = PokemonAbilitySerializer( - pokemon_ability_objects, many=True, context=self.context).data + pokemon_ability_objects, many=True, context=self.context + ).data abilities = [] for ability in data: - del ability['pokemon'] + del ability["pokemon"] abilities.append(ability) return abilities @@ -2627,16 +2853,18 @@ def get_pokemon_abilities(self, obj): def get_pokemon_types(self, obj): poke_type_objects = PokemonType.objects.filter(pokemon=obj) - poke_types = PokemonTypeSerializer(poke_type_objects, many=True, context=self.context).data + poke_types = PokemonTypeSerializer( + poke_type_objects, many=True, context=self.context + ).data for poke_type in poke_types: - del poke_type['pokemon'] + del poke_type["pokemon"] return poke_types def get_encounters(self, obj): - return reverse('pokemon_encounters', kwargs={'pokemon_id': obj.pk}) + return reverse("pokemon_encounters", kwargs={"pokemon_id": obj.pk}) ################################# @@ -2648,17 +2876,19 @@ class EvolutionTriggerNameSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = EvolutionTriggerName - fields = ('name', 'language') + fields = ("name", "language") class EvolutionTriggerDetailSerializer(serializers.HyperlinkedModelSerializer): - names = EvolutionTriggerNameSerializer(many=True, read_only=True, source="evolutiontriggername") - pokemon_species = serializers.SerializerMethodField('get_species') + names = EvolutionTriggerNameSerializer( + many=True, read_only=True, source="evolutiontriggername" + ) + pokemon_species = serializers.SerializerMethodField("get_species") class Meta: model = EvolutionTrigger - fields = ('id', 'name', 'names', 'pokemon_species') + fields = ("id", "name", "names", "pokemon_species") def get_species(self, obj): @@ -2668,10 +2898,11 @@ def get_species(self, obj): for evo in evo_objects: species = PokemonSpeciesSummarySerializer( - evo.evolved_species, context=self.context).data - if species['name'] not in species_names: + evo.evolved_species, context=self.context + ).data + if species["name"] not in species_names: species_list.append(species) - species_names.add(species['name']) + species_names.add(species["name"]) return species_list @@ -2682,7 +2913,7 @@ class PokemonSpeciesDescriptionSerializer(serializers.ModelSerializer): class Meta: model = PokemonSpeciesDescription - fields = ('description', 'language') + fields = ("description", "language") class PokemonSpeciesFlavorTextSerializer(serializers.ModelSerializer): @@ -2693,7 +2924,7 @@ class PokemonSpeciesFlavorTextSerializer(serializers.ModelSerializer): class Meta: model = PokemonSpeciesFlavorText - fields = ('flavor_text', 'language', 'version') + fields = ("flavor_text", "language", "version") class PokemonSpeciesNameSerializer(serializers.ModelSerializer): @@ -2702,7 +2933,7 @@ class PokemonSpeciesNameSerializer(serializers.ModelSerializer): class Meta: model = PokemonSpeciesName - fields = ('name', 'genus', 'language') + fields = ("name", "genus", "language") class PokemonSpeciesEvolutionSerializer(serializers.ModelSerializer): @@ -2712,83 +2943,89 @@ class PokemonSpeciesEvolutionSerializer(serializers.ModelSerializer): class Meta: model = PokemonSpecies - fields = ('name', 'id', 'evolves_from_species', 'is_baby') + fields = ("name", "id", "evolves_from_species", "is_baby") class PokemonSpeciesDetailSerializer(serializers.ModelSerializer): - names = serializers.SerializerMethodField('get_pokemon_names') + names = serializers.SerializerMethodField("get_pokemon_names") form_descriptions = PokemonSpeciesDescriptionSerializer( - many=True, read_only=True, source="pokemonspeciesdescription") + many=True, read_only=True, source="pokemonspeciesdescription" + ) pokedex_numbers = PokemonDexEntrySerializer( - many=True, read_only=True, source="pokemondexnumber") - egg_groups = serializers.SerializerMethodField('get_pokemon_egg_groups') + many=True, read_only=True, source="pokemondexnumber" + ) + egg_groups = serializers.SerializerMethodField("get_pokemon_egg_groups") flavor_text_entries = PokemonSpeciesFlavorTextSerializer( - many=True, read_only=True, source="pokemonspeciesflavortext") - genera = serializers.SerializerMethodField('get_pokemon_genera') + many=True, read_only=True, source="pokemonspeciesflavortext" + ) + genera = serializers.SerializerMethodField("get_pokemon_genera") generation = GenerationSummarySerializer() growth_rate = GrowthRateSummarySerializer() color = PokemonColorSummarySerializer(source="pokemon_color") habitat = PokemonHabitatSummarySerializer(source="pokemon_habitat") shape = PokemonShapeSummarySerializer(source="pokemon_shape") evolves_from_species = PokemonSpeciesSummarySerializer() - varieties = serializers.SerializerMethodField('get_pokemon_varieties') + varieties = serializers.SerializerMethodField("get_pokemon_varieties") evolution_chain = EvolutionChainSummarySerializer() - pal_park_encounters = serializers.SerializerMethodField('get_encounters') + pal_park_encounters = serializers.SerializerMethodField("get_encounters") class Meta: model = PokemonSpecies fields = ( - 'id', - 'name', - 'order', - 'gender_rate', - 'capture_rate', - 'base_happiness', - 'is_baby', - 'hatch_counter', - 'has_gender_differences', - 'forms_switchable', - 'growth_rate', - 'pokedex_numbers', - 'egg_groups', - 'color', - 'shape', - 'evolves_from_species', - 'evolution_chain', - 'habitat', - 'generation', - 'names', - 'pal_park_encounters', - 'form_descriptions', - 'flavor_text_entries', - 'genera', - 'varieties' + "id", + "name", + "order", + "gender_rate", + "capture_rate", + "base_happiness", + "is_baby", + "hatch_counter", + "has_gender_differences", + "forms_switchable", + "growth_rate", + "pokedex_numbers", + "egg_groups", + "color", + "shape", + "evolves_from_species", + "evolution_chain", + "habitat", + "generation", + "names", + "pal_park_encounters", + "form_descriptions", + "flavor_text_entries", + "genera", + "varieties", ) def get_pokemon_names(self, obj): species_results = PokemonSpeciesName.objects.filter(pokemon_species=obj) species_serializer = PokemonSpeciesNameSerializer( - species_results, many=True, context=self.context) + species_results, many=True, context=self.context + ) data = species_serializer.data for name in data: - del name['genus'] + del name["genus"] return data def get_pokemon_genera(self, obj): results = PokemonSpeciesName.objects.filter(pokemon_species=obj) - serializer = PokemonSpeciesNameSerializer(results, many=True, context=self.context) + serializer = PokemonSpeciesNameSerializer( + results, many=True, context=self.context + ) data = serializer.data genera = [] for entry in data: - if entry['genus']: - del entry['name'] + if entry["genus"]: + del entry["name"] genera.append(entry) return genera @@ -2799,22 +3036,26 @@ def get_pokemon_egg_groups(self, obj): data = PokemonEggGroupSerializer(results, many=True, context=self.context).data groups = [] for group in data: - groups.append(group['egg_group']) + groups.append(group["egg_group"]) return groups def get_pokemon_varieties(self, obj): results = Pokemon.objects.filter(pokemon_species=obj) - summary_data = PokemonSummarySerializer(results, many=True, context=self.context).data - detail_data = PokemonDetailSerializer(results, many=True, context=self.context).data + summary_data = PokemonSummarySerializer( + results, many=True, context=self.context + ).data + detail_data = PokemonDetailSerializer( + results, many=True, context=self.context + ).data varieties = [] for index, pokemon in enumerate(detail_data): entry = OrderedDict() - entry['is_default'] = pokemon['is_default'] - entry['pokemon'] = summary_data[index] + entry["is_default"] = pokemon["is_default"] + entry["pokemon"] = summary_data[index] varieties.append(entry) return varieties @@ -2822,11 +3063,13 @@ def get_pokemon_varieties(self, obj): def get_encounters(self, obj): pal_park_objects = PalPark.objects.filter(pokemon_species=obj) - parks = PalParkSerializer(pal_park_objects, many=True, context=self.context).data + parks = PalParkSerializer( + pal_park_objects, many=True, context=self.context + ).data encounters = [] for encounter in parks: - del encounter['pokemon_species'] + del encounter["pokemon_species"] encounters.append(encounter) return encounters @@ -2847,50 +3090,49 @@ class PokemonEvolutionSerializer(serializers.ModelSerializer): class Meta: model = PokemonEvolution fields = ( - 'item', - 'trigger', - 'gender', - 'held_item', - 'known_move', - 'known_move_type', - 'location', - 'min_level', - 'min_happiness', - 'min_beauty', - 'min_affection', - 'needs_overworld_rain', - 'party_species', - 'party_type', - 'relative_physical_stats', - 'time_of_day', - 'trade_species', - 'turn_upside_down' + "item", + "trigger", + "gender", + "held_item", + "known_move", + "known_move_type", + "location", + "min_level", + "min_happiness", + "min_beauty", + "min_affection", + "needs_overworld_rain", + "party_species", + "party_type", + "relative_physical_stats", + "time_of_day", + "trade_species", + "turn_upside_down", ) class EvolutionChainDetailSerializer(serializers.ModelSerializer): baby_trigger_item = ItemSummarySerializer() - chain = serializers.SerializerMethodField('build_chain') + chain = serializers.SerializerMethodField("build_chain") class Meta: model = EvolutionChain - fields = ( - 'id', - 'baby_trigger_item', - 'chain' - ) + fields = ("id", "baby_trigger_item", "chain") def build_chain(self, obj): chain_id = obj.id pokemon_objects = PokemonSpecies.objects.filter( - evolution_chain_id=chain_id).order_by('order') + evolution_chain_id=chain_id + ).order_by("order") summary_data = PokemonSpeciesSummarySerializer( - pokemon_objects, many=True, context=self.context).data + pokemon_objects, many=True, context=self.context + ).data ref_data = PokemonSpeciesEvolutionSerializer( - pokemon_objects, many=True, context=self.context).data + pokemon_objects, many=True, context=self.context + ).data chain = entry = OrderedDict() current_evolutions = None @@ -2901,27 +3143,29 @@ def build_chain(self, obj): for index, species in enumerate(ref_data): # If evolves from something - if species['evolves_from_species']: + if species["evolves_from_species"]: # In case this pokemon is one of multiple evolutions a pokemon can make if previous_species: - if previous_species['id'] == species['evolves_from_species']: - current_evolutions = previous_entry['evolves_to'] + if previous_species["id"] == species["evolves_from_species"]: + current_evolutions = previous_entry["evolves_to"] entry = OrderedDict() evolution_object = PokemonEvolution.objects.filter( - evolved_species=species['id']) + evolved_species=species["id"] + ) evolution_data = PokemonEvolutionSerializer( - evolution_object, many=True, context=self.context).data + evolution_object, many=True, context=self.context + ).data current_evolutions.append(entry) - entry['is_baby'] = species['is_baby'] - entry['species'] = summary_data[index] - entry['evolution_details'] = evolution_data or [] - entry['evolves_to'] = [] + entry["is_baby"] = species["is_baby"] + entry["species"] = summary_data[index] + entry["evolution_details"] = evolution_data or [] + entry["evolves_to"] = [] # Keep track of previous entries for complex chaining previous_entry = entry @@ -2937,7 +3181,7 @@ class PokemonDexNumberSerializer(serializers.ModelSerializer): class Meta: model = PokemonDexNumber - fields = ('pokedex', 'entry_number', 'pokemon_species') + fields = ("pokedex", "entry_number", "pokemon_species") ############################ @@ -2949,31 +3193,34 @@ class PokeathlonStatNameSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = PokeathlonStatName - fields = ('name', 'language') + fields = ("name", "language") class PokeathlonStatDetailSerializer(serializers.HyperlinkedModelSerializer): - names = PokeathlonStatNameSerializer(many=True, read_only=True, source="pokeathlonstatname") - affecting_natures = serializers.SerializerMethodField('get_natures_that_affect') + names = PokeathlonStatNameSerializer( + many=True, read_only=True, source="pokeathlonstatname" + ) + affecting_natures = serializers.SerializerMethodField("get_natures_that_affect") class Meta: model = PokeathlonStat - fields = ('id', 'name', 'affecting_natures', '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', [])]) + 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) + del change["pokeathlon_stat"] + if change["max_change"] > 0: + changes["increase"].append(change) else: - changes['decrease'].append(change) + changes["decrease"].append(change) return changes @@ -2987,7 +3234,7 @@ class PokedexNameSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = PokedexName - fields = ('name', 'language') + fields = ("name", "language") class PokedexDescriptionSerializer(serializers.HyperlinkedModelSerializer): @@ -2996,7 +3243,7 @@ class PokedexDescriptionSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = PokedexDescription - fields = ('description', 'language') + fields = ("description", "language") class PokedexDetailSerializer(serializers.ModelSerializer): @@ -3004,25 +3251,36 @@ class PokedexDetailSerializer(serializers.ModelSerializer): region = RegionSummarySerializer() names = PokedexNameSerializer(many=True, read_only=True, source="pokedexname") descriptions = PokedexDescriptionSerializer( - many=True, read_only=True, source="pokedexdescription") - pokemon_entries = serializers.SerializerMethodField('get_pokedex_entries') - version_groups = serializers.SerializerMethodField('get_pokedex_version_groups') + many=True, read_only=True, source="pokedexdescription" + ) + pokemon_entries = serializers.SerializerMethodField("get_pokedex_entries") + version_groups = serializers.SerializerMethodField("get_pokedex_version_groups") class Meta: model = Pokedex fields = ( - 'id', 'name', 'is_main_series', 'descriptions', 'names', - 'pokemon_entries', 'region', 'version_groups' + "id", + "name", + "is_main_series", + "descriptions", + "names", + "pokemon_entries", + "region", + "version_groups", ) def get_pokedex_entries(self, obj): - results = PokemonDexNumber.objects.filter(pokedex=obj).order_by('pokedex_number') - serializer = PokemonDexNumberSerializer(results, many=True, context=self.context) + results = PokemonDexNumber.objects.filter(pokedex=obj).order_by( + "pokedex_number" + ) + serializer = PokemonDexNumberSerializer( + results, many=True, context=self.context + ) data = serializer.data for entry in data: - del entry['pokedex'] + del entry["pokedex"] return data @@ -3030,11 +3288,12 @@ def get_pokedex_version_groups(self, obj): dex_group_objects = PokedexVersionGroup.objects.filter(pokedex=obj) dex_groups = PokedexVersionGroupSerializer( - dex_group_objects, many=True, context=self.context).data + dex_group_objects, many=True, context=self.context + ).data results = [] for dex_group in dex_groups: - results.append(dex_group['version_group']) + results.append(dex_group["version_group"]) return results @@ -3048,7 +3307,7 @@ class VersionNameSerializer(serializers.ModelSerializer): class Meta: model = VersionName - fields = ('name', 'language') + fields = ("name", "language") class VersionDetailSerializer(serializers.ModelSerializer): @@ -3063,44 +3322,55 @@ class VersionDetailSerializer(serializers.ModelSerializer): class Meta: model = Version - fields = ('id', 'name', 'names', 'version_group') + fields = ("id", "name", "names", "version_group") class VersionGroupDetailSerializer(serializers.ModelSerializer): generation = GenerationSummarySerializer() versions = VersionSummarySerializer(many=True, read_only=True, source="version") - regions = serializers.SerializerMethodField('get_version_group_regions') - move_learn_methods = serializers.SerializerMethodField('get_learn_methods') - pokedexes = serializers.SerializerMethodField('get_version_groups_pokedexes') + regions = serializers.SerializerMethodField("get_version_group_regions") + move_learn_methods = serializers.SerializerMethodField("get_learn_methods") + pokedexes = serializers.SerializerMethodField("get_version_groups_pokedexes") class Meta: model = VersionGroup fields = ( - 'id', 'name', 'order', 'generation', 'move_learn_methods', - 'pokedexes', 'regions', 'versions' + "id", + "name", + "order", + "generation", + "move_learn_methods", + "pokedexes", + "regions", + "versions", ) def get_version_group_regions(self, obj): vg_regions = VersionGroupRegion.objects.filter(version_group=obj) - data = VersionGroupRegionSerializer(vg_regions, many=True, context=self.context).data + data = VersionGroupRegionSerializer( + vg_regions, many=True, context=self.context + ).data regions = [] for region in data: - regions.append(region['region']) + regions.append(region["region"]) return regions def get_learn_methods(self, obj): - learn_method_objects = VersionGroupMoveLearnMethod.objects.filter(version_group=obj) + learn_method_objects = VersionGroupMoveLearnMethod.objects.filter( + version_group=obj + ) learn_method_data = VersionGroupMoveLearnMethodSerializer( - learn_method_objects, many=True, context=self.context).data + learn_method_objects, many=True, context=self.context + ).data methods = [] for method in learn_method_data: - methods.append(method['move_learn_method']) + methods.append(method["move_learn_method"]) return methods @@ -3108,10 +3378,11 @@ def get_version_groups_pokedexes(self, obj): dex_group_objects = PokedexVersionGroup.objects.filter(version_group=obj) dex_groups = PokedexVersionGroupSerializer( - dex_group_objects, many=True, context=self.context).data + dex_group_objects, many=True, context=self.context + ).data results = [] for dex_group in dex_groups: - results.append(dex_group['pokedex']) + results.append(dex_group["pokedex"]) return results diff --git a/pokemon_v2/test_models.py b/pokemon_v2/test_models.py index 8b4a7c00f..84f2dbf72 100644 --- a/pokemon_v2/test_models.py +++ b/pokemon_v2/test_models.py @@ -3,13 +3,8 @@ class AbilityTestCase(TestCase): - def setUp(self): - Ability.objects.create( - name="Smell", - generation_id=3, - is_main_series=True - ) + Ability.objects.create(name="Smell", generation_id=3, is_main_series=True) def fields_are_valid(self): smell = Ability.objects.get(name="Smell") diff --git a/pokemon_v2/tests.py b/pokemon_v2/tests.py index d3e6417cd..781ee4757 100644 --- a/pokemon_v2/tests.py +++ b/pokemon_v2/tests.py @@ -5,50 +5,41 @@ # pylint: disable=redefined-builtin -TEST_HOST = 'http://testserver' -MEDIA_HOST = 'https://raw.githubusercontent.com/PokeAPI/sprites/master/' -API_V2 = '/api/v2' +TEST_HOST = "http://testserver" +MEDIA_HOST = "https://raw.githubusercontent.com/PokeAPI/sprites/master/" +API_V2 = "/api/v2" -class APIData(): +class APIData: """ Data Initializers""" # Gender Data @classmethod - def setup_gender_data(cls, name='gndr'): + def setup_gender_data(cls, name="gndr"): - gender = Gender.objects.create( - name=name, - ) + gender = Gender.objects.create(name=name,) gender.save() return gender # Language Data @classmethod - def setup_language_data(cls, name='lang'): + def setup_language_data(cls, name="lang"): language = Language.objects.create( - iso639='ts', - iso3166='tt', - name=name, - official=True, - order=1, + iso639="ts", iso3166="tt", name=name, official=True, order=1, ) language.save() return language @classmethod - def setup_language_name_data(cls, language, name='lang nm'): + def setup_language_name_data(cls, language, name="lang nm"): - local_language = cls.setup_language_data( - name='lang for ' + name) + local_language = cls.setup_language_data(name="lang for " + name) language_name = LanguageName.objects.create( - language=language, - local_language=local_language, - name=name + language=language, local_language=local_language, name=name ) language_name.save() @@ -56,25 +47,20 @@ def setup_language_name_data(cls, language, name='lang nm'): # Region Data @classmethod - def setup_region_data(cls, name='reg'): + def setup_region_data(cls, name="reg"): - region = Region.objects.create( - name=name - ) + region = Region.objects.create(name=name) region.save() return region @classmethod - def setup_region_name_data(cls, region, name='reg nm'): + def setup_region_name_data(cls, region, name="reg nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) region_name = RegionName.objects.create( - region=region, - language=language, - name=name + region=region, language=language, name=name ) region_name.save() @@ -82,29 +68,22 @@ def setup_region_name_data(cls, region, name='reg nm'): # Generation Data @classmethod - def setup_generation_data(cls, region=None, name='gen'): + def setup_generation_data(cls, region=None, name="gen"): - region = region or cls.setup_region_data( - name='reg for ' + name) + region = region or cls.setup_region_data(name="reg for " + name) - generation = Generation.objects.create( - region=region, - name=name - ) + generation = Generation.objects.create(region=region, name=name) generation.save() return generation @classmethod - def setup_generation_name_data(cls, generation, name='gen nm'): + def setup_generation_name_data(cls, generation, name="gen nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) generation_name = GenerationName.objects.create( - generation=generation, - language=language, - name=name + generation=generation, language=language, name=name ) generation_name.save() @@ -112,15 +91,12 @@ def setup_generation_name_data(cls, generation, name='gen nm'): # Version Data @classmethod - def setup_version_group_data(cls, name='ver grp', generation=None): + def setup_version_group_data(cls, name="ver grp", generation=None): - generation = generation or cls.setup_generation_data( - name='gen for ' + name) + generation = generation or cls.setup_generation_data(name="gen for " + name) version_group = VersionGroup.objects.create( - name=name, - generation=generation, - order=1 + name=name, generation=generation, order=1 ) version_group.save() @@ -130,34 +106,27 @@ def setup_version_group_data(cls, name='ver grp', generation=None): def setup_version_group_region_data(cls, version_group=None, region=None): version_group_region = VersionGroupRegion.objects.create( - version_group=version_group, - region=region + version_group=version_group, region=region ) version_group_region.save() return version_group_region @classmethod - def setup_version_data(cls, version_group=None, name='ver'): + def setup_version_data(cls, version_group=None, name="ver"): - version = Version.objects.create( - name=name, - version_group=version_group, - ) + version = Version.objects.create(name=name, version_group=version_group,) version.save() return version @classmethod - def setup_version_name_data(cls, version, name='ver nm'): + def setup_version_name_data(cls, version, name="ver nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) version_name = VersionName.objects.create( - version=version, - language=language, - name=name + version=version, language=language, name=name ) version_name.save() @@ -165,47 +134,38 @@ def setup_version_name_data(cls, version, name='ver nm'): # Ability Data @classmethod - def setup_ability_data(cls, name='ablty', generation=None): + def setup_ability_data(cls, name="ablty", generation=None): - generation = generation or cls.setup_generation_data( - name='gen for ' + name) + generation = generation or cls.setup_generation_data(name="gen for " + name) ability = Ability.objects.create( - name=name, - generation=generation, - is_main_series=False + name=name, generation=generation, is_main_series=False ) ability.save() return ability @classmethod - def setup_ability_name_data(cls, ability, name='ablty nm'): + def setup_ability_name_data(cls, ability, name="ablty nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) ability_name = AbilityName.objects.create( - ability=ability, - language=language, - name=name + ability=ability, language=language, name=name ) ability_name.save() return ability_name @classmethod - def setup_ability_effect_text_data(cls, ability, - short_effect='ablty shrt efct', effect='ablty efct'): + def setup_ability_effect_text_data( + cls, ability, short_effect="ablty shrt efct", effect="ablty efct" + ): - language = cls.setup_language_data( - name='lang for ' + effect) + language = cls.setup_language_data(name="lang for " + effect) ability_effect_text = AbilityEffectText.objects.create( - ability=ability, - language=language, - short_effect=short_effect, - effect=effect + ability=ability, language=language, short_effect=short_effect, effect=effect ) ability_effect_text.save() @@ -214,46 +174,41 @@ def setup_ability_effect_text_data(cls, ability, @classmethod def setup_ability_change_data(cls, ability): - version_group = cls.setup_version_group_data( - name='ver grp for ablty chng') + version_group = cls.setup_version_group_data(name="ver grp for ablty chng") ability_change = AbilityChange.objects.create( - ability=ability, - version_group=version_group + ability=ability, version_group=version_group ) ability_change.save() return ability_change @classmethod - def setup_ability_change_effect_text_data(cls, ability_change, effect='ablty change efct'): + def setup_ability_change_effect_text_data( + cls, ability_change, effect="ablty change efct" + ): - language = cls.setup_language_data( - name='lang for ' + effect) + language = cls.setup_language_data(name="lang for " + effect) ability_change_effect_text = AbilityChangeEffectText.objects.create( - ability_change=ability_change, - language=language, - effect=effect + ability_change=ability_change, language=language, effect=effect ) ability_change_effect_text.save() return ability_change_effect_text @classmethod - def setup_ability_flavor_text_data(cls, ability, flavor_text='ablty flvr txt'): + def setup_ability_flavor_text_data(cls, ability, flavor_text="ablty flvr txt"): - version_group = cls.setup_version_group_data( - name='ver grp for ' + flavor_text) + version_group = cls.setup_version_group_data(name="ver grp for " + flavor_text) - language = cls.setup_language_data( - name='lang for ' + flavor_text) + language = cls.setup_language_data(name="lang for " + flavor_text) ability_flavor_text = AbilityFlavorText.objects.create( ability=ability, version_group=version_group, language=language, - flavor_text=flavor_text + flavor_text=flavor_text, ) ability_flavor_text.save() @@ -263,38 +218,32 @@ def setup_ability_flavor_text_data(cls, ability, flavor_text='ablty flvr txt'): @classmethod def setup_item_attribute_data(cls, name="itm attr"): - item_attribute = ItemAttribute.objects.create( - name=name, - ) + item_attribute = ItemAttribute.objects.create(name=name,) item_attribute.save() return item_attribute @classmethod - def setup_item_attribute_name_data(cls, item_attribute, name='itm attr nm'): + def setup_item_attribute_name_data(cls, item_attribute, name="itm attr nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) item_attribute_name = ItemAttributeName.objects.create( - item_attribute=item_attribute, - name=name, - language=language + item_attribute=item_attribute, name=name, language=language ) item_attribute_name.save() return item_attribute_name @classmethod - def setup_item_attribute_description_data(cls, item_attribute, description='itm attr desc'): + def setup_item_attribute_description_data( + cls, item_attribute, description="itm attr desc" + ): - language = cls.setup_language_data( - name='lang for ' + description) + language = cls.setup_language_data(name="lang for " + description) item_attribute_description = ItemAttributeDescription.objects.create( - item_attribute=item_attribute, - description=description, - language=language + item_attribute=item_attribute, description=description, language=language ) item_attribute_description.save() @@ -303,10 +252,7 @@ def setup_item_attribute_description_data(cls, item_attribute, description='itm @classmethod def setup_item_attribute_map_data(cls, item, item_attribute): - item_attribute_map = ItemAttributeMap( - item=item, - item_attribute=item_attribute - ) + item_attribute_map = ItemAttributeMap(item=item, item_attribute=item_attribute) item_attribute_map.save() return item_attribute_map @@ -314,49 +260,40 @@ def setup_item_attribute_map_data(cls, item, item_attribute): @classmethod def setup_item_fling_effect_data(cls, name="itm flng efct"): - item_fling_effect = ItemFlingEffect.objects.create( - name=name, - ) + item_fling_effect = ItemFlingEffect.objects.create(name=name,) item_fling_effect.save() return item_fling_effect @classmethod - def setup_item_fling_effect_effect_text_data(cls, item_fling_effect, - effect='itm flng efct efct txt'): + def setup_item_fling_effect_effect_text_data( + cls, item_fling_effect, effect="itm flng efct efct txt" + ): - language = cls.setup_language_data( - name='lang for ' + effect) + language = cls.setup_language_data(name="lang for " + effect) item_fling_effect_effect_text = ItemFlingEffectEffectText.objects.create( - item_fling_effect=item_fling_effect, - effect=effect, - language=language + item_fling_effect=item_fling_effect, effect=effect, language=language ) item_fling_effect_effect_text.save() return item_fling_effect_effect_text @classmethod - def setup_item_pocket_data(cls, name='itm pkt'): + def setup_item_pocket_data(cls, name="itm pkt"): - item_pocket = ItemPocket.objects.create( - name=name, - ) + item_pocket = ItemPocket.objects.create(name=name,) item_pocket.save() return item_pocket @classmethod - def setup_item_pocket_name_data(cls, item_pocket, name='itm pkt nm'): + def setup_item_pocket_name_data(cls, item_pocket, name="itm pkt nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) item_pocket_name = ItemPocketName.objects.create( - item_pocket=item_pocket, - name=name, - language=language + item_pocket=item_pocket, name=name, language=language ) item_pocket_name.save() @@ -366,26 +303,21 @@ def setup_item_pocket_name_data(cls, item_pocket, name='itm pkt nm'): def setup_item_category_data(cls, name="itm ctgry", item_pocket=None): item_pocket = item_pocket or cls.setup_item_pocket_data( - name='itm pkt for ' + name) - - item_category = ItemCategory.objects.create( - name=name, - item_pocket=item_pocket + name="itm pkt for " + name ) + + item_category = ItemCategory.objects.create(name=name, item_pocket=item_pocket) item_category.save() return item_category @classmethod - def setup_item_category_name_data(cls, item_category, name='itm ctgry nm'): + def setup_item_category_name_data(cls, item_category, name="itm ctgry nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) item_category_name = ItemCategoryName.objects.create( - item_category=item_category, - name=name, - language=language + item_category=item_category, name=name, language=language ) item_category_name.save() @@ -394,81 +326,76 @@ def setup_item_category_name_data(cls, item_category, name='itm ctgry nm'): @classmethod def setup_item_sprites_data(cls, item, default=True): - sprite_path = '/media/sprites/items/%s.png' + sprite_path = "/media/sprites/items/%s.png" sprites = { - 'default': sprite_path % item.id if default else None, + "default": sprite_path % item.id if default else None, } item_sprites = ItemSprites.objects.create( - item=item, - sprites=json.dumps(sprites) + item=item, sprites=json.dumps(sprites) ) item_sprites.save() return item_sprites @classmethod - def setup_item_data(cls, item_category=None, item_fling_effect=None, - name='itm', cost=100, fling_power=100): + def setup_item_data( + cls, + item_category=None, + item_fling_effect=None, + name="itm", + cost=100, + fling_power=100, + ): item = Item.objects.create( name=name, item_category=item_category, cost=cost, fling_power=fling_power, - item_fling_effect=item_fling_effect + item_fling_effect=item_fling_effect, ) item.save() return item @classmethod - def setup_item_name_data(cls, item, name='itm nm'): + def setup_item_name_data(cls, item, name="itm nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) - item_name = ItemName.objects.create( - item=item, - name=name, - language=language - ) + item_name = ItemName.objects.create(item=item, name=name, language=language) item_name.save() return item_name @classmethod - def setup_item_effect_text_data(cls, item, - short_effect='ablty shrt efct', effect='ablty efct'): + def setup_item_effect_text_data( + cls, item, short_effect="ablty shrt efct", effect="ablty efct" + ): - language = cls.setup_language_data( - name='lang for ' + effect) + language = cls.setup_language_data(name="lang for " + effect) item_effect_text = ItemEffectText.objects.create( - item=item, - language=language, - short_effect=short_effect, - effect=effect + item=item, language=language, short_effect=short_effect, effect=effect ) item_effect_text.save() return item_effect_text @classmethod - def setup_item_flavor_text_data(cls, item, flavor_text='itm flvr txt'): + def setup_item_flavor_text_data(cls, item, flavor_text="itm flvr txt"): - version_group = cls.setup_version_group_data( - name='ver grp for ' + flavor_text) + version_group = cls.setup_version_group_data(name="ver grp for " + flavor_text) - language = cls.setup_language_data( - name='lang for ' + flavor_text) + language = cls.setup_language_data(name="lang for " + flavor_text) item_flavor_text = ItemFlavorText.objects.create( item=item, version_group=version_group, language=language, - flavor_text=flavor_text + flavor_text=flavor_text, ) item_flavor_text.save() @@ -477,13 +404,10 @@ def setup_item_flavor_text_data(cls, item, flavor_text='itm flvr txt'): @classmethod def setup_item_game_index_data(cls, item, game_index=0): - generation = cls.setup_generation_data( - name='gen for itm gm indx') + generation = cls.setup_generation_data(name="gen for itm gm indx") item_game_index = ItemGameIndex.objects.create( - item=item, - game_index=game_index, - generation=generation + item=item, game_index=game_index, generation=generation ) item_game_index.save() @@ -491,25 +415,20 @@ def setup_item_game_index_data(cls, item, game_index=0): # Contest Data @classmethod - def setup_contest_type_data(cls, name='cntst tp'): + def setup_contest_type_data(cls, name="cntst tp"): - contest_type = ContestType.objects.create( - name=name, - ) + contest_type = ContestType.objects.create(name=name,) contest_type.save() return contest_type @classmethod - def setup_contest_type_name_data(cls, contest_type, name='cntst tp nm'): + def setup_contest_type_name_data(cls, contest_type, name="cntst tp nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) contest_type_name = ContestTypeName.objects.create( - language=language, - name=name, - contest_type=contest_type + language=language, name=name, contest_type=contest_type ) contest_type_name.save() @@ -518,40 +437,34 @@ def setup_contest_type_name_data(cls, contest_type, name='cntst tp nm'): @classmethod def setup_contest_effect_data(cls, appeal=2, jam=0): - contest_effect = ContestEffect.objects.create( - appeal=appeal, - jam=jam - ) + contest_effect = ContestEffect.objects.create(appeal=appeal, jam=jam) contest_effect.save() return contest_effect @classmethod - def setup_contest_effect_flavor_text_data(cls, - contest_effect, flavor_text='cntst efct flvr txt'): + def setup_contest_effect_flavor_text_data( + cls, contest_effect, flavor_text="cntst efct flvr txt" + ): - language = cls.setup_language_data( - name='lang for ' + flavor_text) + language = cls.setup_language_data(name="lang for " + flavor_text) contest_effect_flavor_text = ContestEffectFlavorText.objects.create( - language=language, - flavor_text=flavor_text, - contest_effect=contest_effect + language=language, flavor_text=flavor_text, contest_effect=contest_effect ) contest_effect_flavor_text.save() return contest_effect_flavor_text @classmethod - def setup_contest_effect_effect_text_data(cls, contest_effect, effect='cntst efct efct txt'): + def setup_contest_effect_effect_text_data( + cls, contest_effect, effect="cntst efct efct txt" + ): - language = cls.setup_language_data( - name='lang for ' + effect) + language = cls.setup_language_data(name="lang for " + effect) contest_effect_effect_text = ContestEffectEffectText.objects.create( - language=language, - effect=effect, - contest_effect=contest_effect + language=language, effect=effect, contest_effect=contest_effect ) contest_effect_effect_text.save() @@ -560,24 +473,22 @@ def setup_contest_effect_effect_text_data(cls, contest_effect, effect='cntst efc @classmethod def setup_super_contest_effect_data(cls, appeal=2): - super_contest_effect = SuperContestEffect.objects.create( - appeal=appeal, - ) + super_contest_effect = SuperContestEffect.objects.create(appeal=appeal,) super_contest_effect.save() return super_contest_effect @classmethod - def setup_super_contest_effect_flavor_text_data(cls, super_contest_effect, - flavor_text='spr cntst efct flvr txt'): + def setup_super_contest_effect_flavor_text_data( + cls, super_contest_effect, flavor_text="spr cntst efct flvr txt" + ): - language = cls.setup_language_data( - name='lang for ' + flavor_text) + language = cls.setup_language_data(name="lang for " + flavor_text) super_contest_effect_flavor_text = SuperContestEffectFlavorText.objects.create( language=language, flavor_text=flavor_text, - super_contest_effect=super_contest_effect + super_contest_effect=super_contest_effect, ) super_contest_effect_flavor_text.save() @@ -588,51 +499,41 @@ def setup_super_contest_effect_flavor_text_data(cls, super_contest_effect, def setup_berry_flavor_data(cls, contest_type=None, name="bry flvr"): contest_type = contest_type or cls.setup_contest_type_data( - name='cntst tp for bry flvr') - - berry_flavor = BerryFlavor.objects.create( - name=name, - contest_type=contest_type + name="cntst tp for bry flvr" ) + + berry_flavor = BerryFlavor.objects.create(name=name, contest_type=contest_type) berry_flavor.save() return berry_flavor @classmethod - def setup_berry_flavor_name_data(cls, berry_flavor, name='bry flvr nm'): + def setup_berry_flavor_name_data(cls, berry_flavor, name="bry flvr nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) berry_flavor_name = BerryFlavorName.objects.create( - language=language, - name=name, - berry_flavor=berry_flavor + language=language, name=name, berry_flavor=berry_flavor ) berry_flavor_name.save() return berry_flavor_name @classmethod - def setup_berry_firmness_data(cls, name='bry frmns'): + def setup_berry_firmness_data(cls, name="bry frmns"): - berry_firmness = BerryFirmness.objects.create( - name=name, - ) + berry_firmness = BerryFirmness.objects.create(name=name,) berry_firmness.save() return berry_firmness @classmethod - def setup_berry_firmness_name_data(cls, berry_firmness, name='bry frmns nm'): + def setup_berry_firmness_name_data(cls, berry_firmness, name="bry frmns nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) berry_firmness_name = BerryFirmnessName.objects.create( - language=language, - name=name, - berry_firmness=berry_firmness + language=language, name=name, berry_firmness=berry_firmness ) berry_firmness_name.save() @@ -642,24 +543,32 @@ def setup_berry_firmness_name_data(cls, berry_firmness, name='bry frmns nm'): def setup_berry_flavor_map_data(cls, berry, berry_flavor, potency=20): berry_flavor_map = BerryFlavorMap( - berry=berry, - berry_flavor=berry_flavor, - potency=potency + berry=berry, berry_flavor=berry_flavor, potency=potency ) berry_flavor_map.save() return berry_flavor_map @classmethod - def setup_berry_data(cls, berry_firmness=None, item=None, natural_gift_type=None, - name='bry', natural_gift_power=50, size=20, max_harvest=5, - growth_time=2, soil_dryness=15, smoothness=25): + def setup_berry_data( + cls, + berry_firmness=None, + item=None, + natural_gift_type=None, + name="bry", + natural_gift_power=50, + size=20, + max_harvest=5, + growth_time=2, + soil_dryness=15, + smoothness=25, + ): - item = item or cls.setup_item_data( - name='itm for ' + name) + item = item or cls.setup_item_data(name="itm for " + name) berry_firmness = berry_firmness or cls.setup_berry_firmness_data( - name='bry frmns for ' + name) + name="bry frmns for " + name + ) berry = Berry.objects.create( name=name, @@ -671,7 +580,7 @@ def setup_berry_data(cls, berry_firmness=None, item=None, natural_gift_type=None max_harvest=max_harvest, growth_time=growth_time, soil_dryness=soil_dryness, - smoothness=smoothness + smoothness=smoothness, ) berry.save() @@ -679,25 +588,20 @@ def setup_berry_data(cls, berry_firmness=None, item=None, natural_gift_type=None # Egg Group Data @classmethod - def setup_egg_group_data(cls, name='egg grp'): + def setup_egg_group_data(cls, name="egg grp"): - egg_group = EggGroup.objects.create( - name=name, - ) + egg_group = EggGroup.objects.create(name=name,) egg_group.save() return egg_group @classmethod - def setup_egg_group_name_data(cls, egg_group, name='ntr nm'): + def setup_egg_group_name_data(cls, egg_group, name="ntr nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) egg_group_name = EggGroupName.objects.create( - egg_group=egg_group, - language=language, - name=name + egg_group=egg_group, language=language, name=name ) egg_group_name.save() @@ -705,26 +609,22 @@ def setup_egg_group_name_data(cls, egg_group, name='ntr nm'): # Growth Rate Data @classmethod - def setup_growth_rate_data(cls, name='grth rt', formula="pie*1000"): + def setup_growth_rate_data(cls, name="grth rt", formula="pie*1000"): - growth_rate = GrowthRate( - name=name, - formula=formula - ) + growth_rate = GrowthRate(name=name, formula=formula) growth_rate.save() return growth_rate @classmethod - def setup_growth_rate_description_data(cls, growth_rate, description='grth rt desc'): + def setup_growth_rate_description_data( + cls, growth_rate, description="grth rt desc" + ): - language = cls.setup_language_data( - name='lang for ' + description) + language = cls.setup_language_data(name="lang for " + description) growth_rate_description = GrowthRateDescription.objects.create( - growth_rate=growth_rate, - description=description, - language=language + growth_rate=growth_rate, description=description, language=language ) growth_rate_description.save() @@ -732,15 +632,11 @@ def setup_growth_rate_description_data(cls, growth_rate, description='grth rt de # Location Data @classmethod - def setup_location_data(cls, region=None, name='lctn'): + def setup_location_data(cls, region=None, name="lctn"): - region = region or cls.setup_region_data( - name='rgn for ' + name) + region = region or cls.setup_region_data(name="rgn for " + name) - location = Location( - name=name, - region=region - ) + location = Location(name=name, region=region) location.save() return location @@ -748,58 +644,46 @@ def setup_location_data(cls, region=None, name='lctn'): @classmethod def setup_location_game_index_data(cls, location, game_index=0): - generation = cls.setup_generation_data( - name='gen for itm gm indx') + generation = cls.setup_generation_data(name="gen for itm gm indx") location_game_index = LocationGameIndex.objects.create( - location=location, - game_index=game_index, - generation=generation + location=location, game_index=game_index, generation=generation ) location_game_index.save() return location_game_index @classmethod - def setup_location_name_data(cls, location, name='lctn nm'): + def setup_location_name_data(cls, location, name="lctn nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) location_name = LocationName.objects.create( - language=language, - name=name, - location=location + language=language, name=name, location=location ) location_name.save() return location_name @classmethod - def setup_location_area_data(cls, location=None, name='lctn area', game_index=0): + def setup_location_area_data(cls, location=None, name="lctn area", game_index=0): - location = location or cls.setup_location_data( - name='lctn for ' + name) + location = location or cls.setup_location_data(name="lctn for " + name) location_area = LocationArea( - location=location, - name=name, - game_index=game_index + location=location, name=name, game_index=game_index ) location_area.save() return location_area @classmethod - def setup_location_area_name_data(cls, location_area, name='lctn area nm'): + def setup_location_area_name_data(cls, location_area, name="lctn area nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) location_area_name = LocationAreaName.objects.create( - language=language, - name=name, - location_area=location_area + language=language, name=name, location_area=location_area ) location_area_name.save() @@ -807,34 +691,27 @@ def setup_location_area_name_data(cls, location_area, name='lctn area nm'): # Type Data @classmethod - def setup_type_data(cls, name='tp', move_damage_class=None, generation=None): + def setup_type_data(cls, name="tp", move_damage_class=None, generation=None): move_damage_class = move_damage_class or cls.setup_move_damage_class_data( - name="mv dmg cls for " + name) + name="mv dmg cls for " + name + ) - generation = generation or cls.setup_generation_data( - name='rgn for ' + name) + generation = generation or cls.setup_generation_data(name="rgn for " + name) type = Type( - name=name, - generation=generation, - move_damage_class=move_damage_class + name=name, generation=generation, move_damage_class=move_damage_class ) type.save() return type @classmethod - def setup_type_name_data(cls, type, name='tp nm'): + def setup_type_name_data(cls, type, name="tp nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) - type_name = TypeName.objects.create( - language=language, - name=name, - type=type - ) + type_name = TypeName.objects.create(language=language, name=name, type=type) type_name.save() return type_name @@ -842,13 +719,10 @@ def setup_type_name_data(cls, type, name='tp nm'): @classmethod def setup_type_game_index_data(cls, type, game_index=0): - generation = cls.setup_generation_data( - name='gen for tp gm indx') + generation = cls.setup_generation_data(name="gen for tp gm indx") type_game_index = TypeGameIndex.objects.create( - type=type, - game_index=game_index, - generation=generation + type=type, game_index=game_index, generation=generation ) type_game_index.save() @@ -856,75 +730,62 @@ def setup_type_game_index_data(cls, type, game_index=0): # Move Data @classmethod - def setup_move_ailment_data(cls, name='mv almnt'): + def setup_move_ailment_data(cls, name="mv almnt"): - move_ailment = MoveMetaAilment.objects.create( - name=name - ) + move_ailment = MoveMetaAilment.objects.create(name=name) move_ailment.save() return move_ailment @classmethod - def setup_move_ailment_name_data(cls, move_ailment, name='mv almnt nm'): + def setup_move_ailment_name_data(cls, move_ailment, name="mv almnt nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) move_ailment_name = MoveMetaAilmentName.objects.create( - move_meta_ailment=move_ailment, - language=language, - name=name + move_meta_ailment=move_ailment, language=language, name=name ) move_ailment_name.save() return move_ailment_name @classmethod - def setup_move_battle_style_data(cls, name='mv btl stl'): + def setup_move_battle_style_data(cls, name="mv btl stl"): - move_battle_style = MoveBattleStyle.objects.create( - name=name - ) + move_battle_style = MoveBattleStyle.objects.create(name=name) move_battle_style.save() return move_battle_style @classmethod - def setup_move_battle_style_name_data(cls, move_battle_style, name='mv almnt nm'): + def setup_move_battle_style_name_data(cls, move_battle_style, name="mv almnt nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) move_battle_style_name = MoveBattleStyleName.objects.create( - move_battle_style=move_battle_style, - language=language, - name=name + move_battle_style=move_battle_style, language=language, name=name ) move_battle_style_name.save() return move_battle_style_name @classmethod - def setup_move_category_data(cls, name='mv ctgry'): + def setup_move_category_data(cls, name="mv ctgry"): - move_category = MoveMetaCategory.objects.create( - name=name - ) + move_category = MoveMetaCategory.objects.create(name=name) move_category.save() return move_category @classmethod - def setup_move_category_description_data(cls, move_category, description='mv ctgry desc'): + def setup_move_category_description_data( + cls, move_category, description="mv ctgry desc" + ): - language = cls.setup_language_data( - name='lang for ' + description) + language = cls.setup_language_data(name="lang for " + description) move_category_description = MoveMetaCategoryDescription.objects.create( - move_meta_category=move_category, - language=language, - description=description + move_meta_category=move_category, language=language, description=description ) move_category_description.save() @@ -939,139 +800,128 @@ def setup_move_effect_data(cls): return move_effect @classmethod - def setup_move_effect_effect_text_data(cls, move_effect, effect='mv efct efct txt', - short_effect='mv efct shrt efct txt'): + def setup_move_effect_effect_text_data( + cls, + move_effect, + effect="mv efct efct txt", + short_effect="mv efct shrt efct txt", + ): - language = cls.setup_language_data( - name='lang for ' + effect) + language = cls.setup_language_data(name="lang for " + effect) effect_effect_text = MoveEffectEffectText.objects.create( effect=effect, short_effect=short_effect, move_effect=move_effect, - language=language + language=language, ) effect_effect_text.save() return effect_effect_text @classmethod - def setup_move_damage_class_data(cls, name='mv dmg cls'): + def setup_move_damage_class_data(cls, name="mv dmg cls"): - move_damage_class = MoveDamageClass.objects.create( - name=name - ) + move_damage_class = MoveDamageClass.objects.create(name=name) move_damage_class.save() return move_damage_class @classmethod - def setup_move_damage_class_name_data(cls, move_damage_class, name='mv dmg cls nm'): + def setup_move_damage_class_name_data(cls, move_damage_class, name="mv dmg cls nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) move_damage_class_name = MoveDamageClassName.objects.create( - move_damage_class=move_damage_class, - language=language, - name=name + move_damage_class=move_damage_class, language=language, name=name ) move_damage_class_name.save() return move_damage_class_name @classmethod - def setup_move_damage_class_description_data(cls, move_damage_class, - description='mv dmg cls desc'): + def setup_move_damage_class_description_data( + cls, move_damage_class, description="mv dmg cls desc" + ): - language = cls.setup_language_data( - name='lang for ' + description) + language = cls.setup_language_data(name="lang for " + description) move_damage_class_description = MoveDamageClassDescription.objects.create( move_damage_class=move_damage_class, language=language, - description=description + description=description, ) move_damage_class_description.save() return move_damage_class_description @classmethod - def setup_move_learn_method_data(cls, name='mv lrn mthd'): + def setup_move_learn_method_data(cls, name="mv lrn mthd"): - move_learn_method = MoveLearnMethod.objects.create( - name=name - ) + move_learn_method = MoveLearnMethod.objects.create(name=name) move_learn_method.save() return move_learn_method @classmethod - def setup_move_learn_method_name_data(cls, move_learn_method, name='mv lrn mthd nm'): + def setup_move_learn_method_name_data( + cls, move_learn_method, name="mv lrn mthd nm" + ): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) move_learn_method_name = MoveLearnMethodName.objects.create( - move_learn_method=move_learn_method, - language=language, - name=name + move_learn_method=move_learn_method, language=language, name=name ) move_learn_method_name.save() return move_learn_method_name @classmethod - def setup_move_learn_method_description_data(cls, move_learn_method, - description='mv lrn mthd desc'): + def setup_move_learn_method_description_data( + cls, move_learn_method, description="mv lrn mthd desc" + ): - language = cls.setup_language_data( - name='lang for ' + description) + language = cls.setup_language_data(name="lang for " + description) move_learn_method_description = MoveLearnMethodDescription.objects.create( move_learn_method=move_learn_method, language=language, - description=description + description=description, ) move_learn_method_description.save() return move_learn_method_description @classmethod - def setup_move_target_data(cls, name='mv trgt'): + def setup_move_target_data(cls, name="mv trgt"): - move_target = MoveTarget.objects.create( - name=name - ) + move_target = MoveTarget.objects.create(name=name) move_target.save() return move_target @classmethod - def setup_move_target_name_data(cls, move_target, name='mv trgt nm'): + def setup_move_target_name_data(cls, move_target, name="mv trgt nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) move_target_name = MoveTargetName.objects.create( - move_target=move_target, - language=language, - name=name + move_target=move_target, language=language, name=name ) move_target_name.save() return move_target_name @classmethod - def setup_move_target_description_data(cls, move_target, description='mv trgt desc'): + def setup_move_target_description_data( + cls, move_target, description="mv trgt desc" + ): - language = cls.setup_language_data( - name='lang for ' + description) + language = cls.setup_language_data(name="lang for " + description) move_target_description = MoveTargetDescription.objects.create( - move_target=move_target, - language=language, - description=description + move_target=move_target, language=language, description=description ) move_target_description.save() @@ -1081,20 +931,19 @@ def setup_move_target_description_data(cls, move_target, description='mv trgt de def setup_contest_combo_data(cls, first_move, second_move): contest_combo = ContestCombo.objects.create( - first_move=first_move, - second_move=second_move + first_move=first_move, second_move=second_move ) contest_combo.save() return contest_combo @classmethod - def setup_version_group_move_learn_method_data(cls, version_group=None, - move_learn_method=None): + def setup_version_group_move_learn_method_data( + cls, version_group=None, move_learn_method=None + ): version_group_move_learn_method = VersionGroupMoveLearnMethod.objects.create( - version_group=version_group, - move_learn_method=move_learn_method + version_group=version_group, move_learn_method=move_learn_method ) version_group_move_learn_method.save() @@ -1104,55 +953,68 @@ def setup_version_group_move_learn_method_data(cls, version_group=None, def setup_super_contest_combo_data(cls, first_move, second_move): super_contest_combo = SuperContestCombo.objects.create( - first_move=first_move, - second_move=second_move + first_move=first_move, second_move=second_move ) super_contest_combo.save() return super_contest_combo @classmethod - def setup_move_flavor_text_data(cls, move, flavor_text='move flvr txt'): - version_group = cls.setup_version_group_data( - name='ver grp for ' + flavor_text) + def setup_move_flavor_text_data(cls, move, flavor_text="move flvr txt"): + version_group = cls.setup_version_group_data(name="ver grp for " + flavor_text) - language = cls.setup_language_data( - name='lang for ' + flavor_text) + language = cls.setup_language_data(name="lang for " + flavor_text) move_flavor_text = MoveFlavorText.objects.create( move=move, version_group=version_group, language=language, - flavor_text=flavor_text + flavor_text=flavor_text, ) move_flavor_text.save() return move_flavor_text @classmethod - def setup_move_data(cls, contest_type=None, contest_effect=None, super_contest_effect=None, - generation=None, move_damage_class=None, move_effect=None, - move_target=None, type=None, name='mv', power=20, pp=20, - accuracy=80, priority=0, effect_chance=50): + def setup_move_data( + cls, + contest_type=None, + contest_effect=None, + super_contest_effect=None, + generation=None, + move_damage_class=None, + move_effect=None, + move_target=None, + type=None, + name="mv", + power=20, + pp=20, + accuracy=80, + priority=0, + effect_chance=50, + ): contest_type = contest_type or cls.setup_contest_type_data( - name='cntst tp for ' + name) + name="cntst tp for " + name + ) contest_effect = contest_effect or cls.setup_contest_effect_data() - super_contest_effect = super_contest_effect or cls.setup_super_contest_effect_data() + super_contest_effect = ( + super_contest_effect or cls.setup_super_contest_effect_data() + ) - generation = generation or cls.setup_generation_data( - name='gen for ' + name) + generation = generation or cls.setup_generation_data(name="gen for " + name) - type = type or cls.setup_type_data( - name='tp for ' + name) + type = type or cls.setup_type_data(name="tp for " + name) move_target = move_target or cls.setup_move_target_data( - name='mv trgt for ' + name) + name="mv trgt for " + name + ) move_damage_class = move_damage_class or cls.setup_move_damage_class_data( - name='mv dmg cls for ' + name) + name="mv dmg cls for " + name + ) move = Move.objects.create( name=name, @@ -1168,32 +1030,39 @@ def setup_move_data(cls, contest_type=None, contest_effect=None, super_contest_e move_effect_chance=effect_chance, contest_type=contest_type, contest_effect=contest_effect, - super_contest_effect=super_contest_effect + super_contest_effect=super_contest_effect, ) move.save() return move @classmethod - def setup_move_name_data(cls, move, name='mv nm'): + def setup_move_name_data(cls, move, name="mv nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) - move_name = MoveName.objects.create( - move=move, - language=language, - name=name - ) + move_name = MoveName.objects.create(move=move, language=language, name=name) move_name.save() return move_name @classmethod - def setup_move_meta_data(cls, move, move_ailment=None, move_category=None, - min_hits=1, max_hits=1, min_turns=1, max_turns=1, - drain=0, healing=0, crit_rate=0, ailment_chance=0, - flinch_chance=0, stat_chance=0): + def setup_move_meta_data( + cls, + move, + move_ailment=None, + move_category=None, + min_hits=1, + max_hits=1, + min_turns=1, + max_turns=1, + drain=0, + healing=0, + crit_rate=0, + ailment_chance=0, + flinch_chance=0, + stat_chance=0, + ): move_ailment = move_ailment or cls.setup_move_ailment_data() @@ -1212,19 +1081,28 @@ def setup_move_meta_data(cls, move, move_ailment=None, move_category=None, crit_rate=crit_rate, ailment_chance=ailment_chance, flinch_chance=flinch_chance, - stat_chance=stat_chance + stat_chance=stat_chance, ) move_meta.save() return move_meta @classmethod - def setup_move_change_data(cls, move=None, type=None, move_effect=None, - version_group=None, power=20, pp=20, accuracy=80, - effect_chance=50): + def setup_move_change_data( + cls, + move=None, + type=None, + move_effect=None, + version_group=None, + power=20, + pp=20, + accuracy=80, + effect_chance=50, + ): version_group = version_group or cls.setup_version_group_data( - name='ver grp for mv chng') + name="ver grp for mv chng" + ) move_change = MoveChange.objects.create( move=move, @@ -1234,7 +1112,7 @@ def setup_move_change_data(cls, move=None, type=None, move_effect=None, pp=pp, accuracy=accuracy, move_effect=move_effect, - move_effect_chance=effect_chance + move_effect_chance=effect_chance, ) move_change.save() @@ -1243,28 +1121,24 @@ def setup_move_change_data(cls, move=None, type=None, move_effect=None, @classmethod def setup_move_effect_change_data(cls, move_effect=None): - version_group = cls.setup_version_group_data( - name='ver grp for mv chng') + version_group = cls.setup_version_group_data(name="ver grp for mv chng") move_effect_change = MoveEffectChange.objects.create( - move_effect=move_effect, - version_group=version_group + move_effect=move_effect, version_group=version_group ) move_effect_change.save() return move_effect_change @classmethod - def setup_move_effect_change_effect_text_data(cls, move_effect_change=None, - effect='mv efct chng efct txt'): + def setup_move_effect_change_effect_text_data( + cls, move_effect_change=None, effect="mv efct chng efct txt" + ): - language = cls.setup_language_data( - name='lang for ' + effect) + language = cls.setup_language_data(name="lang for " + effect) move_effect_change_effect_text = MoveEffectChangeEffectText.objects.create( - move_effect_change=move_effect_change, - language=language, - effect=effect + move_effect_change=move_effect_change, language=language, effect=effect ) move_effect_change_effect_text.save() @@ -1272,32 +1146,28 @@ def setup_move_effect_change_effect_text_data(cls, move_effect_change=None, # Stat Data @classmethod - def setup_stat_data(cls, name='stt', is_battle_only=True, game_index=1): + def setup_stat_data(cls, name="stt", is_battle_only=True, game_index=1): move_damage_class = cls.setup_move_damage_class_data( - name='mv dmg cls for ' + name) + name="mv dmg cls for " + name + ) stat = Stat.objects.create( name=name, is_battle_only=is_battle_only, move_damage_class=move_damage_class, - game_index=game_index + game_index=game_index, ) stat.save() return stat @classmethod - def setup_stat_name_data(cls, stat, name='stt nm'): + def setup_stat_name_data(cls, stat, name="stt nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) - stat_name = StatName.objects.create( - stat=stat, - language=language, - name=name - ) + stat_name = StatName.objects.create(stat=stat, language=language, name=name) stat_name.save() return stat_name @@ -1305,38 +1175,30 @@ def setup_stat_name_data(cls, stat, name='stt nm'): @classmethod def setup_move_stat_change_data(cls, move, stat=None, change=1): - stat = stat or cls.setup_stat_data( - name='stt for mv') + stat = stat or cls.setup_stat_data(name="stt for mv") move_stat_change = MoveMetaStatChange.objects.create( - move=move, - stat=stat, - change=change + move=move, stat=stat, change=change ) move_stat_change.save() return move_stat_change @classmethod - def setup_pokeathlon_stat_data(cls, name='pkathln stt'): + def setup_pokeathlon_stat_data(cls, name="pkathln stt"): - pokeathlon_stat = PokeathlonStat.objects.create( - name=name - ) + pokeathlon_stat = PokeathlonStat.objects.create(name=name) pokeathlon_stat.save() return pokeathlon_stat @classmethod - def setup_pokeathlon_stat_name_data(cls, pokeathlon_stat, name='pkathln stt nm'): + def setup_pokeathlon_stat_name_data(cls, pokeathlon_stat, name="pkathln stt nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) pokeathlon_stat_name = PokeathlonStatName.objects.create( - pokeathlon_stat=pokeathlon_stat, - language=language, - name=name + pokeathlon_stat=pokeathlon_stat, language=language, name=name ) pokeathlon_stat_name.save() @@ -1346,27 +1208,22 @@ def setup_pokeathlon_stat_name_data(cls, pokeathlon_stat, name='pkathln stt nm') @classmethod def setup_characteristic_data(cls, gene_mod_5=0, stat=None): - stat = stat or cls.setup_stat_data( - name='stt for char') + stat = stat or cls.setup_stat_data(name="stt for char") - characteristic = Characteristic.objects.create( - stat=stat, - gene_mod_5=gene_mod_5 - ) + characteristic = Characteristic.objects.create(stat=stat, gene_mod_5=gene_mod_5) characteristic.save() return characteristic @classmethod - def setup_characteristic_description_data(cls, characteristic, description='char desc'): + def setup_characteristic_description_data( + cls, characteristic, description="char desc" + ): - language = cls.setup_language_data( - name='lang for ' + description) + language = cls.setup_language_data(name="lang for " + description) characteristic_description = CharacteristicDescription.objects.create( - characteristic=characteristic, - language=language, - description=description + characteristic=characteristic, language=language, description=description ) characteristic_description.save() @@ -1374,8 +1231,15 @@ def setup_characteristic_description_data(cls, characteristic, description='char # Nature Data @classmethod - def setup_nature_data(cls, decreased_stat=None, increased_stat=None, - likes_flavor=None, hates_flavor=None, name='ntr', game_index=1): + def setup_nature_data( + cls, + decreased_stat=None, + increased_stat=None, + likes_flavor=None, + hates_flavor=None, + name="ntr", + game_index=1, + ): nature = Nature.objects.create( name=name, @@ -1383,48 +1247,50 @@ def setup_nature_data(cls, decreased_stat=None, increased_stat=None, increased_stat=increased_stat, hates_flavor=hates_flavor, likes_flavor=likes_flavor, - game_index=game_index + game_index=game_index, ) nature.save() return nature @classmethod - def setup_nature_name_data(cls, nature, name='ntr nm'): + def setup_nature_name_data(cls, nature, name="ntr nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) nature_name = NatureName.objects.create( - nature=nature, - language=language, - name=name + nature=nature, language=language, name=name ) nature_name.save() return nature_name @classmethod - def setup_nature_pokeathlon_stat_data(cls, nature=None, pokeathlon_stat=None, max_change=1): + def setup_nature_pokeathlon_stat_data( + cls, nature=None, pokeathlon_stat=None, max_change=1 + ): nature_pokeathlon_stat = NaturePokeathlonStat.objects.create( - nature=nature, - pokeathlon_stat=pokeathlon_stat, - max_change=max_change, + nature=nature, pokeathlon_stat=pokeathlon_stat, max_change=max_change, ) nature_pokeathlon_stat.save() return nature_pokeathlon_stat @classmethod - def setup_nature_battle_style_preference_data(cls, nature=None, move_battle_style=None, - low_hp_preference=10, high_hp_preference=20): + def setup_nature_battle_style_preference_data( + cls, + nature=None, + move_battle_style=None, + low_hp_preference=10, + high_hp_preference=20, + ): nature_battle_style_preference = NatureBattleStylePreference.objects.create( nature=nature, move_battle_style=move_battle_style, low_hp_preference=low_hp_preference, - high_hp_preference=high_hp_preference + high_hp_preference=high_hp_preference, ) nature_battle_style_preference.save() @@ -1432,44 +1298,34 @@ def setup_nature_battle_style_preference_data(cls, nature=None, move_battle_styl # Pokedex Data @classmethod - def setup_pokedex_data(cls, region=None, name='pkdx'): + def setup_pokedex_data(cls, region=None, name="pkdx"): - region = region or cls.setup_region_data( - name='rgn for ' + name) + region = region or cls.setup_region_data(name="rgn for " + name) - pokedex = Pokedex.objects.create( - name=name, - region=region, - ) + pokedex = Pokedex.objects.create(name=name, region=region,) pokedex.save() return pokedex @classmethod - def setup_pokedex_name_data(cls, pokedex, name='pkdx nm'): + def setup_pokedex_name_data(cls, pokedex, name="pkdx nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) pokedex_name = PokedexName.objects.create( - pokedex=pokedex, - language=language, - name=name + pokedex=pokedex, language=language, name=name ) pokedex_name.save() return pokedex_name @classmethod - def setup_pokedex_description_data(cls, pokedex, description='pkdx desc'): + def setup_pokedex_description_data(cls, pokedex, description="pkdx desc"): - language = cls.setup_language_data( - name='lang for ' + description) + language = cls.setup_language_data(name="lang for " + description) pokedex_description = PokedexDescription.objects.create( - pokedex=pokedex, - language=language, - description=description + pokedex=pokedex, language=language, description=description ) pokedex_description.save() @@ -1479,11 +1335,11 @@ def setup_pokedex_description_data(cls, pokedex, description='pkdx desc'): def setup_pokedex_version_group_data(cls, pokedex, version_group=None): version_group = version_group or cls.setup_language_data( - name='ver grp for pkdx') + name="ver grp for pkdx" + ) pokedex_version_group = PokedexVersionGroup.objects.create( - pokedex=pokedex, - version_group=version_group + pokedex=pokedex, version_group=version_group ) pokedex_version_group.save() @@ -1491,140 +1347,141 @@ def setup_pokedex_version_group_data(cls, pokedex, version_group=None): # Pokemon Data @classmethod - def setup_pokemon_habitat_data(cls, name='pkm hbtt'): + def setup_pokemon_habitat_data(cls, name="pkm hbtt"): - pokemon_habitat = PokemonHabitat.objects.create( - name=name, - ) + pokemon_habitat = PokemonHabitat.objects.create(name=name,) pokemon_habitat.save() return pokemon_habitat @classmethod - def setup_pokemon_habitat_name_data(cls, pokemon_habitat, name='pkm hbtt nm'): + def setup_pokemon_habitat_name_data(cls, pokemon_habitat, name="pkm hbtt nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) pokemon_habitat_name = PokemonHabitatName.objects.create( - pokemon_habitat=pokemon_habitat, - language=language, - name=name + pokemon_habitat=pokemon_habitat, language=language, name=name ) pokemon_habitat_name.save() return pokemon_habitat_name @classmethod - def setup_pokemon_color_data(cls, name='pkm clr'): + def setup_pokemon_color_data(cls, name="pkm clr"): - pokemon_color = PokemonColor.objects.create( - name=name, - ) + pokemon_color = PokemonColor.objects.create(name=name,) pokemon_color.save() return pokemon_color @classmethod - def setup_pokemon_color_name_data(cls, pokemon_color, name='pkm clr nm'): + def setup_pokemon_color_name_data(cls, pokemon_color, name="pkm clr nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) pokemon_color_name = PokemonColorName.objects.create( - pokemon_color=pokemon_color, - language=language, - name=name + pokemon_color=pokemon_color, language=language, name=name ) pokemon_color_name.save() return pokemon_color_name @classmethod - def setup_pokemon_shape_data(cls, name='pkm shp'): + def setup_pokemon_shape_data(cls, name="pkm shp"): - pokemon_shape = PokemonShape.objects.create( - name=name, - ) + pokemon_shape = PokemonShape.objects.create(name=name,) pokemon_shape.save() return pokemon_shape @classmethod - def setup_pokemon_shape_name_data(cls, pokemon_shape, name='pkm shp nm', - awesome_name='pkm shp awsm nm'): + def setup_pokemon_shape_name_data( + cls, pokemon_shape, name="pkm shp nm", awesome_name="pkm shp awsm nm" + ): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) pokemon_shape_name = PokemonShapeName.objects.create( pokemon_shape=pokemon_shape, language=language, name=name, - awesome_name=awesome_name + awesome_name=awesome_name, ) pokemon_shape_name.save() return pokemon_shape_name @classmethod - def setup_pokemon_species_form_description_data(cls, pokemon_species=None, - description='pkm spcs frm dscr'): + def setup_pokemon_species_form_description_data( + cls, pokemon_species=None, description="pkm spcs frm dscr" + ): - language = cls.setup_language_data( - name='lang for ' + description) + language = cls.setup_language_data(name="lang for " + description) pokemon_species_form_description = PokemonSpeciesDescription.objects.create( - pokemon_species=pokemon_species, - language=language, - description=description + pokemon_species=pokemon_species, language=language, description=description ) pokemon_species_form_description.save() return pokemon_species_form_description @classmethod - def setup_pokemon_species_flavor_text_data(cls, pokemon_species, - flavor_text='pkmn spcs flvr txt'): + def setup_pokemon_species_flavor_text_data( + cls, pokemon_species, flavor_text="pkmn spcs flvr txt" + ): - version = cls.setup_version_data( - name='ver for ' + flavor_text) + version = cls.setup_version_data(name="ver for " + flavor_text) - language = cls.setup_language_data( - name='lang for ' + flavor_text) + language = cls.setup_language_data(name="lang for " + flavor_text) pokemon_species_flavor_text = PokemonSpeciesFlavorText.objects.create( pokemon_species=pokemon_species, version=version, language=language, - flavor_text=flavor_text + flavor_text=flavor_text, ) pokemon_species_flavor_text.save() return pokemon_species_flavor_text @classmethod - def setup_pokemon_species_data(cls, generation=None, evolves_from_species=None, - evolution_chain=None, growth_rate=None, pokemon_color=None, - pokemon_habitat=None, pokemon_shape=None, name='pkm spcs', - gender_rate=50, capture_rate=20, base_happiness=20, - is_baby=False, hatch_counter=10, has_gender_differences=True, - forms_switchable=False, order=1): - - generation = generation or cls.setup_generation_data( - name='gen for ' + name) + def setup_pokemon_species_data( + cls, + generation=None, + evolves_from_species=None, + evolution_chain=None, + growth_rate=None, + pokemon_color=None, + pokemon_habitat=None, + pokemon_shape=None, + name="pkm spcs", + gender_rate=50, + capture_rate=20, + base_happiness=20, + is_baby=False, + hatch_counter=10, + has_gender_differences=True, + forms_switchable=False, + order=1, + ): + + generation = generation or cls.setup_generation_data(name="gen for " + name) growth_rate = growth_rate or cls.setup_growth_rate_data( - name='grth rt for ' + name) + name="grth rt for " + name + ) pokemon_shape = pokemon_shape or cls.setup_pokemon_shape_data( - name='pkmn shp for ' + name) + name="pkmn shp for " + name + ) pokemon_color = pokemon_color or cls.setup_pokemon_color_data( - name='pkmn clr for ' + name) + name="pkmn clr for " + name + ) pokemon_habitat = pokemon_habitat or cls.setup_pokemon_habitat_data( - name='pkm hbtt for ' + name) + name="pkm hbtt for " + name + ) pokemon_species = PokemonSpecies.objects.create( name=name, @@ -1642,24 +1499,21 @@ def setup_pokemon_species_data(cls, generation=None, evolves_from_species=None, has_gender_differences=has_gender_differences, growth_rate=growth_rate, forms_switchable=forms_switchable, - order=order + order=order, ) pokemon_species.save() return pokemon_species @classmethod - def setup_pokemon_species_name_data(cls, pokemon_species, name='pkmn spcs nm', - genus='pkmn spcs gns'): + def setup_pokemon_species_name_data( + cls, pokemon_species, name="pkmn spcs nm", genus="pkmn spcs gns" + ): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) pokemon_species_name = PokemonSpeciesName.objects.create( - pokemon_species=pokemon_species, - language=language, - name=name, - genus=genus + pokemon_species=pokemon_species, language=language, name=name, genus=genus ) pokemon_species_name.save() @@ -1671,7 +1525,7 @@ def setup_pokemon_dex_entry_data(cls, pokemon_species, pokedex, entry_number=100 dex_number = PokemonDexNumber( pokemon_species=pokemon_species, pokedex=pokedex, - pokedex_number=entry_number + pokedex_number=entry_number, ) dex_number.save() @@ -1681,19 +1535,27 @@ def setup_pokemon_dex_entry_data(cls, pokemon_species, pokedex, entry_number=100 def setup_pokemon_egg_group_data(cls, pokemon_species, egg_group): pokemon_egg_group = PokemonEggGroup( - pokemon_species=pokemon_species, - egg_group=egg_group + pokemon_species=pokemon_species, egg_group=egg_group ) pokemon_egg_group.save() return pokemon_egg_group @classmethod - def setup_pokemon_data(cls, pokemon_species=None, name='pkmn', - height=100, weight=100, base_experience=0, order=1, is_default=False): + def setup_pokemon_data( + cls, + pokemon_species=None, + name="pkmn", + height=100, + weight=100, + base_experience=0, + order=1, + is_default=False, + ): pokemon_species = pokemon_species or cls.setup_pokemon_species_data( - name='pkmn spcs for ' + name) + name="pkmn spcs for " + name + ) pokemon = Pokemon.objects.create( name=name, @@ -1702,7 +1564,7 @@ def setup_pokemon_data(cls, pokemon_species=None, name='pkmn', weight=weight, base_experience=base_experience, order=order, - is_default=is_default + is_default=is_default, ) pokemon.save() @@ -1711,13 +1573,10 @@ def setup_pokemon_data(cls, pokemon_species=None, name='pkmn', @classmethod def setup_pokemon_game_index_data(cls, pokemon, game_index=0): - version = cls.setup_version_data( - name='ver for pkmn gm indx') + version = cls.setup_version_data(name="ver for pkmn gm indx") pokemon_game_index = PokemonGameIndex.objects.create( - pokemon=pokemon, - game_index=game_index, - version=version + pokemon=pokemon, game_index=game_index, version=version ) pokemon_game_index.save() @@ -1725,34 +1584,44 @@ def setup_pokemon_game_index_data(cls, pokemon, game_index=0): @classmethod def setup_pokemon_form_sprites_data( - cls, pokemon_form, - front_default=True, front_shiny=False, - back_default=False, back_shiny=False): + cls, + pokemon_form, + front_default=True, + front_shiny=False, + back_default=False, + back_shiny=False, + ): - sprite_path = '/media/sprites/pokemon/%s.png' + sprite_path = "/media/sprites/pokemon/%s.png" sprites = { - 'front_default': sprite_path % pokemon_form.id if front_default else None, - 'front_shiny': sprite_path % pokemon_form.id if front_shiny else None, - 'back_default': sprite_path % pokemon_form.id if back_default else None, - 'back_shiny': sprite_path % pokemon_form.id if back_shiny else None, + "front_default": sprite_path % pokemon_form.id if front_default else None, + "front_shiny": sprite_path % pokemon_form.id if front_shiny else None, + "back_default": sprite_path % pokemon_form.id if back_default else None, + "back_shiny": sprite_path % pokemon_form.id if back_shiny else None, } pokemon_form_sprites = PokemonFormSprites.objects.create( - pokemon_form=pokemon_form, - sprites=json.dumps(sprites) + pokemon_form=pokemon_form, sprites=json.dumps(sprites) ) pokemon_form_sprites.save() return pokemon_form_sprites @classmethod - def setup_pokemon_form_data(cls, pokemon, name='pkmn nrml frm', - form_name='nrml', order=1, is_default=True, - is_battle_only=True, form_order=1, is_mega=False): + def setup_pokemon_form_data( + cls, + pokemon, + name="pkmn nrml frm", + form_name="nrml", + order=1, + is_default=True, + is_battle_only=True, + form_order=1, + is_mega=False, + ): - version_group = cls.setup_version_group_data( - name='ver grp for ' + name) + version_group = cls.setup_version_group_data(name="ver grp for " + name) pokemon_form = PokemonForm( name=name, @@ -1763,7 +1632,7 @@ def setup_pokemon_form_data(cls, pokemon, name='pkmn nrml frm', is_battle_only=is_battle_only, is_mega=is_mega, form_order=form_order, - order=order + order=order, ) pokemon_form.save() @@ -1772,13 +1641,10 @@ def setup_pokemon_form_data(cls, pokemon, name='pkmn nrml frm', @classmethod def setup_pokemon_ability_data(cls, pokemon, ability=None, is_hidden=False, slot=1): - ability = ability or cls.setup_ability_data(name='ablty for pkmn') + ability = ability or cls.setup_ability_data(name="ablty for pkmn") pokemon_ability = PokemonAbility( - pokemon=pokemon, - ability=ability, - is_hidden=is_hidden, - slot=slot + pokemon=pokemon, ability=ability, is_hidden=is_hidden, slot=slot ) pokemon_ability.save() @@ -1787,14 +1653,10 @@ def setup_pokemon_ability_data(cls, pokemon, ability=None, is_hidden=False, slot @classmethod def setup_pokemon_stat_data(cls, pokemon, base_stat=10, effort=10): - stat = cls.setup_stat_data( - name='stt for pkmn') + stat = cls.setup_stat_data(name="stt for pkmn") pokemon_stat = PokemonStat( - pokemon=pokemon, - stat=stat, - base_stat=base_stat, - effort=effort + pokemon=pokemon, stat=stat, base_stat=base_stat, effort=effort ) pokemon_stat.save() @@ -1803,14 +1665,9 @@ def setup_pokemon_stat_data(cls, pokemon, base_stat=10, effort=10): @classmethod def setup_pokemon_type_data(cls, pokemon, type=None, slot=1): - type = type or cls.setup_type_data( - name='tp for pkmn') + type = type or cls.setup_type_data(name="tp for pkmn") - pokemon_type = PokemonType( - pokemon=pokemon, - type=type, - slot=slot - ) + pokemon_type = PokemonType(pokemon=pokemon, type=type, slot=slot) pokemon_type.save() return pokemon_type @@ -1818,20 +1675,14 @@ def setup_pokemon_type_data(cls, pokemon, type=None, slot=1): @classmethod def setup_pokemon_item_data(cls, pokemon=None, item=None, version=None, rarity=50): - item = item or cls.setup_item_data( - name='itm for pkmn') + item = item or cls.setup_item_data(name="itm for pkmn") - pokemon = pokemon or cls.setup_pokemon_data( - name='pkmn for pkmn') + pokemon = pokemon or cls.setup_pokemon_data(name="pkmn for pkmn") - version = version or cls.setup_version_data( - name='ver grp for pkmn itm') + version = version or cls.setup_version_data(name="ver grp for pkmn itm") pokemon_item = PokemonItem( - pokemon=pokemon, - version=version, - item=item, - rarity=rarity + pokemon=pokemon, version=version, item=item, rarity=rarity ) pokemon_item.save() @@ -1841,7 +1692,8 @@ def setup_pokemon_item_data(cls, pokemon=None, item=None, version=None, rarity=5 def setup_pokemon_move_data(cls, pokemon, move, version_group, level=0, order=1): move_learn_method = cls.setup_move_learn_method_data( - name='mv lrn mthd for pkmn') + name="mv lrn mthd for pkmn" + ) pokemon_move = PokemonMove.objects.create( pokemon=pokemon, @@ -1849,7 +1701,7 @@ def setup_pokemon_move_data(cls, pokemon, move, version_group, level=0, order=1) move=move, move_learn_method=move_learn_method, level=level, - order=order + order=order, ) pokemon_move.save() @@ -1857,28 +1709,37 @@ def setup_pokemon_move_data(cls, pokemon, move, version_group, level=0, order=1) @classmethod def setup_pokemon_sprites_data( - cls, pokemon, front_default=True, - front_female=False, front_shiny=False, - front_shiny_female=False, back_default=False, - back_female=False, back_shiny=False, - back_shiny_female=False): - - sprite_path = '/media/sprites/pokemon/%s.png' + cls, + pokemon, + front_default=True, + front_female=False, + front_shiny=False, + front_shiny_female=False, + back_default=False, + back_female=False, + back_shiny=False, + back_shiny_female=False, + ): + + sprite_path = "/media/sprites/pokemon/%s.png" sprites = { - 'front_default': sprite_path % pokemon.id if front_default else None, - 'front_female': sprite_path % pokemon.id if front_female else None, - 'front_shiny': sprite_path % pokemon.id if front_shiny else None, - 'front_shiny_female': sprite_path % pokemon.id if front_shiny_female else None, - 'back_default': sprite_path % pokemon.id if back_default else None, - 'back_female': sprite_path % pokemon.id if back_female else None, - 'back_shiny': sprite_path % pokemon.id if back_shiny else None, - 'back_shiny_female': sprite_path % pokemon.id if back_shiny_female else None, + "front_default": sprite_path % pokemon.id if front_default else None, + "front_female": sprite_path % pokemon.id if front_female else None, + "front_shiny": sprite_path % pokemon.id if front_shiny else None, + "front_shiny_female": sprite_path % pokemon.id + if front_shiny_female + else None, + "back_default": sprite_path % pokemon.id if back_default else None, + "back_female": sprite_path % pokemon.id if back_female else None, + "back_shiny": sprite_path % pokemon.id if back_shiny else None, + "back_shiny_female": sprite_path % pokemon.id + if back_shiny_female + else None, } pokemon_sprites = PokemonSprites.objects.create( - pokemon=pokemon, - sprites=json.dumps(sprites) + pokemon=pokemon, sprites=json.dumps(sprites) ) pokemon_sprites.save() @@ -1886,25 +1747,20 @@ def setup_pokemon_sprites_data( # Evolution Data @classmethod - def setup_evolution_trigger_data(cls, name='evltn trgr'): + def setup_evolution_trigger_data(cls, name="evltn trgr"): - evolution_trigger = EvolutionTrigger.objects.create( - name=name, - ) + evolution_trigger = EvolutionTrigger.objects.create(name=name,) evolution_trigger.save() return evolution_trigger @classmethod - def setup_evolution_trigger_name_data(cls, evolution_trigger, name='evltn trgr nm'): + def setup_evolution_trigger_name_data(cls, evolution_trigger, name="evltn trgr nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) evolution_trigger_name = EvolutionTriggerName.objects.create( - evolution_trigger=evolution_trigger, - language=language, - name=name + evolution_trigger=evolution_trigger, language=language, name=name ) evolution_trigger_name.save() @@ -1921,19 +1777,36 @@ def setup_evolution_chain_data(cls, baby_trigger_item=None): return evolution_chain @classmethod - def setup_pokemon_evolution_data(cls, evolved_species=None, evolution_trigger=None, - party_species=None, trade_species=None, evolution_item=None, - party_type=None, min_level=0, gender=None, location=None, - held_item=None, time_of_day='', known_move=None, - known_move_type=None, min_happiness=0, min_beauty=0, - min_affection=0, relative_physical_stats=0, - needs_overworld_rain=False, turn_upside_down=False): + def setup_pokemon_evolution_data( + cls, + evolved_species=None, + evolution_trigger=None, + party_species=None, + trade_species=None, + evolution_item=None, + party_type=None, + min_level=0, + gender=None, + location=None, + held_item=None, + time_of_day="", + known_move=None, + known_move_type=None, + min_happiness=0, + min_beauty=0, + min_affection=0, + relative_physical_stats=0, + needs_overworld_rain=False, + turn_upside_down=False, + ): evolved_species = evolved_species or cls.setup_pokemon_species_data( - name='pkmn spcs for pkmn evltn') + name="pkmn spcs for pkmn evltn" + ) evolution_trigger = evolution_trigger or cls.setup_evolution_trigger_data( - name='evltn trgr for pkmn evltn') + name="evltn trgr for pkmn evltn" + ) pokemon_evolution = PokemonEvolution.objects.create( evolved_species=evolved_species, @@ -1954,7 +1827,7 @@ def setup_pokemon_evolution_data(cls, evolved_species=None, evolution_trigger=No party_type=party_type, trade_species=trade_species, needs_overworld_rain=needs_overworld_rain, - turn_upside_down=turn_upside_down + turn_upside_down=turn_upside_down, ) pokemon_evolution.save() @@ -1962,91 +1835,82 @@ def setup_pokemon_evolution_data(cls, evolved_species=None, evolution_trigger=No # Encounter Data @classmethod - def setup_encounter_method_data(cls, name='encntr mthd', order=0): + def setup_encounter_method_data(cls, name="encntr mthd", order=0): - encounter_method = EncounterMethod.objects.create( - name=name, - order=order - ) + encounter_method = EncounterMethod.objects.create(name=name, order=order) encounter_method.save() return encounter_method @classmethod - def setup_encounter_method_name_data(cls, encounter_method, name='encntr mthd nm'): + def setup_encounter_method_name_data(cls, encounter_method, name="encntr mthd nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) encounter_method_name = EncounterMethodName.objects.create( - encounter_method=encounter_method, - language=language, - name=name + encounter_method=encounter_method, language=language, name=name ) encounter_method_name.save() return encounter_method_name @classmethod - def setup_encounter_condition_data(cls, name='encntr cndtn'): + def setup_encounter_condition_data(cls, name="encntr cndtn"): - encounter_condition = EncounterCondition.objects.create( - name=name - ) + encounter_condition = EncounterCondition.objects.create(name=name) encounter_condition.save() return encounter_condition @classmethod - def setup_encounter_condition_name_data(cls, encounter_condition, name='encntr cndtn nm'): + def setup_encounter_condition_name_data( + cls, encounter_condition, name="encntr cndtn nm" + ): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) encounter_condition_name = EncounterConditionName.objects.create( - encounter_condition=encounter_condition, - language=language, - name=name + encounter_condition=encounter_condition, language=language, name=name ) encounter_condition_name.save() return encounter_condition_name @classmethod - def setup_encounter_condition_value_data(cls, encounter_condition, - name='encntr cndtn vlu', is_default=False): + def setup_encounter_condition_value_data( + cls, encounter_condition, name="encntr cndtn vlu", is_default=False + ): encounter_condition_value = EncounterConditionValue.objects.create( - encounter_condition=encounter_condition, - name=name, - is_default=is_default + encounter_condition=encounter_condition, name=name, is_default=is_default ) encounter_condition_value.save() return encounter_condition_value @classmethod - def setup_encounter_condition_value_name_data(cls, encounter_condition_value, - name='encntr cndtn vlu nm'): + def setup_encounter_condition_value_name_data( + cls, encounter_condition_value, name="encntr cndtn vlu nm" + ): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) encounter_condition_value_name = EncounterConditionValueName.objects.create( encounter_condition_value=encounter_condition_value, language=language, - name=name + name=name, ) encounter_condition_value_name.save() return encounter_condition_value_name @classmethod - def setup_encounter_condition_value_map_data(cls, encounter, encounter_condition_value): + def setup_encounter_condition_value_map_data( + cls, encounter, encounter_condition_value + ): encounter_condition_value_map = EncounterConditionValue.objects.create( - encounter=encounter, - encounter_condition_value=encounter_condition_value + encounter=encounter, encounter_condition_value=encounter_condition_value ) encounter_condition_value_map.save() @@ -2056,51 +1920,58 @@ def setup_encounter_condition_value_map_data(cls, encounter, encounter_condition def setup_encounter_slot_data(cls, encounter_method=None, slot=0, rarity=0): encounter_method = encounter_method or cls.setup_encounter_method_data( - name='encntr mthd for encntr slt') + name="encntr mthd for encntr slt" + ) - version_group = cls.setup_version_group_data( - name='ver grp for encntr slt') + version_group = cls.setup_version_group_data(name="ver grp for encntr slt") encounter_slot = EncounterSlot.objects.create( encounter_method=encounter_method, version_group=version_group, slot=slot, - rarity=rarity + rarity=rarity, ) encounter_slot.save() return encounter_slot @classmethod - def setup_location_area_encounter_rate_data(cls, location_area, encounter_method, rate=0): + def setup_location_area_encounter_rate_data( + cls, location_area, encounter_method, rate=0 + ): - version = cls.setup_version_data( - name='ver for lctn area') + version = cls.setup_version_data(name="ver for lctn area") location_area_encounter_rate = LocationAreaEncounterRate.objects.create( encounter_method=encounter_method, version=version, location_area=location_area, - rate=rate + rate=rate, ) location_area_encounter_rate.save() return location_area_encounter_rate @classmethod - def setup_encounter_data(cls, location_area=None, encounter_slot=None, - pokemon=None, version=None, min_level=10, max_level=15): + def setup_encounter_data( + cls, + location_area=None, + encounter_slot=None, + pokemon=None, + version=None, + min_level=10, + max_level=15, + ): location_area = location_area or cls.setup_location_area_data( - name='ver for encntr') + name="ver for encntr" + ) encounter_slot = encounter_slot or cls.setup_encounter_slot_data() - pokemon = pokemon or cls.setup_pokemon_data( - name='pkmn for encntr') + pokemon = pokemon or cls.setup_pokemon_data(name="pkmn for encntr") - version = version or cls.setup_version_data( - name='ver for encntr') + version = version or cls.setup_version_data(name="ver for encntr") encounter = Encounter.objects.create( version=version, @@ -2108,7 +1979,7 @@ def setup_encounter_data(cls, location_area=None, encounter_slot=None, encounter_slot=encounter_slot, pokemon=pokemon, min_level=min_level, - max_level=max_level + max_level=max_level, ) encounter.save() @@ -2116,41 +1987,39 @@ def setup_encounter_data(cls, location_area=None, encounter_slot=None, # Pal Park Data @classmethod - def setup_pal_park_area_data(cls, name='pl prk area'): + def setup_pal_park_area_data(cls, name="pl prk area"): - pal_park_area = PalParkArea.objects.create( - name=name - ) + pal_park_area = PalParkArea.objects.create(name=name) pal_park_area.save() return pal_park_area @classmethod - def setup_pal_park_area_name_data(cls, pal_park_area, name='pl prk area nm'): + def setup_pal_park_area_name_data(cls, pal_park_area, name="pl prk area nm"): - language = cls.setup_language_data( - name='lang for ' + name) + language = cls.setup_language_data(name="lang for " + name) pal_park_area_name = PalParkAreaName.objects.create( - pal_park_area=pal_park_area, - language=language, - name=name + pal_park_area=pal_park_area, language=language, name=name ) pal_park_area_name.save() return pal_park_area_name @classmethod - def setup_pal_park_data(cls, pokemon_species=None, pal_park_area=None, base_score=10, rate=10): + def setup_pal_park_data( + cls, pokemon_species=None, pal_park_area=None, base_score=10, rate=10 + ): pal_park_area = pal_park_area or cls.setup_pal_park_area_data( - name='pl prk area') + name="pl prk area" + ) pal_park = PalPark.objects.create( base_score=base_score, pokemon_species=pokemon_species, pal_park_area=pal_park_area, - rate=rate + rate=rate, ) pal_park.save() @@ -2162,2392 +2031,3349 @@ class APITests(APIData, APITestCase): # Gender Tests def test_gender_api(self): - gender = self.setup_gender_data(name='female') - pokemon_species = self.setup_pokemon_species_data(name='pkmn spcs for gndr', gender_rate=8) - evolved_species = self.setup_pokemon_species_data(name='evlvd pkmn spcs for gndr') - self.setup_pokemon_evolution_data(evolved_species=evolved_species, gender=gender) + gender = self.setup_gender_data(name="female") + pokemon_species = self.setup_pokemon_species_data( + name="pkmn spcs for gndr", gender_rate=8 + ) + evolved_species = self.setup_pokemon_species_data( + name="evlvd pkmn spcs for gndr" + ) + self.setup_pokemon_evolution_data( + evolved_species=evolved_species, gender=gender + ) - response = self.client.get('{}/gender/{}/'.format(API_V2, gender.pk)) + response = self.client.get("{}/gender/{}/".format(API_V2, gender.pk)) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], gender.pk) - self.assertEqual(response.data['name'], gender.name) + self.assertEqual(response.data["id"], gender.pk) + self.assertEqual(response.data["name"], gender.name) # species params self.assertEqual( - response.data['pokemon_species_details'][0]['rate'], pokemon_species.gender_rate) + response.data["pokemon_species_details"][0]["rate"], + pokemon_species.gender_rate, + ) self.assertEqual( - response.data['pokemon_species_details'][0]['pokemon_species']['name'], - pokemon_species.name) + response.data["pokemon_species_details"][0]["pokemon_species"]["name"], + pokemon_species.name, + ) self.assertEqual( - response.data['pokemon_species_details'][0]['pokemon_species']['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, pokemon_species.pk)) + response.data["pokemon_species_details"][0]["pokemon_species"]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, pokemon_species.pk), + ) self.assertEqual( - response.data['required_for_evolution'][0]['name'], evolved_species.name) + response.data["required_for_evolution"][0]["name"], evolved_species.name + ) self.assertEqual( - response.data['required_for_evolution'][0]['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, evolved_species.pk)) + response.data["required_for_evolution"][0]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, evolved_species.pk), + ) # Language Tests def test_language_api(self): - language = self.setup_language_data(name='base lang') - language_name = self.setup_language_name_data(language, name='base lang name') + language = self.setup_language_data(name="base lang") + language_name = self.setup_language_name_data(language, name="base lang name") - response = self.client.get('{}/language/{}/'.format(API_V2, language.pk)) + response = self.client.get("{}/language/{}/".format(API_V2, language.pk)) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], language.pk) - self.assertEqual(response.data['iso639'], language.iso639) - self.assertEqual(response.data['iso3166'], language.iso3166) - self.assertEqual(response.data['name'], language.name) - self.assertEqual(response.data['official'], language.official) + self.assertEqual(response.data["id"], language.pk) + self.assertEqual(response.data["iso639"], language.iso639) + self.assertEqual(response.data["iso3166"], language.iso3166) + self.assertEqual(response.data["name"], language.name) + self.assertEqual(response.data["official"], language.official) # name params - self.assertEqual(response.data['names'][0]['name'], language_name.name) + self.assertEqual(response.data["names"][0]["name"], language_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], language_name.local_language.name) + response.data["names"][0]["language"]["name"], + language_name.local_language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], '{}{}/language/{}/'.format( - TEST_HOST, API_V2, language_name.local_language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, language_name.local_language.pk + ), + ) # Region Tests def test_region_api(self): - region = self.setup_region_data(name='base reg') - region_name = self.setup_region_name_data(region, name='base reg name') + region = self.setup_region_data(name="base reg") + region_name = self.setup_region_name_data(region, name="base reg name") location = self.setup_location_data(region=region, name="lctn for base rgn") - generation = self.setup_generation_data(region=region, name="gnrtn for base rgn") + generation = self.setup_generation_data( + region=region, name="gnrtn for base rgn" + ) pokedex = self.setup_pokedex_data(region=region, name="pkdx for base rgn") version_group = self.setup_version_group_data(name="ver grp for base rgn") self.setup_version_group_region_data(region=region, version_group=version_group) - response = self.client.get('{}/region/{}/'.format(API_V2, region.pk)) + response = self.client.get("{}/region/{}/".format(API_V2, region.pk)) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], region.pk) - self.assertEqual(response.data['name'], region.name) + self.assertEqual(response.data["id"], region.pk) + self.assertEqual(response.data["name"], region.name) # name params - self.assertEqual(response.data['names'][0]['name'], region_name.name) - self.assertEqual(response.data['names'][0]['language']['name'], region_name.language.name) + self.assertEqual(response.data["names"][0]["name"], region_name.name) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, region_name.language.pk)) + response.data["names"][0]["language"]["name"], region_name.language.name + ) + self.assertEqual( + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, region_name.language.pk), + ) # location params - self.assertEqual(response.data['locations'][0]['name'], location.name) + self.assertEqual(response.data["locations"][0]["name"], location.name) self.assertEqual( - response.data['locations'][0]['url'], - '{}{}/location/{}/'.format(TEST_HOST, API_V2, location.pk)) + response.data["locations"][0]["url"], + "{}{}/location/{}/".format(TEST_HOST, API_V2, location.pk), + ) # generation params - self.assertEqual(response.data['main_generation']['name'], generation.name) + self.assertEqual(response.data["main_generation"]["name"], generation.name) self.assertEqual( - response.data['main_generation']['url'], - '{}{}/generation/{}/'.format(TEST_HOST, API_V2, generation.pk)) + response.data["main_generation"]["url"], + "{}{}/generation/{}/".format(TEST_HOST, API_V2, generation.pk), + ) # pokedex params - self.assertEqual(response.data['pokedexes'][0]['name'], pokedex.name) + self.assertEqual(response.data["pokedexes"][0]["name"], pokedex.name) self.assertEqual( - response.data['pokedexes'][0]['url'], - '{}{}/pokedex/{}/'.format(TEST_HOST, API_V2, pokedex.pk)) + response.data["pokedexes"][0]["url"], + "{}{}/pokedex/{}/".format(TEST_HOST, API_V2, pokedex.pk), + ) # version group params - self.assertEqual(response.data['version_groups'][0]['name'], version_group.name) + self.assertEqual(response.data["version_groups"][0]["name"], version_group.name) self.assertEqual( - response.data['version_groups'][0]['url'], - '{}{}/version-group/{}/'.format(TEST_HOST, API_V2, version_group.pk)) + response.data["version_groups"][0]["url"], + "{}{}/version-group/{}/".format(TEST_HOST, API_V2, version_group.pk), + ) # Generation Tests def test_generation_api(self): - generation = self.setup_generation_data(name='base gen') - generation_name = self.setup_generation_name_data(generation, name='base reg name') - ability = self.setup_ability_data(name='ablty for base gen', generation=generation) - move = self.setup_move_data(name='mv for base gen', generation=generation) + generation = self.setup_generation_data(name="base gen") + generation_name = self.setup_generation_name_data( + generation, name="base reg name" + ) + ability = self.setup_ability_data( + name="ablty for base gen", generation=generation + ) + move = self.setup_move_data(name="mv for base gen", generation=generation) pokemon_species = self.setup_pokemon_species_data( - name='pkmn spcs for base gen', generation=generation) - type = self.setup_type_data(name='tp for base gen', generation=generation) + name="pkmn spcs for base gen", generation=generation + ) + type = self.setup_type_data(name="tp for base gen", generation=generation) version_group = self.setup_version_group_data( - name='ver grp for base gen', generation=generation) + name="ver grp for base gen", generation=generation + ) - response = self.client.get('{}/generation/{}/'.format(API_V2, generation.pk)) + response = self.client.get("{}/generation/{}/".format(API_V2, generation.pk)) # base params - self.assertEqual(response.data['id'], generation.pk) - self.assertEqual(response.data['name'], generation.name) + self.assertEqual(response.data["id"], generation.pk) + self.assertEqual(response.data["name"], generation.name) # name params - self.assertEqual(response.data['names'][0]['name'], generation_name.name) + self.assertEqual(response.data["names"][0]["name"], generation_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], generation_name.language.name) + response.data["names"][0]["language"]["name"], generation_name.language.name + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, generation_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, generation_name.language.pk), + ) # region params - self.assertEqual(response.data['main_region']['name'], generation.region.name) + self.assertEqual(response.data["main_region"]["name"], generation.region.name) self.assertEqual( - response.data['main_region']['url'], - '{}{}/region/{}/'.format(TEST_HOST, API_V2, generation.region.pk)) + response.data["main_region"]["url"], + "{}{}/region/{}/".format(TEST_HOST, API_V2, generation.region.pk), + ) # ability params - self.assertEqual(response.data['abilities'][0]['name'], ability.name) + self.assertEqual(response.data["abilities"][0]["name"], ability.name) self.assertEqual( - response.data['abilities'][0]['url'], - '{}{}/ability/{}/'.format(TEST_HOST, API_V2, ability.pk)) + response.data["abilities"][0]["url"], + "{}{}/ability/{}/".format(TEST_HOST, API_V2, ability.pk), + ) # move params - self.assertEqual(response.data['moves'][0]['name'], move.name) + self.assertEqual(response.data["moves"][0]["name"], move.name) self.assertEqual( - response.data['moves'][0]['url'], - '{}{}/move/{}/'.format(TEST_HOST, API_V2, move.pk)) + response.data["moves"][0]["url"], + "{}{}/move/{}/".format(TEST_HOST, API_V2, move.pk), + ) # type params - self.assertEqual(response.data['types'][0]['name'], type.name) + self.assertEqual(response.data["types"][0]["name"], type.name) self.assertEqual( - response.data['types'][0]['url'], - '{}{}/type/{}/'.format(TEST_HOST, API_V2, type.pk)) + response.data["types"][0]["url"], + "{}{}/type/{}/".format(TEST_HOST, API_V2, type.pk), + ) # species params - self.assertEqual(response.data['pokemon_species'][0]['name'], pokemon_species.name) self.assertEqual( - response.data['pokemon_species'][0]['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, pokemon_species.pk)) + response.data["pokemon_species"][0]["name"], pokemon_species.name + ) + self.assertEqual( + response.data["pokemon_species"][0]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, pokemon_species.pk), + ) # version group params - self.assertEqual(response.data['version_groups'][0]['name'], version_group.name) + self.assertEqual(response.data["version_groups"][0]["name"], version_group.name) self.assertEqual( - response.data['version_groups'][0]['url'], - '{}{}/version-group/{}/'.format(TEST_HOST, API_V2, version_group.pk)) + response.data["version_groups"][0]["url"], + "{}{}/version-group/{}/".format(TEST_HOST, API_V2, version_group.pk), + ) # Version Tests def test_version_api(self): - version_group = self.setup_version_group_data(name='ver grp for ver') - version = self.setup_version_data(name='base ver', version_group=version_group) - version_name = self.setup_version_name_data(version, name='base ver name') + version_group = self.setup_version_group_data(name="ver grp for ver") + version = self.setup_version_data(name="base ver", version_group=version_group) + version_name = self.setup_version_name_data(version, name="base ver name") - response = self.client.get('{}/version/{}/'.format(API_V2, version.pk)) + response = self.client.get("{}/version/{}/".format(API_V2, version.pk)) # base params - self.assertEqual(response.data['id'], version.pk) - self.assertEqual(response.data['name'], version.name) + self.assertEqual(response.data["id"], version.pk) + self.assertEqual(response.data["name"], version.name) # name params - self.assertEqual(response.data['names'][0]['name'], version_name.name) - self.assertEqual(response.data['names'][0]['language']['name'], version_name.language.name) + self.assertEqual(response.data["names"][0]["name"], version_name.name) + self.assertEqual( + response.data["names"][0]["language"]["name"], version_name.language.name + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, version_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, version_name.language.pk), + ) # version group params - self.assertEqual(response.data['version_group']['name'], version.version_group.name) self.assertEqual( - response.data['version_group']['url'], - '{}{}/version-group/{}/'.format(TEST_HOST, API_V2, version.version_group.pk)) + response.data["version_group"]["name"], version.version_group.name + ) + self.assertEqual( + response.data["version_group"]["url"], + "{}{}/version-group/{}/".format( + TEST_HOST, API_V2, version.version_group.pk + ), + ) def test_version_group_api(self): - version_group = self.setup_version_group_data(name='base ver grp') - move_learn_method = self.setup_move_learn_method_data(name='mv lrn mthd for ') + version_group = self.setup_version_group_data(name="base ver grp") + move_learn_method = self.setup_move_learn_method_data(name="mv lrn mthd for ") self.setup_version_group_move_learn_method_data( - version_group=version_group, move_learn_method=move_learn_method) - region = self.setup_region_data(name='rgn for ver grp') - version = self.setup_version_data(name='ver for base ver grp', version_group=version_group) + version_group=version_group, move_learn_method=move_learn_method + ) + region = self.setup_region_data(name="rgn for ver grp") + version = self.setup_version_data( + name="ver for base ver grp", version_group=version_group + ) self.setup_version_group_region_data(version_group=version_group, region=region) - pokedex = self.setup_pokedex_data(name='pkdx for base ver group') - self.setup_pokedex_version_group_data(pokedex=pokedex, version_group=version_group) + pokedex = self.setup_pokedex_data(name="pkdx for base ver group") + self.setup_pokedex_version_group_data( + pokedex=pokedex, version_group=version_group + ) - response = self.client.get('{}/version-group/{}/'.format(API_V2, version_group.pk)) + response = self.client.get( + "{}/version-group/{}/".format(API_V2, version_group.pk) + ) # base params - self.assertEqual(response.data['id'], version_group.pk) - self.assertEqual(response.data['name'], version_group.name) - self.assertEqual(response.data['order'], version_group.order) + self.assertEqual(response.data["id"], version_group.pk) + self.assertEqual(response.data["name"], version_group.name) + self.assertEqual(response.data["order"], version_group.order) # version params - self.assertEqual(response.data['versions'][0]['name'], version.name) + self.assertEqual(response.data["versions"][0]["name"], version.name) self.assertEqual( - response.data['versions'][0]['url'], - '{}{}/version/{}/'.format(TEST_HOST, API_V2, version.pk)) + response.data["versions"][0]["url"], + "{}{}/version/{}/".format(TEST_HOST, API_V2, version.pk), + ) # generation params - self.assertEqual(response.data['generation']['name'], version_group.generation.name) self.assertEqual( - response.data['generation']['url'], - '{}{}/generation/{}/'.format(TEST_HOST, API_V2, version_group.generation.pk)) + response.data["generation"]["name"], version_group.generation.name + ) + self.assertEqual( + response.data["generation"]["url"], + "{}{}/generation/{}/".format( + TEST_HOST, API_V2, version_group.generation.pk + ), + ) # region params - self.assertEqual(response.data['regions'][0]['name'], region.name) + self.assertEqual(response.data["regions"][0]["name"], region.name) self.assertEqual( - response.data['regions'][0]['url'], - '{}{}/region/{}/'.format(TEST_HOST, API_V2, region.pk)) + response.data["regions"][0]["url"], + "{}{}/region/{}/".format(TEST_HOST, API_V2, region.pk), + ) # move learn method params - self.assertEqual(response.data['move_learn_methods'][0]['name'], move_learn_method.name) self.assertEqual( - response.data['move_learn_methods'][0]['url'], - '{}{}/move-learn-method/{}/'.format(TEST_HOST, API_V2, move_learn_method.pk)) + response.data["move_learn_methods"][0]["name"], move_learn_method.name + ) + self.assertEqual( + response.data["move_learn_methods"][0]["url"], + "{}{}/move-learn-method/{}/".format( + TEST_HOST, API_V2, move_learn_method.pk + ), + ) # pokedex group - self.assertEqual(response.data['pokedexes'][0]['name'], pokedex.name) + self.assertEqual(response.data["pokedexes"][0]["name"], pokedex.name) self.assertEqual( - response.data['pokedexes'][0]['url'], - '{}{}/pokedex/{}/'.format(TEST_HOST, API_V2, pokedex.pk)) + response.data["pokedexes"][0]["url"], + "{}{}/pokedex/{}/".format(TEST_HOST, API_V2, pokedex.pk), + ) # Egg Group Tests def test_egg_group_api(self): - egg_group = self.setup_egg_group_data(name='base egg grp') - egg_group_name = self.setup_egg_group_name_data(egg_group, name='base egg grp name') + egg_group = self.setup_egg_group_data(name="base egg grp") + egg_group_name = self.setup_egg_group_name_data( + egg_group, name="base egg grp name" + ) pokemon_species = self.setup_pokemon_species_data() - self.setup_pokemon_egg_group_data(pokemon_species=pokemon_species, egg_group=egg_group) + self.setup_pokemon_egg_group_data( + pokemon_species=pokemon_species, egg_group=egg_group + ) - response = self.client.get('{}/egg-group/{}/'.format(API_V2, egg_group.pk)) + response = self.client.get("{}/egg-group/{}/".format(API_V2, egg_group.pk)) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], egg_group.pk) - self.assertEqual(response.data['name'], egg_group.name) + self.assertEqual(response.data["id"], egg_group.pk) + self.assertEqual(response.data["name"], egg_group.name) # name params - self.assertEqual(response.data['names'][0]['name'], egg_group_name.name) + self.assertEqual(response.data["names"][0]["name"], egg_group_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], egg_group_name.language.name) + response.data["names"][0]["language"]["name"], egg_group_name.language.name + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, egg_group_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, egg_group_name.language.pk), + ) # species params - self.assertEqual(response.data['pokemon_species'][0]['name'], pokemon_species.name) self.assertEqual( - response.data['pokemon_species'][0]['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, pokemon_species.pk)) + response.data["pokemon_species"][0]["name"], pokemon_species.name + ) + self.assertEqual( + response.data["pokemon_species"][0]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, pokemon_species.pk), + ) # Ability Tests def test_ability_api(self): - ability = self.setup_ability_data(name='base ablty') - ability_name = self.setup_ability_name_data(ability, name='base ablty name') - ability_effect_text = self.setup_ability_effect_text_data(ability, effect='base ablty efct') + ability = self.setup_ability_data(name="base ablty") + ability_name = self.setup_ability_name_data(ability, name="base ablty name") + ability_effect_text = self.setup_ability_effect_text_data( + ability, effect="base ablty efct" + ) ability_flavor_text = self.setup_ability_flavor_text_data( - ability, flavor_text='base flvr txt') + ability, flavor_text="base flvr txt" + ) ability_change = self.setup_ability_change_data(ability) ability_change_effect_text = self.setup_ability_change_effect_text_data( - ability_change, effect='base ablty chng efct') - pokemon = self.setup_pokemon_data(name='pkmn for ablty') - pokemon_ability = self.setup_pokemon_ability_data(ability=ability, pokemon=pokemon) + ability_change, effect="base ablty chng efct" + ) + pokemon = self.setup_pokemon_data(name="pkmn for ablty") + pokemon_ability = self.setup_pokemon_ability_data( + ability=ability, pokemon=pokemon + ) - response = self.client.get('{}/ability/{}/'.format(API_V2, ability.pk)) + response = self.client.get("{}/ability/{}/".format(API_V2, ability.pk)) # base params - self.assertEqual(response.data['id'], ability.pk) - self.assertEqual(response.data['name'], ability.name) - self.assertEqual(response.data['is_main_series'], ability.is_main_series) + self.assertEqual(response.data["id"], ability.pk) + self.assertEqual(response.data["name"], ability.name) + self.assertEqual(response.data["is_main_series"], ability.is_main_series) # name params - self.assertEqual(response.data['names'][0]['name'], ability_name.name) - self.assertEqual(response.data['names'][0]['language']['name'], ability_name.language.name) + self.assertEqual(response.data["names"][0]["name"], ability_name.name) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, ability_name.language.pk)) + response.data["names"][0]["language"]["name"], ability_name.language.name + ) + self.assertEqual( + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, ability_name.language.pk), + ) # description params - self.assertEqual(response.data['effect_entries'][0]['effect'], ability_effect_text.effect) self.assertEqual( - response.data['effect_entries'][0]['short_effect'], ability_effect_text.short_effect) + response.data["effect_entries"][0]["effect"], ability_effect_text.effect + ) + self.assertEqual( + response.data["effect_entries"][0]["short_effect"], + ability_effect_text.short_effect, + ) self.assertEqual( - response.data['effect_entries'][0]['language']['name'], - ability_effect_text.language.name) + response.data["effect_entries"][0]["language"]["name"], + ability_effect_text.language.name, + ) self.assertEqual( - response.data['effect_entries'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, ability_effect_text.language.pk)) + response.data["effect_entries"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, ability_effect_text.language.pk + ), + ) # flavor text params self.assertEqual( - response.data['flavor_text_entries'][0]['flavor_text'], ability_flavor_text.flavor_text) + response.data["flavor_text_entries"][0]["flavor_text"], + ability_flavor_text.flavor_text, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['version_group']['name'], - ability_flavor_text.version_group.name) + response.data["flavor_text_entries"][0]["version_group"]["name"], + ability_flavor_text.version_group.name, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['language']['name'], - - ability_flavor_text.language.name) + response.data["flavor_text_entries"][0]["language"]["name"], + ability_flavor_text.language.name, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, ability_flavor_text.language.pk)) + response.data["flavor_text_entries"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, ability_flavor_text.language.pk + ), + ) # generation params - self.assertEqual(response.data['generation']['name'], ability.generation.name) + self.assertEqual(response.data["generation"]["name"], ability.generation.name) self.assertEqual( - response.data['generation']['url'], '{}{}/generation/{}/'.format( - TEST_HOST, API_V2, ability.generation.pk)) + response.data["generation"]["url"], + "{}{}/generation/{}/".format(TEST_HOST, API_V2, ability.generation.pk), + ) # change params self.assertEqual( - response.data['effect_changes'][0]['version_group']['name'], - ability_change.version_group.name) + response.data["effect_changes"][0]["version_group"]["name"], + ability_change.version_group.name, + ) self.assertEqual( - response.data['effect_changes'][0]['version_group']['url'], - '{}{}/version-group/{}/'.format(TEST_HOST, API_V2, ability_change.version_group.pk)) + response.data["effect_changes"][0]["version_group"]["url"], + "{}{}/version-group/{}/".format( + TEST_HOST, API_V2, ability_change.version_group.pk + ), + ) self.assertEqual( - response.data['effect_changes'][0]['effect_entries'][0]['effect'], - ability_change_effect_text.effect) + response.data["effect_changes"][0]["effect_entries"][0]["effect"], + ability_change_effect_text.effect, + ) self.assertEqual( - response.data['effect_changes'][0]['effect_entries'][0]['language']['name'], - ability_change_effect_text.language.name) + response.data["effect_changes"][0]["effect_entries"][0]["language"]["name"], + ability_change_effect_text.language.name, + ) self.assertEqual( - response.data['effect_changes'][0]['effect_entries'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, ability_change_effect_text.language.pk)) + response.data["effect_changes"][0]["effect_entries"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, ability_change_effect_text.language.pk + ), + ) # pokemon params - self.assertEqual(response.data['pokemon'][0]['is_hidden'], pokemon_ability.is_hidden) - self.assertEqual(response.data['pokemon'][0]['slot'], pokemon_ability.slot) - self.assertEqual(response.data['pokemon'][0]['pokemon']['name'], pokemon.name) self.assertEqual( - response.data['pokemon'][0]['pokemon']['url'], - '{}{}/pokemon/{}/'.format(TEST_HOST, API_V2, pokemon.pk)) + response.data["pokemon"][0]["is_hidden"], pokemon_ability.is_hidden + ) + self.assertEqual(response.data["pokemon"][0]["slot"], pokemon_ability.slot) + self.assertEqual(response.data["pokemon"][0]["pokemon"]["name"], pokemon.name) + self.assertEqual( + response.data["pokemon"][0]["pokemon"]["url"], + "{}{}/pokemon/{}/".format(TEST_HOST, API_V2, pokemon.pk), + ) # Item Tests def test_item_attribute_api(self): # item attribute data - item_attribute = self.setup_item_attribute_data(name='base itm attr') + item_attribute = self.setup_item_attribute_data(name="base itm attr") item_attribute_name = self.setup_item_attribute_name_data( - item_attribute, name='base itm attr nm') + item_attribute, name="base itm attr nm" + ) item_attribute_description = self.setup_item_attribute_description_data( - item_attribute, description='base itm attr desc') - item = self.setup_item_data(name='itm fr base itm attr') + item_attribute, description="base itm attr desc" + ) + item = self.setup_item_data(name="itm fr base itm attr") self.setup_item_attribute_map_data(item_attribute=item_attribute, item=item) - response = self.client.get('{}/item-attribute/{}/'.format(API_V2, item_attribute.pk)) + response = self.client.get( + "{}/item-attribute/{}/".format(API_V2, item_attribute.pk) + ) # base params - self.assertEqual(response.data['id'], item_attribute.pk) - self.assertEqual(response.data['name'], item_attribute.name) + self.assertEqual(response.data["id"], item_attribute.pk) + self.assertEqual(response.data["name"], item_attribute.name) # name params - self.assertEqual(response.data['names'][0]['name'], item_attribute_name.name) + self.assertEqual(response.data["names"][0]["name"], item_attribute_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], item_attribute_name.language.name) + response.data["names"][0]["language"]["name"], + item_attribute_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, item_attribute_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, item_attribute_name.language.pk + ), + ) # description params self.assertEqual( - response.data['descriptions'][0]['description'], item_attribute_description.description) + response.data["descriptions"][0]["description"], + item_attribute_description.description, + ) self.assertEqual( - response.data['descriptions'][0]['language']['name'], - item_attribute_description.language.name) + response.data["descriptions"][0]["language"]["name"], + item_attribute_description.language.name, + ) self.assertEqual( - response.data['descriptions'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, item_attribute_description.language.pk)) + response.data["descriptions"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, item_attribute_description.language.pk + ), + ) # item params - self.assertEqual(response.data['items'][0]['name'], item.name) + self.assertEqual(response.data["items"][0]["name"], item.name) self.assertEqual( - response.data['items'][0]['url'], '{}{}/item/{}/'.format(TEST_HOST, API_V2, item.pk)) + response.data["items"][0]["url"], + "{}{}/item/{}/".format(TEST_HOST, API_V2, item.pk), + ) def test_item_category_api(self): # item category data - item_category = self.setup_item_category_data(name='base itm ctgry') + item_category = self.setup_item_category_data(name="base itm ctgry") item_category_name = self.setup_item_category_name_data( - item_category, name='base itm ctgry nm') - item = self.setup_item_data(item_category=item_category, name='itm fr base itm ctgry') + item_category, name="base itm ctgry nm" + ) + item = self.setup_item_data( + item_category=item_category, name="itm fr base itm ctgry" + ) - response = self.client.get('{}/item-category/{}/'.format(API_V2, item_category.pk)) + response = self.client.get( + "{}/item-category/{}/".format(API_V2, item_category.pk) + ) # base params - self.assertEqual(response.data['id'], item_category.pk) - self.assertEqual(response.data['name'], item_category.name) + self.assertEqual(response.data["id"], item_category.pk) + self.assertEqual(response.data["name"], item_category.name) # name params - self.assertEqual(response.data['names'][0]['name'], item_category_name.name) + self.assertEqual(response.data["names"][0]["name"], item_category_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], item_category_name.language.name) + response.data["names"][0]["language"]["name"], + item_category_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, item_category_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, item_category_name.language.pk + ), + ) # pocket params - self.assertEqual(response.data['pocket']['name'], item_category.item_pocket.name) self.assertEqual( - response.data['pocket']['url'], - '{}{}/item-pocket/{}/'.format(TEST_HOST, API_V2, item_category.item_pocket.pk)) + response.data["pocket"]["name"], item_category.item_pocket.name + ) + self.assertEqual( + response.data["pocket"]["url"], + "{}{}/item-pocket/{}/".format( + TEST_HOST, API_V2, item_category.item_pocket.pk + ), + ) # item params - self.assertEqual(response.data['items'][0]['name'], item.name) + self.assertEqual(response.data["items"][0]["name"], item.name) self.assertEqual( - response.data['items'][0]['url'], '{}{}/item/{}/'.format(TEST_HOST, API_V2, item.pk)) + response.data["items"][0]["url"], + "{}{}/item/{}/".format(TEST_HOST, API_V2, item.pk), + ) def test_item_fling_effect_api(self): # item category data - item_fling_effect = self.setup_item_fling_effect_data(name='base itm flng efct') + item_fling_effect = self.setup_item_fling_effect_data(name="base itm flng efct") item_fling_effect_effect_text = self.setup_item_fling_effect_effect_text_data( - item_fling_effect, effect='base itm flng efct nm') + item_fling_effect, effect="base itm flng efct nm" + ) item = self.setup_item_data( - item_fling_effect=item_fling_effect, name='itm fr base itm attr') + item_fling_effect=item_fling_effect, name="itm fr base itm attr" + ) - response = self.client.get('{}/item-fling-effect/{}/'.format(API_V2, item_fling_effect.pk)) + response = self.client.get( + "{}/item-fling-effect/{}/".format(API_V2, item_fling_effect.pk) + ) # base params - self.assertEqual(response.data['id'], item_fling_effect.pk) - self.assertEqual(response.data['name'], item_fling_effect.name) + self.assertEqual(response.data["id"], item_fling_effect.pk) + self.assertEqual(response.data["name"], item_fling_effect.name) # description params self.assertEqual( - response.data['effect_entries'][0]['effect'], item_fling_effect_effect_text.effect) + response.data["effect_entries"][0]["effect"], + item_fling_effect_effect_text.effect, + ) self.assertEqual( - response.data['effect_entries'][0]['language']['name'], - item_fling_effect_effect_text.language.name) + response.data["effect_entries"][0]["language"]["name"], + item_fling_effect_effect_text.language.name, + ) self.assertEqual( - response.data['effect_entries'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, item_fling_effect_effect_text.language.pk) + response.data["effect_entries"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, item_fling_effect_effect_text.language.pk + ), ) # item params - self.assertEqual(response.data['items'][0]['name'], item.name) + self.assertEqual(response.data["items"][0]["name"], item.name) self.assertEqual( - response.data['items'][0]['url'], '{}{}/item/{}/'.format(TEST_HOST, API_V2, item.pk)) + response.data["items"][0]["url"], + "{}{}/item/{}/".format(TEST_HOST, API_V2, item.pk), + ) def test_item_pocket_api(self): # item pocket data - item_pocket = self.setup_item_pocket_data(name='base itm pkt') - item_pocket_name = self.setup_item_pocket_name_data(item_pocket, name='base itm pkt nm') + item_pocket = self.setup_item_pocket_data(name="base itm pkt") + item_pocket_name = self.setup_item_pocket_name_data( + item_pocket, name="base itm pkt nm" + ) - response = self.client.get('{}/item-pocket/{}/'.format(API_V2, item_pocket.pk)) + response = self.client.get("{}/item-pocket/{}/".format(API_V2, item_pocket.pk)) # base params - self.assertEqual(response.data['id'], item_pocket.pk) - self.assertEqual(response.data['name'], item_pocket.name) + self.assertEqual(response.data["id"], item_pocket.pk) + self.assertEqual(response.data["name"], item_pocket.name) # name params - self.assertEqual(response.data['names'][0]['name'], item_pocket_name.name) + self.assertEqual(response.data["names"][0]["name"], item_pocket_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], item_pocket_name.language.name) + response.data["names"][0]["language"]["name"], + item_pocket_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, item_pocket_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, item_pocket_name.language.pk), + ) def test_item_api(self): - item_category = self.setup_item_category_data(name='itm ctgry for base itm') - item_fling_effect = self.setup_item_fling_effect_data(name='itm flng efct for base itm') - item = self.setup_item_data(item_category, item_fling_effect, name='base itm') - item_name = self.setup_item_name_data(item, name='base itm name') - item_flavor_text = self.setup_item_flavor_text_data(item, flavor_text='base itm flvr txt') + item_category = self.setup_item_category_data(name="itm ctgry for base itm") + item_fling_effect = self.setup_item_fling_effect_data( + name="itm flng efct for base itm" + ) + item = self.setup_item_data(item_category, item_fling_effect, name="base itm") + item_name = self.setup_item_name_data(item, name="base itm name") + item_flavor_text = self.setup_item_flavor_text_data( + item, flavor_text="base itm flvr txt" + ) item_effect_text = self.setup_item_effect_text_data( - item, effect='base nrml efct', short_effect='base shrt efct') + item, effect="base nrml efct", short_effect="base shrt efct" + ) item_attribute = self.setup_item_attribute_data() item_game_index = self.setup_item_game_index_data(item, game_index=10) item_sprites = self.setup_item_sprites_data(item) - pokemon = self.setup_pokemon_data(name='pkmn for base itm') + pokemon = self.setup_pokemon_data(name="pkmn for base itm") pokemon_item = self.setup_pokemon_item_data(pokemon=pokemon, item=item) evolution_chain = self.setup_evolution_chain_data(baby_trigger_item=item) # map item attribute to item - item_attribute_map = ItemAttributeMap( - item=item, - item_attribute=item_attribute - ) + item_attribute_map = ItemAttributeMap(item=item, item_attribute=item_attribute) item_attribute_map.save() sprites_data = json.loads(item_sprites.sprites) - response = self.client.get('{}/item/{}/'.format(API_V2, item.pk), HTTP_HOST='testserver') + response = self.client.get( + "{}/item/{}/".format(API_V2, item.pk), HTTP_HOST="testserver" + ) # base params - self.assertEqual(response.data['id'], item.pk) - self.assertEqual(response.data['name'], item.name) - self.assertEqual(response.data['cost'], item.cost) - self.assertEqual(response.data['fling_power'], item.fling_power) + self.assertEqual(response.data["id"], item.pk) + self.assertEqual(response.data["name"], item.name) + self.assertEqual(response.data["cost"], item.cost) + self.assertEqual(response.data["fling_power"], item.fling_power) # name params - self.assertEqual(response.data['names'][0]['name'], item_name.name) - self.assertEqual(response.data['names'][0]['language']['name'], item_name.language.name) + self.assertEqual(response.data["names"][0]["name"], item_name.name) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, item_name.language.pk)) + response.data["names"][0]["language"]["name"], item_name.language.name + ) + self.assertEqual( + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, item_name.language.pk), + ) # flavor text params self.assertEqual( - response.data['flavor_text_entries'][0]['text'], item_flavor_text.flavor_text) + response.data["flavor_text_entries"][0]["text"], + item_flavor_text.flavor_text, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['version_group']['name'], - item_flavor_text.version_group.name) + response.data["flavor_text_entries"][0]["version_group"]["name"], + item_flavor_text.version_group.name, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['version_group']['url'], - '{}{}/version-group/{}/'.format(TEST_HOST, API_V2, item_flavor_text.version_group.pk)) + response.data["flavor_text_entries"][0]["version_group"]["url"], + "{}{}/version-group/{}/".format( + TEST_HOST, API_V2, item_flavor_text.version_group.pk + ), + ) self.assertEqual( - response.data['flavor_text_entries'][0]['language']['name'], - item_flavor_text.language.name) + response.data["flavor_text_entries"][0]["language"]["name"], + item_flavor_text.language.name, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, item_flavor_text.language.pk)) + response.data["flavor_text_entries"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, item_flavor_text.language.pk), + ) # effect text params - self.assertEqual(response.data['effect_entries'][0]['effect'], item_effect_text.effect) self.assertEqual( - response.data['effect_entries'][0]['short_effect'], item_effect_text.short_effect) + response.data["effect_entries"][0]["effect"], item_effect_text.effect + ) + self.assertEqual( + response.data["effect_entries"][0]["short_effect"], + item_effect_text.short_effect, + ) self.assertEqual( - response.data['effect_entries'][0]['language']['name'], item_effect_text.language.name) + response.data["effect_entries"][0]["language"]["name"], + item_effect_text.language.name, + ) self.assertEqual( - response.data['effect_entries'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, item_effect_text.language.pk)) + response.data["effect_entries"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, item_effect_text.language.pk), + ) # category params - self.assertEqual(response.data['category']['name'], item_category.name) + self.assertEqual(response.data["category"]["name"], item_category.name) self.assertEqual( - response.data['category']['url'], - '{}{}/item-category/{}/'.format(TEST_HOST, API_V2, item_category.pk)) + response.data["category"]["url"], + "{}{}/item-category/{}/".format(TEST_HOST, API_V2, item_category.pk), + ) # fling effect params - self.assertEqual(response.data['fling_effect']['name'], item_fling_effect.name) + self.assertEqual(response.data["fling_effect"]["name"], item_fling_effect.name) self.assertEqual( - response.data['fling_effect']['url'], - '{}{}/item-fling-effect/{}/'.format(TEST_HOST, API_V2, item_fling_effect.pk)) + response.data["fling_effect"]["url"], + "{}{}/item-fling-effect/{}/".format( + TEST_HOST, API_V2, item_fling_effect.pk + ), + ) # attribute params - self.assertEqual(response.data['attributes'][0]['name'], item_attribute.name) + self.assertEqual(response.data["attributes"][0]["name"], item_attribute.name) self.assertEqual( - response.data['attributes'][0]['url'], - '{}{}/item-attribute/{}/'.format(TEST_HOST, API_V2, item_attribute.pk)) + response.data["attributes"][0]["url"], + "{}{}/item-attribute/{}/".format(TEST_HOST, API_V2, item_attribute.pk), + ) # game indices params - self.assertEqual(response.data['game_indices'][0]['game_index'], item_game_index.game_index) self.assertEqual( - response.data['game_indices'][0]['generation']['name'], item_game_index.generation.name) + response.data["game_indices"][0]["game_index"], item_game_index.game_index + ) + self.assertEqual( + response.data["game_indices"][0]["generation"]["name"], + item_game_index.generation.name, + ) self.assertEqual( - response.data['game_indices'][0]['generation']['url'], - '{}{}/generation/{}/'.format(TEST_HOST, API_V2, item_game_index.generation.pk)) + response.data["game_indices"][0]["generation"]["url"], + "{}{}/generation/{}/".format( + TEST_HOST, API_V2, item_game_index.generation.pk + ), + ) # held by params - self.assertEqual(response.data['held_by_pokemon'][0]['pokemon']['name'], pokemon.name) self.assertEqual( - response.data['held_by_pokemon'][0]['pokemon']['url'], - '{}{}/pokemon/{}/'.format(TEST_HOST, API_V2, pokemon.pk)) + response.data["held_by_pokemon"][0]["pokemon"]["name"], pokemon.name + ) + self.assertEqual( + response.data["held_by_pokemon"][0]["pokemon"]["url"], + "{}{}/pokemon/{}/".format(TEST_HOST, API_V2, pokemon.pk), + ) self.assertEqual( - response.data['held_by_pokemon'][0]['version_details'][0]['rarity'], - pokemon_item.rarity) + response.data["held_by_pokemon"][0]["version_details"][0]["rarity"], + pokemon_item.rarity, + ) self.assertEqual( - response.data['held_by_pokemon'][0]['version_details'][0]['version']['name'], - pokemon_item.version.name) + response.data["held_by_pokemon"][0]["version_details"][0]["version"][ + "name" + ], + pokemon_item.version.name, + ) self.assertEqual( - response.data['held_by_pokemon'][0]['version_details'][0]['version']['url'], - '{}{}/version/{}/'.format(TEST_HOST, API_V2, pokemon_item.version.pk)) + response.data["held_by_pokemon"][0]["version_details"][0]["version"]["url"], + "{}{}/version/{}/".format(TEST_HOST, API_V2, pokemon_item.version.pk), + ) # baby trigger params self.assertEqual( - response.data['baby_trigger_for']['url'], - '{}{}/evolution-chain/{}/'.format(TEST_HOST, API_V2, evolution_chain.pk)) + response.data["baby_trigger_for"]["url"], + "{}{}/evolution-chain/{}/".format(TEST_HOST, API_V2, evolution_chain.pk), + ) # sprites self.assertEqual( - response.data['sprites']['default'], - '{}{}'.format(MEDIA_HOST, sprites_data['default'].replace('/media/', ''))) + response.data["sprites"]["default"], + "{}{}".format(MEDIA_HOST, sprites_data["default"].replace("/media/", "")), + ) # Berry Tests def test_berry_firmness_api(self): - berry_firmness = self.setup_berry_firmness_data(name='base bry frmns') + berry_firmness = self.setup_berry_firmness_data(name="base bry frmns") berry_firmness_name = self.setup_berry_firmness_name_data( - berry_firmness, name='base bry frmns nm') - berry = self.setup_berry_data(berry_firmness=berry_firmness, name='bry for base frmns') + berry_firmness, name="base bry frmns nm" + ) + berry = self.setup_berry_data( + berry_firmness=berry_firmness, name="bry for base frmns" + ) - response = self.client.get('{}/berry-firmness/{}/'.format(API_V2, berry_firmness.pk)) + response = self.client.get( + "{}/berry-firmness/{}/".format(API_V2, berry_firmness.pk) + ) # base params - self.assertEqual(response.data['id'], berry_firmness.pk) - self.assertEqual(response.data['name'], berry_firmness.name) + self.assertEqual(response.data["id"], berry_firmness.pk) + self.assertEqual(response.data["name"], berry_firmness.name) # name params - self.assertEqual(response.data['names'][0]['name'], berry_firmness_name.name) + self.assertEqual(response.data["names"][0]["name"], berry_firmness_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], berry_firmness_name.language.name) + response.data["names"][0]["language"]["name"], + berry_firmness_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, berry_firmness_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, berry_firmness_name.language.pk + ), + ) # berry params - self.assertEqual(response.data['berries'][0]['name'], berry.name) + self.assertEqual(response.data["berries"][0]["name"], berry.name) self.assertEqual( - response.data['berries'][0]['url'], - '{}{}/berry/{}/'.format(TEST_HOST, API_V2, berry.pk)) + response.data["berries"][0]["url"], + "{}{}/berry/{}/".format(TEST_HOST, API_V2, berry.pk), + ) def test_berry_flavor_api(self): - berry_flavor = self.setup_berry_flavor_data(name='base bry flvr') - berry_flavor_name = self.setup_berry_flavor_name_data(berry_flavor, name='base bry flvr nm') - berry = self.setup_berry_data(name='bry for base bry flvr') + berry_flavor = self.setup_berry_flavor_data(name="base bry flvr") + berry_flavor_name = self.setup_berry_flavor_name_data( + berry_flavor, name="base bry flvr nm" + ) + berry = self.setup_berry_data(name="bry for base bry flvr") berry_flavor_map = self.setup_berry_flavor_map_data( - berry=berry, berry_flavor=berry_flavor, potency=50) + berry=berry, berry_flavor=berry_flavor, potency=50 + ) - response = self.client.get('{}/berry-flavor/{}/'.format(API_V2, berry_flavor.pk)) + response = self.client.get( + "{}/berry-flavor/{}/".format(API_V2, berry_flavor.pk) + ) # base params - self.assertEqual(response.data['id'], berry_flavor.pk) - self.assertEqual(response.data['name'], berry_flavor.name) + self.assertEqual(response.data["id"], berry_flavor.pk) + self.assertEqual(response.data["name"], berry_flavor.name) # name params - self.assertEqual(response.data['names'][0]['name'], berry_flavor_name.name) + self.assertEqual(response.data["names"][0]["name"], berry_flavor_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], berry_flavor_name.language.name) + response.data["names"][0]["language"]["name"], + berry_flavor_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, berry_flavor_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, berry_flavor_name.language.pk + ), + ) # contest type params - self.assertEqual(response.data['contest_type']['name'], berry_flavor.contest_type.name) self.assertEqual( - response.data['contest_type']['url'], - '{}{}/contest-type/{}/'.format(TEST_HOST, API_V2, berry_flavor.contest_type.pk)) + response.data["contest_type"]["name"], berry_flavor.contest_type.name + ) + self.assertEqual( + response.data["contest_type"]["url"], + "{}{}/contest-type/{}/".format( + TEST_HOST, API_V2, berry_flavor.contest_type.pk + ), + ) # berry params - self.assertEqual(response.data['berries'][0]['potency'], berry_flavor_map.potency) - self.assertEqual(response.data['berries'][0]['berry']['name'], berry.name) self.assertEqual( - response.data['berries'][0]['berry']['url'], - '{}{}/berry/{}/'.format(TEST_HOST, API_V2, berry.pk)) + response.data["berries"][0]["potency"], berry_flavor_map.potency + ) + self.assertEqual(response.data["berries"][0]["berry"]["name"], berry.name) + self.assertEqual( + response.data["berries"][0]["berry"]["url"], + "{}{}/berry/{}/".format(TEST_HOST, API_V2, berry.pk), + ) def test_berry_api(self): type = self.setup_type_data(name="tp fr base bry") - berry = self.setup_berry_data(name='base bry', natural_gift_type=type) - berry_flavor = self.setup_berry_flavor_data(name='bry flvr for base bry') - berry_flavor_map = self.setup_berry_flavor_map_data(berry=berry, berry_flavor=berry_flavor) + berry = self.setup_berry_data(name="base bry", natural_gift_type=type) + berry_flavor = self.setup_berry_flavor_data(name="bry flvr for base bry") + berry_flavor_map = self.setup_berry_flavor_map_data( + berry=berry, berry_flavor=berry_flavor + ) - response = self.client.get('{}/berry/{}/'.format(API_V2, berry.pk)) + response = self.client.get("{}/berry/{}/".format(API_V2, berry.pk)) # base params - self.assertEqual(response.data['id'], berry.pk) - self.assertEqual(response.data['name'], berry.name) - self.assertEqual(response.data['growth_time'], berry.growth_time) - self.assertEqual(response.data['max_harvest'], berry.max_harvest) - self.assertEqual(response.data['natural_gift_power'], berry.natural_gift_power) - self.assertEqual(response.data['size'], berry.size) - self.assertEqual(response.data['smoothness'], berry.smoothness) - self.assertEqual(response.data['soil_dryness'], berry.soil_dryness) + self.assertEqual(response.data["id"], berry.pk) + self.assertEqual(response.data["name"], berry.name) + self.assertEqual(response.data["growth_time"], berry.growth_time) + self.assertEqual(response.data["max_harvest"], berry.max_harvest) + self.assertEqual(response.data["natural_gift_power"], berry.natural_gift_power) + self.assertEqual(response.data["size"], berry.size) + self.assertEqual(response.data["smoothness"], berry.smoothness) + self.assertEqual(response.data["soil_dryness"], berry.soil_dryness) # firmness params - self.assertEqual(response.data['firmness']['name'], berry.berry_firmness.name) + self.assertEqual(response.data["firmness"]["name"], berry.berry_firmness.name) self.assertEqual( - response.data['firmness']['url'], - '{}{}/berry-firmness/{}/'.format(TEST_HOST, API_V2, berry.berry_firmness.pk)) + response.data["firmness"]["url"], + "{}{}/berry-firmness/{}/".format( + TEST_HOST, API_V2, berry.berry_firmness.pk + ), + ) # item params - self.assertEqual(response.data['item']['name'], berry.item.name) + self.assertEqual(response.data["item"]["name"], berry.item.name) self.assertEqual( - response.data['item']['url'], - '{}{}/item/{}/'.format(TEST_HOST, API_V2, berry.item.pk)) + response.data["item"]["url"], + "{}{}/item/{}/".format(TEST_HOST, API_V2, berry.item.pk), + ) # flavor params - self.assertEqual(response.data['flavors'][0]['potency'], berry_flavor_map.potency) - self.assertEqual(response.data['flavors'][0]['flavor']['name'], berry_flavor.name) self.assertEqual( - response.data['flavors'][0]['flavor']['url'], - '{}{}/berry-flavor/{}/'.format(TEST_HOST, API_V2, berry_flavor.pk)) + response.data["flavors"][0]["potency"], berry_flavor_map.potency + ) + self.assertEqual( + response.data["flavors"][0]["flavor"]["name"], berry_flavor.name + ) + self.assertEqual( + response.data["flavors"][0]["flavor"]["url"], + "{}{}/berry-flavor/{}/".format(TEST_HOST, API_V2, berry_flavor.pk), + ) # natural gift type - self.assertEqual(response.data['natural_gift_type']['name'], type.name) + self.assertEqual(response.data["natural_gift_type"]["name"], type.name) self.assertEqual( - response.data['natural_gift_type']['url'], - '{}{}/type/{}/'.format(TEST_HOST, API_V2, type.pk)) + response.data["natural_gift_type"]["url"], + "{}{}/type/{}/".format(TEST_HOST, API_V2, type.pk), + ) # Growth Rate Tests def test_growth_rate_api(self): # item pocket data - growth_rate = self.setup_growth_rate_data(name='base grth rt') + growth_rate = self.setup_growth_rate_data(name="base grth rt") growth_rate_description = self.setup_growth_rate_description_data( - growth_rate, description='base grth rt desc') + growth_rate, description="base grth rt desc" + ) pokemon_species = self.setup_pokemon_species_data( - name='pkmn spcs for grth rt', growth_rate=growth_rate) + name="pkmn spcs for grth rt", growth_rate=growth_rate + ) # map item attribute to item - experience = Experience( - growth_rate=growth_rate, - level=10, - experience=3000 - ) + experience = Experience(growth_rate=growth_rate, level=10, experience=3000) experience.save() - response = self.client.get('{}/growth-rate/{}/'.format(API_V2, growth_rate.pk)) + response = self.client.get("{}/growth-rate/{}/".format(API_V2, growth_rate.pk)) # base params - self.assertEqual(response.data['id'], growth_rate.pk) - self.assertEqual(response.data['name'], growth_rate.name) - self.assertEqual(response.data['formula'], growth_rate.formula) + self.assertEqual(response.data["id"], growth_rate.pk) + self.assertEqual(response.data["name"], growth_rate.name) + self.assertEqual(response.data["formula"], growth_rate.formula) # description params self.assertEqual( - response.data['descriptions'][0]['description'], growth_rate_description.description) + response.data["descriptions"][0]["description"], + growth_rate_description.description, + ) self.assertEqual( - response.data['descriptions'][0]['language']['name'], - growth_rate_description.language.name) + response.data["descriptions"][0]["language"]["name"], + growth_rate_description.language.name, + ) self.assertEqual( - response.data['descriptions'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, growth_rate_description.language.pk)) + response.data["descriptions"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, growth_rate_description.language.pk + ), + ) # experience params - self.assertEqual(response.data['levels'][0]['level'], experience.level) - self.assertEqual(response.data['levels'][0]['experience'], experience.experience) + self.assertEqual(response.data["levels"][0]["level"], experience.level) + self.assertEqual( + response.data["levels"][0]["experience"], experience.experience + ) # species params - self.assertEqual(response.data['pokemon_species'][0]['name'], pokemon_species.name) self.assertEqual( - response.data['pokemon_species'][0]['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, pokemon_species.pk)) + response.data["pokemon_species"][0]["name"], pokemon_species.name + ) + self.assertEqual( + response.data["pokemon_species"][0]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, pokemon_species.pk), + ) # Location Tests def test_location_api(self): - location = self.setup_location_data(name='base lctn') - location_name = self.setup_location_name_data(location, name='base lctn name') - location_game_index = self.setup_location_game_index_data(location, game_index=10) + location = self.setup_location_data(name="base lctn") + location_name = self.setup_location_name_data(location, name="base lctn name") + location_game_index = self.setup_location_game_index_data( + location, game_index=10 + ) - response = self.client.get('{}/location/{}/'.format(API_V2, location.pk)) + response = self.client.get("{}/location/{}/".format(API_V2, location.pk)) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], location.pk) - self.assertEqual(response.data['name'], location.name) + self.assertEqual(response.data["id"], location.pk) + self.assertEqual(response.data["name"], location.name) # name params - self.assertEqual(response.data['names'][0]['name'], location_name.name) - self.assertEqual(response.data['names'][0]['language']['name'], location_name.language.name) + self.assertEqual(response.data["names"][0]["name"], location_name.name) + self.assertEqual( + response.data["names"][0]["language"]["name"], location_name.language.name + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, location_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, location_name.language.pk), + ) # region params - self.assertEqual(response.data['region']['name'], location.region.name) + self.assertEqual(response.data["region"]["name"], location.region.name) self.assertEqual( - response.data['region']['url'], - '{}{}/region/{}/'.format(TEST_HOST, API_V2, location.region.pk)) + response.data["region"]["url"], + "{}{}/region/{}/".format(TEST_HOST, API_V2, location.region.pk), + ) # game indices params self.assertEqual( - response.data['game_indices'][0]['game_index'], location_game_index.game_index) + response.data["game_indices"][0]["game_index"], + location_game_index.game_index, + ) self.assertEqual( - response.data['game_indices'][0]['generation']['name'], - location_game_index.generation.name) + response.data["game_indices"][0]["generation"]["name"], + location_game_index.generation.name, + ) self.assertEqual( - response.data['game_indices'][0]['generation']['url'], - '{}{}/generation/{}/'.format(TEST_HOST, API_V2, location_game_index.generation.pk)) + response.data["game_indices"][0]["generation"]["url"], + "{}{}/generation/{}/".format( + TEST_HOST, API_V2, location_game_index.generation.pk + ), + ) def test_location_area_api(self): - location = self.setup_location_data(name='lctn for base lctn area') + location = self.setup_location_data(name="lctn for base lctn area") location_area = self.setup_location_area_data(location, name="base lctn area") location_area_name = self.setup_location_area_name_data( - location_area, name='base lctn area name') + location_area, name="base lctn area name" + ) - encounter_method = self.setup_encounter_method_data(name='encntr mthd for lctn area') + encounter_method = self.setup_encounter_method_data( + name="encntr mthd for lctn area" + ) location_area_encounter_rate = self.setup_location_area_encounter_rate_data( - location_area, encounter_method, rate=20) + location_area, encounter_method, rate=20 + ) - pokemon_species1 = self.setup_pokemon_species_data(name='spcs for pkmn1') + pokemon_species1 = self.setup_pokemon_species_data(name="spcs for pkmn1") pokemon1 = self.setup_pokemon_data( - name='pkmn1 for base encntr', pokemon_species=pokemon_species1) - encounter_slot1 = self.setup_encounter_slot_data(encounter_method, slot=1, rarity=30) + name="pkmn1 for base encntr", pokemon_species=pokemon_species1 + ) + encounter_slot1 = self.setup_encounter_slot_data( + encounter_method, slot=1, rarity=30 + ) encounter1 = self.setup_encounter_data( - pokemon=pokemon1, location_area=location_area, - encounter_slot=encounter_slot1, min_level=30, max_level=35) + pokemon=pokemon1, + location_area=location_area, + encounter_slot=encounter_slot1, + min_level=30, + max_level=35, + ) - pokemon_species2 = self.setup_pokemon_species_data(name='spcs for pkmn2') + pokemon_species2 = self.setup_pokemon_species_data(name="spcs for pkmn2") pokemon2 = self.setup_pokemon_data( - name='pkmn2 for base encntr', pokemon_species=pokemon_species2) - encounter_slot2 = self.setup_encounter_slot_data(encounter_method, slot=2, rarity=40) + name="pkmn2 for base encntr", pokemon_species=pokemon_species2 + ) + encounter_slot2 = self.setup_encounter_slot_data( + encounter_method, slot=2, rarity=40 + ) encounter2 = self.setup_encounter_data( - pokemon=pokemon2, location_area=location_area, - encounter_slot=encounter_slot2, min_level=32, max_level=36) + pokemon=pokemon2, + location_area=location_area, + encounter_slot=encounter_slot2, + min_level=32, + max_level=36, + ) - response = self.client.get('{}/location-area/{}/'.format(API_V2, location_area.pk)) + response = self.client.get( + "{}/location-area/{}/".format(API_V2, location_area.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], location_area.pk) - self.assertEqual(response.data['name'], location_area.name) - self.assertEqual(response.data['game_index'], location_area.game_index) + self.assertEqual(response.data["id"], location_area.pk) + self.assertEqual(response.data["name"], location_area.name) + self.assertEqual(response.data["game_index"], location_area.game_index) # name params - self.assertEqual(response.data['names'][0]['name'], location_area_name.name) + self.assertEqual(response.data["names"][0]["name"], location_area_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], location_area_name.language.name) + response.data["names"][0]["language"]["name"], + location_area_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, location_area_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, location_area_name.language.pk + ), + ) # location params - self.assertEqual(response.data['location']['name'], location.name) + self.assertEqual(response.data["location"]["name"], location.name) self.assertEqual( - response.data['location']['url'], - '{}{}/location/{}/'.format(TEST_HOST, API_V2, location.pk)) + response.data["location"]["url"], + "{}{}/location/{}/".format(TEST_HOST, API_V2, location.pk), + ) # encounter method params self.assertEqual( - response.data['encounter_method_rates'][0]['encounter_method']['name'], - encounter_method.name) + response.data["encounter_method_rates"][0]["encounter_method"]["name"], + encounter_method.name, + ) self.assertEqual( - response.data['encounter_method_rates'][0]['encounter_method']['url'], - '{}{}/encounter-method/{}/'.format(TEST_HOST, API_V2, encounter_method.pk)) + response.data["encounter_method_rates"][0]["encounter_method"]["url"], + "{}{}/encounter-method/{}/".format(TEST_HOST, API_V2, encounter_method.pk), + ) self.assertEqual( - response.data['encounter_method_rates'][0]['version_details'][0]['rate'], - location_area_encounter_rate.rate) + response.data["encounter_method_rates"][0]["version_details"][0]["rate"], + location_area_encounter_rate.rate, + ) self.assertEqual( - response.data['encounter_method_rates'][0]['version_details'][0]['version']['name'], - location_area_encounter_rate.version.name) + response.data["encounter_method_rates"][0]["version_details"][0]["version"][ + "name" + ], + location_area_encounter_rate.version.name, + ) self.assertEqual( - response.data['encounter_method_rates'][0]['version_details'][0]['version']['url'], - '{}{}/version/{}/'.format(TEST_HOST, API_V2, location_area_encounter_rate.version.pk)) + response.data["encounter_method_rates"][0]["version_details"][0]["version"][ + "url" + ], + "{}{}/version/{}/".format( + TEST_HOST, API_V2, location_area_encounter_rate.version.pk + ), + ) # encounter params - self.assertEqual(response.data['pokemon_encounters'][0]['pokemon']['name'], pokemon1.name) self.assertEqual( - response.data['pokemon_encounters'][0]['pokemon']['url'], - '{}{}/pokemon/{}/'.format(TEST_HOST, API_V2, pokemon1.pk)) + response.data["pokemon_encounters"][0]["pokemon"]["name"], pokemon1.name + ) + self.assertEqual( + response.data["pokemon_encounters"][0]["pokemon"]["url"], + "{}{}/pokemon/{}/".format(TEST_HOST, API_V2, pokemon1.pk), + ) self.assertEqual( - response.data['pokemon_encounters'][0]['version_details'][0]['max_chance'], - encounter_slot1.rarity) + response.data["pokemon_encounters"][0]["version_details"][0]["max_chance"], + encounter_slot1.rarity, + ) self.assertEqual( - response.data['pokemon_encounters'][0]['version_details'][0]['version']['name'], - encounter1.version.name) + response.data["pokemon_encounters"][0]["version_details"][0]["version"][ + "name" + ], + encounter1.version.name, + ) self.assertEqual( - response.data['pokemon_encounters'][0]['version_details'][0]['version']['url'], - '{}{}/version/{}/'.format(TEST_HOST, API_V2, encounter1.version.pk)) + response.data["pokemon_encounters"][0]["version_details"][0]["version"][ + "url" + ], + "{}{}/version/{}/".format(TEST_HOST, API_V2, encounter1.version.pk), + ) self.assertEqual( - response.data['pokemon_encounters'][0].get( - 'version_details')[0]['encounter_details'][0]['chance'], - encounter_slot1.rarity) + response.data["pokemon_encounters"][0].get("version_details")[0][ + "encounter_details" + ][0]["chance"], + encounter_slot1.rarity, + ) self.assertEqual( - response.data['pokemon_encounters'][0].get( - 'version_details')[0]['encounter_details'][0]['method']['name'], - encounter_slot1.encounter_method.name) + response.data["pokemon_encounters"][0].get("version_details")[0][ + "encounter_details" + ][0]["method"]["name"], + encounter_slot1.encounter_method.name, + ) self.assertEqual( - response.data['pokemon_encounters'][0]['version_details'][0].get( - 'encounter_details')[0]['method']['url'], - '{}{}/encounter-method/{}/'.format( - TEST_HOST, API_V2, encounter_slot1.encounter_method.pk)) + response.data["pokemon_encounters"][0]["version_details"][0].get( + "encounter_details" + )[0]["method"]["url"], + "{}{}/encounter-method/{}/".format( + TEST_HOST, API_V2, encounter_slot1.encounter_method.pk + ), + ) - self.assertEqual(response.data['pokemon_encounters'][1]['pokemon']['name'], pokemon2.name) self.assertEqual( - response.data['pokemon_encounters'][1]['pokemon']['url'], - '{}{}/pokemon/{}/'.format(TEST_HOST, API_V2, pokemon2.pk)) + response.data["pokemon_encounters"][1]["pokemon"]["name"], pokemon2.name + ) + self.assertEqual( + response.data["pokemon_encounters"][1]["pokemon"]["url"], + "{}{}/pokemon/{}/".format(TEST_HOST, API_V2, pokemon2.pk), + ) self.assertEqual( - response.data['pokemon_encounters'][1]['version_details'][0]['max_chance'], - encounter_slot2.rarity) + response.data["pokemon_encounters"][1]["version_details"][0]["max_chance"], + encounter_slot2.rarity, + ) self.assertEqual( - response.data['pokemon_encounters'][1]['version_details'][0]['version']['name'], - encounter2.version.name) + response.data["pokemon_encounters"][1]["version_details"][0]["version"][ + "name" + ], + encounter2.version.name, + ) self.assertEqual( - response.data['pokemon_encounters'][1]['version_details'][0]['version']['url'], - '{}{}/version/{}/'.format(TEST_HOST, API_V2, encounter2.version.pk)) + response.data["pokemon_encounters"][1]["version_details"][0]["version"][ + "url" + ], + "{}{}/version/{}/".format(TEST_HOST, API_V2, encounter2.version.pk), + ) self.assertEqual( - response.data['pokemon_encounters'][1].get( - 'version_details')[0]['encounter_details'][0]['chance'], - encounter_slot2.rarity) + response.data["pokemon_encounters"][1].get("version_details")[0][ + "encounter_details" + ][0]["chance"], + encounter_slot2.rarity, + ) self.assertEqual( - response.data['pokemon_encounters'][1]['version_details'][0].get( - 'encounter_details')[0]['method']['name'], - encounter_slot2.encounter_method.name) + response.data["pokemon_encounters"][1]["version_details"][0].get( + "encounter_details" + )[0]["method"]["name"], + encounter_slot2.encounter_method.name, + ) self.assertEqual( - response.data['pokemon_encounters'][1]['version_details'][0].get( - 'encounter_details')[0]['method']['url'], - '{}{}/encounter-method/{}/'.format( - TEST_HOST, API_V2, encounter_slot2.encounter_method.pk)) + response.data["pokemon_encounters"][1]["version_details"][0].get( + "encounter_details" + )[0]["method"]["url"], + "{}{}/encounter-method/{}/".format( + TEST_HOST, API_V2, encounter_slot2.encounter_method.pk + ), + ) # Contest Tests def test_contest_type_api(self): - contest_type = self.setup_contest_type_data(name='base cntst tp') + contest_type = self.setup_contest_type_data(name="base cntst tp") contest_type_name = self.setup_contest_type_name_data( - contest_type, name='base cntst tp name') + contest_type, name="base cntst tp name" + ) berry_flavor = self.setup_berry_flavor_data( - name="bry for base cntst tp", contest_type=contest_type) + name="bry for base cntst tp", contest_type=contest_type + ) - response = self.client.get('{}/contest-type/{}/'.format(API_V2, contest_type.pk)) + response = self.client.get( + "{}/contest-type/{}/".format(API_V2, contest_type.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], contest_type.pk) - self.assertEqual(response.data['name'], contest_type.name) + self.assertEqual(response.data["id"], contest_type.pk) + self.assertEqual(response.data["name"], contest_type.name) # name params - self.assertEqual(response.data['names'][0]['name'], contest_type_name.name) + self.assertEqual(response.data["names"][0]["name"], contest_type_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], contest_type_name.language.name) + response.data["names"][0]["language"]["name"], + contest_type_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, contest_type_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, contest_type_name.language.pk + ), + ) # berry params - self.assertEqual(response.data['berry_flavor']['name'], berry_flavor.name) + self.assertEqual(response.data["berry_flavor"]["name"], berry_flavor.name) self.assertEqual( - response.data['berry_flavor']['url'], - '{}{}/berry-flavor/{}/'.format(TEST_HOST, API_V2, berry_flavor.pk)) + response.data["berry_flavor"]["url"], + "{}{}/berry-flavor/{}/".format(TEST_HOST, API_V2, berry_flavor.pk), + ) def test_contest_effect_api(self): contest_effect = self.setup_contest_effect_data(appeal=10, jam=20) contest_effect_flavor_text = self.setup_contest_effect_flavor_text_data( - contest_effect, flavor_text='base cntst efct flvr txt') + contest_effect, flavor_text="base cntst efct flvr txt" + ) contest_effect_effect_text = self.setup_contest_effect_effect_text_data( - contest_effect, effect='base cntst efct eftc txt') + contest_effect, effect="base cntst efct eftc txt" + ) - response = self.client.get('{}/contest-effect/{}/'.format(API_V2, contest_effect.pk)) + response = self.client.get( + "{}/contest-effect/{}/".format(API_V2, contest_effect.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], contest_effect.pk) - self.assertEqual(response.data['appeal'], contest_effect.appeal) - self.assertEqual(response.data['jam'], contest_effect.jam) + self.assertEqual(response.data["id"], contest_effect.pk) + self.assertEqual(response.data["appeal"], contest_effect.appeal) + self.assertEqual(response.data["jam"], contest_effect.jam) # effect text params self.assertEqual( - response.data['effect_entries'][0]['effect'], contest_effect_effect_text.effect) + response.data["effect_entries"][0]["effect"], + contest_effect_effect_text.effect, + ) self.assertEqual( - response.data['effect_entries'][0]['language']['name'], - contest_effect_effect_text.language.name) + response.data["effect_entries"][0]["language"]["name"], + contest_effect_effect_text.language.name, + ) self.assertEqual( - response.data['effect_entries'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, contest_effect_effect_text.language.pk)) + response.data["effect_entries"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, contest_effect_effect_text.language.pk + ), + ) # flavor text params self.assertEqual( - response.data['flavor_text_entries'][0]['flavor_text'], - contest_effect_flavor_text.flavor_text) + response.data["flavor_text_entries"][0]["flavor_text"], + contest_effect_flavor_text.flavor_text, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['language']['name'], - contest_effect_flavor_text.language.name) + response.data["flavor_text_entries"][0]["language"]["name"], + contest_effect_flavor_text.language.name, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, contest_effect_flavor_text.language.pk)) + response.data["flavor_text_entries"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, contest_effect_flavor_text.language.pk + ), + ) def test_super_contest_effect_api(self): super_contest_effect = self.setup_super_contest_effect_data(appeal=10) super_contest_effect_flavor_text = self.setup_super_contest_effect_flavor_text_data( - super_contest_effect, flavor_text='base spr cntst efct flvr txt') + super_contest_effect, flavor_text="base spr cntst efct flvr txt" + ) move = self.setup_move_data( - name="mv for base spr cntst efct", super_contest_effect=super_contest_effect) + name="mv for base spr cntst efct", super_contest_effect=super_contest_effect + ) response = self.client.get( - '{}/super-contest-effect/{}/'.format(API_V2, super_contest_effect.pk)) + "{}/super-contest-effect/{}/".format(API_V2, super_contest_effect.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], super_contest_effect.pk) - self.assertEqual(response.data['appeal'], super_contest_effect.appeal) + self.assertEqual(response.data["id"], super_contest_effect.pk) + self.assertEqual(response.data["appeal"], super_contest_effect.appeal) # flavor text params self.assertEqual( - response.data['flavor_text_entries'][0]['flavor_text'], - super_contest_effect_flavor_text.flavor_text) + response.data["flavor_text_entries"][0]["flavor_text"], + super_contest_effect_flavor_text.flavor_text, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['language']['name'], - super_contest_effect_flavor_text.language.name) + response.data["flavor_text_entries"][0]["language"]["name"], + super_contest_effect_flavor_text.language.name, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['language']['url'], - '{}{}/language/{}/'.format( - TEST_HOST, API_V2, super_contest_effect_flavor_text.language.pk)) + response.data["flavor_text_entries"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, super_contest_effect_flavor_text.language.pk + ), + ) # move params - self.assertEqual(response.data['moves'][0]['name'], move.name) + self.assertEqual(response.data["moves"][0]["name"], move.name) self.assertEqual( - response.data['moves'][0]['url'], - '{}{}/move/{}/'.format(TEST_HOST, API_V2, move.pk)) + response.data["moves"][0]["url"], + "{}{}/move/{}/".format(TEST_HOST, API_V2, move.pk), + ) # Type Tests def test_type_api(self): - type = self.setup_type_data(name='base tp') - type_name = self.setup_type_name_data(type, name='base tp nm') + type = self.setup_type_data(name="base tp") + type_name = self.setup_type_name_data(type, name="base tp nm") type_game_index = self.setup_type_game_index_data(type, game_index=10) move = self.setup_move_data(name="mv for base tp", type=type) pokemon = self.setup_pokemon_data(name="pkmn for base tp") pokemon_type = self.setup_pokemon_type_data(pokemon=pokemon, type=type) - no_damage_to = self.setup_type_data(name='no damage to tp') - half_damage_to = self.setup_type_data(name='half damage to tp') - double_damage_to = self.setup_type_data(name='double damage to tp') - no_damage_from = self.setup_type_data(name='no damage from tp') - half_damage_from = self.setup_type_data(name='half damage from tp') - double_damage_from = self.setup_type_data(name='double damage from tp') + no_damage_to = self.setup_type_data(name="no damage to tp") + half_damage_to = self.setup_type_data(name="half damage to tp") + double_damage_to = self.setup_type_data(name="double damage to tp") + no_damage_from = self.setup_type_data(name="no damage from tp") + half_damage_from = self.setup_type_data(name="half damage from tp") + double_damage_from = self.setup_type_data(name="double damage from tp") # type relations no_damage_to_relation = TypeEfficacy( - damage_type=type, - target_type=no_damage_to, - damage_factor=0 + damage_type=type, target_type=no_damage_to, damage_factor=0 ) no_damage_to_relation.save() half_damage_to_type_relation = TypeEfficacy( - damage_type=type, - target_type=half_damage_to, - damage_factor=50 + damage_type=type, target_type=half_damage_to, damage_factor=50 ) half_damage_to_type_relation.save() double_damage_to_type_relation = TypeEfficacy( - damage_type=type, - target_type=double_damage_to, - damage_factor=200 + damage_type=type, target_type=double_damage_to, damage_factor=200 ) double_damage_to_type_relation.save() no_damage_from_relation = TypeEfficacy( - damage_type=no_damage_from, - target_type=type, - damage_factor=0 + damage_type=no_damage_from, target_type=type, damage_factor=0 ) no_damage_from_relation.save() half_damage_from_type_relation = TypeEfficacy( - damage_type=half_damage_from, - target_type=type, - damage_factor=50 + damage_type=half_damage_from, target_type=type, damage_factor=50 ) half_damage_from_type_relation.save() double_damage_from_type_relation = TypeEfficacy( - damage_type=double_damage_from, - target_type=type, - damage_factor=200 + damage_type=double_damage_from, target_type=type, damage_factor=200 ) double_damage_from_type_relation.save() - response = self.client.get('{}/type/{}/'.format(API_V2, type.pk)) + response = self.client.get("{}/type/{}/".format(API_V2, type.pk)) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], type.pk) - self.assertEqual(response.data['name'], type.name) + self.assertEqual(response.data["id"], type.pk) + self.assertEqual(response.data["name"], type.name) # name params - self.assertEqual(response.data['names'][0]['name'], type_name.name) - self.assertEqual(response.data['names'][0]['language']['name'], type_name.language.name) + self.assertEqual(response.data["names"][0]["name"], type_name.name) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, type_name.language.pk)) + response.data["names"][0]["language"]["name"], type_name.language.name + ) + self.assertEqual( + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, type_name.language.pk), + ) # generation params - self.assertEqual(response.data['generation']['name'], type.generation.name) + self.assertEqual(response.data["generation"]["name"], type.generation.name) self.assertEqual( - response.data['generation']['url'], - '{}{}/generation/{}/'.format(TEST_HOST, API_V2, type.generation.pk)) + response.data["generation"]["url"], + "{}{}/generation/{}/".format(TEST_HOST, API_V2, type.generation.pk), + ) # damage class params - self.assertEqual(response.data['move_damage_class']['name'], type.move_damage_class.name) self.assertEqual( - response.data['move_damage_class']['url'], - '{}{}/move-damage-class/{}/'.format(TEST_HOST, API_V2, type.move_damage_class.pk)) + response.data["move_damage_class"]["name"], type.move_damage_class.name + ) + self.assertEqual( + response.data["move_damage_class"]["url"], + "{}{}/move-damage-class/{}/".format( + TEST_HOST, API_V2, type.move_damage_class.pk + ), + ) # move params - self.assertEqual(response.data['moves'][0]['name'], move.name) + self.assertEqual(response.data["moves"][0]["name"], move.name) self.assertEqual( - response.data['moves'][0]['url'], - '{}{}/move/{}/'.format(TEST_HOST, API_V2, move.pk)) + response.data["moves"][0]["url"], + "{}{}/move/{}/".format(TEST_HOST, API_V2, move.pk), + ) # pokemon params - self.assertEqual(response.data['pokemon'][0]['slot'], pokemon_type.slot) - self.assertEqual(response.data['pokemon'][0]['pokemon']['name'], pokemon.name) + self.assertEqual(response.data["pokemon"][0]["slot"], pokemon_type.slot) + self.assertEqual(response.data["pokemon"][0]["pokemon"]["name"], pokemon.name) self.assertEqual( - response.data['pokemon'][0]['pokemon']['url'], - '{}{}/pokemon/{}/'.format(TEST_HOST, API_V2, pokemon.pk)) + response.data["pokemon"][0]["pokemon"]["url"], + "{}{}/pokemon/{}/".format(TEST_HOST, API_V2, pokemon.pk), + ) # damage relations params self.assertEqual( - response.data['damage_relations']['no_damage_to'][0]['name'], no_damage_to.name) + response.data["damage_relations"]["no_damage_to"][0]["name"], + no_damage_to.name, + ) self.assertEqual( - response.data['damage_relations']['no_damage_to'][0]['url'], - '{}{}/type/{}/'.format(TEST_HOST, API_V2, no_damage_to.pk)) + response.data["damage_relations"]["no_damage_to"][0]["url"], + "{}{}/type/{}/".format(TEST_HOST, API_V2, no_damage_to.pk), + ) self.assertEqual( - response.data['damage_relations']['half_damage_to'][0]['name'], half_damage_to.name) + response.data["damage_relations"]["half_damage_to"][0]["name"], + half_damage_to.name, + ) self.assertEqual( - response.data['damage_relations']['half_damage_to'][0]['url'], - '{}{}/type/{}/'.format(TEST_HOST, API_V2, half_damage_to.pk)) + response.data["damage_relations"]["half_damage_to"][0]["url"], + "{}{}/type/{}/".format(TEST_HOST, API_V2, half_damage_to.pk), + ) self.assertEqual( - response.data['damage_relations']['double_damage_to'][0]['name'], double_damage_to.name) + response.data["damage_relations"]["double_damage_to"][0]["name"], + double_damage_to.name, + ) self.assertEqual( - response.data['damage_relations']['double_damage_to'][0]['url'], - '{}{}/type/{}/'.format(TEST_HOST, API_V2, double_damage_to.pk)) + response.data["damage_relations"]["double_damage_to"][0]["url"], + "{}{}/type/{}/".format(TEST_HOST, API_V2, double_damage_to.pk), + ) self.assertEqual( - response.data['damage_relations']['no_damage_from'][0]['name'], no_damage_from.name) + response.data["damage_relations"]["no_damage_from"][0]["name"], + no_damage_from.name, + ) self.assertEqual( - response.data['damage_relations']['no_damage_from'][0]['url'], - '{}{}/type/{}/'.format(TEST_HOST, API_V2, no_damage_from.pk)) + response.data["damage_relations"]["no_damage_from"][0]["url"], + "{}{}/type/{}/".format(TEST_HOST, API_V2, no_damage_from.pk), + ) self.assertEqual( - response.data['damage_relations']['half_damage_from'][0]['name'], half_damage_from.name) + response.data["damage_relations"]["half_damage_from"][0]["name"], + half_damage_from.name, + ) self.assertEqual( - response.data['damage_relations']['half_damage_from'][0]['url'], - '{}{}/type/{}/'.format(TEST_HOST, API_V2, half_damage_from.pk)) + response.data["damage_relations"]["half_damage_from"][0]["url"], + "{}{}/type/{}/".format(TEST_HOST, API_V2, half_damage_from.pk), + ) self.assertEqual( - response.data['damage_relations']['double_damage_from'][0]['name'], - double_damage_from.name) + response.data["damage_relations"]["double_damage_from"][0]["name"], + double_damage_from.name, + ) self.assertEqual( - response.data['damage_relations']['double_damage_from'][0]['url'], - '{}{}/type/{}/'.format(TEST_HOST, API_V2, double_damage_from.pk)) + response.data["damage_relations"]["double_damage_from"][0]["url"], + "{}{}/type/{}/".format(TEST_HOST, API_V2, double_damage_from.pk), + ) # game indices params - self.assertEqual(response.data['game_indices'][0]['game_index'], type_game_index.game_index) self.assertEqual( - response.data['game_indices'][0]['generation']['name'], type_game_index.generation.name) + response.data["game_indices"][0]["game_index"], type_game_index.game_index + ) + self.assertEqual( + response.data["game_indices"][0]["generation"]["name"], + type_game_index.generation.name, + ) self.assertEqual( - response.data['game_indices'][0]['generation']['url'], - '{}{}/generation/{}/'.format(TEST_HOST, API_V2, type_game_index.generation.pk)) + response.data["game_indices"][0]["generation"]["url"], + "{}{}/generation/{}/".format( + TEST_HOST, API_V2, type_game_index.generation.pk + ), + ) # Pokedex Tests def test_pokedex_api(self): - pokedex = self.setup_pokedex_data(name='base pkdx') - pokedex_name = self.setup_pokedex_name_data(pokedex, name='base pkdx name') + pokedex = self.setup_pokedex_data(name="base pkdx") + pokedex_name = self.setup_pokedex_name_data(pokedex, name="base pkdx name") pokedex_description = self.setup_pokedex_description_data( - pokedex, description='base pkdx desc') - pokemon_species = self.setup_pokemon_species_data(name='pkmn spcs for base pkdx') + pokedex, description="base pkdx desc" + ) + pokemon_species = self.setup_pokemon_species_data( + name="pkmn spcs for base pkdx" + ) dex_entry = self.setup_pokemon_dex_entry_data( - pokedex=pokedex, pokemon_species=pokemon_species) + pokedex=pokedex, pokemon_species=pokemon_species + ) - response = self.client.get('{}/pokedex/{}/'.format(API_V2, pokedex.pk)) + response = self.client.get("{}/pokedex/{}/".format(API_V2, pokedex.pk)) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], pokedex.pk) - self.assertEqual(response.data['name'], pokedex.name) - self.assertEqual(response.data['is_main_series'], pokedex.is_main_series) + self.assertEqual(response.data["id"], pokedex.pk) + self.assertEqual(response.data["name"], pokedex.name) + self.assertEqual(response.data["is_main_series"], pokedex.is_main_series) # name params - self.assertEqual(response.data['names'][0]['name'], pokedex_name.name) - self.assertEqual(response.data['names'][0]['language']['name'], pokedex_name.language.name) + self.assertEqual(response.data["names"][0]["name"], pokedex_name.name) + self.assertEqual( + response.data["names"][0]["language"]["name"], pokedex_name.language.name + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, pokedex_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, pokedex_name.language.pk), + ) # descriptions params self.assertEqual( - response.data['descriptions'][0]['description'], pokedex_description.description) + response.data["descriptions"][0]["description"], + pokedex_description.description, + ) self.assertEqual( - response.data['descriptions'][0]['language']['name'], pokedex_description.language.name) + response.data["descriptions"][0]["language"]["name"], + pokedex_description.language.name, + ) self.assertEqual( - response.data['descriptions'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, pokedex_description.language.pk)) + response.data["descriptions"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, pokedex_description.language.pk + ), + ) # region params - self.assertEqual(response.data['region']['name'], pokedex.region.name) + self.assertEqual(response.data["region"]["name"], pokedex.region.name) self.assertEqual( - response.data['region']['url'], - '{}{}/region/{}/'.format(TEST_HOST, API_V2, pokedex.region.pk)) + response.data["region"]["url"], + "{}{}/region/{}/".format(TEST_HOST, API_V2, pokedex.region.pk), + ) # species params self.assertEqual( - response.data['pokemon_entries'][0]['entry_number'], dex_entry.pokedex_number) + response.data["pokemon_entries"][0]["entry_number"], + dex_entry.pokedex_number, + ) self.assertEqual( - response.data['pokemon_entries'][0]['pokemon_species']['name'], pokemon_species.name) + response.data["pokemon_entries"][0]["pokemon_species"]["name"], + pokemon_species.name, + ) self.assertEqual( - response.data['pokemon_entries'][0]['pokemon_species']['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, pokemon_species.pk)) + response.data["pokemon_entries"][0]["pokemon_species"]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, pokemon_species.pk), + ) # Move Tests def test_move_ailment_api(self): - move_ailment = self.setup_move_ailment_data(name='base mv almnt') + move_ailment = self.setup_move_ailment_data(name="base mv almnt") move_ailment_name = self.setup_move_ailment_name_data( - move_ailment, name='base mv almnt name') - move = self.setup_move_data(name='mv for base mv almnt') + move_ailment, name="base mv almnt name" + ) + move = self.setup_move_data(name="mv for base mv almnt") self.setup_move_meta_data(move=move, move_ailment=move_ailment) - response = self.client.get('{}/move-ailment/{}/'.format(API_V2, move_ailment.pk)) + response = self.client.get( + "{}/move-ailment/{}/".format(API_V2, move_ailment.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], move_ailment.pk) - self.assertEqual(response.data['name'], move_ailment.name) + self.assertEqual(response.data["id"], move_ailment.pk) + self.assertEqual(response.data["name"], move_ailment.name) # name params - self.assertEqual(response.data['names'][0]['name'], move_ailment_name.name) + self.assertEqual(response.data["names"][0]["name"], move_ailment_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], move_ailment_name.language.name) + response.data["names"][0]["language"]["name"], + move_ailment_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, move_ailment_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, move_ailment_name.language.pk + ), + ) # move params - self.assertEqual(response.data['moves'][0]['name'], move.name) + self.assertEqual(response.data["moves"][0]["name"], move.name) self.assertEqual( - response.data['moves'][0]['url'], '{}{}/move/{}/'.format(TEST_HOST, API_V2, move.pk)) + response.data["moves"][0]["url"], + "{}{}/move/{}/".format(TEST_HOST, API_V2, move.pk), + ) def test_move_battle_style_api(self): - move_battle_style = self.setup_move_battle_style_data(name='base mv btl stl') + move_battle_style = self.setup_move_battle_style_data(name="base mv btl stl") move_battle_style_name = self.setup_move_battle_style_name_data( - move_battle_style, name='base mv btl stl name') + move_battle_style, name="base mv btl stl name" + ) - response = self.client.get('{}/move-battle-style/{}/'.format(API_V2, move_battle_style.pk)) + response = self.client.get( + "{}/move-battle-style/{}/".format(API_V2, move_battle_style.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], move_battle_style.pk) - self.assertEqual(response.data['name'], move_battle_style.name) + self.assertEqual(response.data["id"], move_battle_style.pk) + self.assertEqual(response.data["name"], move_battle_style.name) # name params - self.assertEqual(response.data['names'][0]['name'], move_battle_style_name.name) + self.assertEqual(response.data["names"][0]["name"], move_battle_style_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], move_battle_style_name.language.name) + response.data["names"][0]["language"]["name"], + move_battle_style_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, move_battle_style_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, move_battle_style_name.language.pk + ), + ) def test_move_category_api(self): - move_category = self.setup_move_category_data(name='base mv ctgry') + move_category = self.setup_move_category_data(name="base mv ctgry") move_category_description = self.setup_move_category_description_data( - move_category, description='base mv ctgry description') - move = self.setup_move_data(name='mv for base mv ctgry') + move_category, description="base mv ctgry description" + ) + move = self.setup_move_data(name="mv for base mv ctgry") self.setup_move_meta_data(move=move, move_category=move_category) - response = self.client.get('{}/move-category/{}/'.format(API_V2, move_category.pk)) + response = self.client.get( + "{}/move-category/{}/".format(API_V2, move_category.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], move_category.pk) - self.assertEqual(response.data['name'], move_category.name) + self.assertEqual(response.data["id"], move_category.pk) + self.assertEqual(response.data["name"], move_category.name) # name params self.assertEqual( - response.data['descriptions'][0]['description'], move_category_description.description) + response.data["descriptions"][0]["description"], + move_category_description.description, + ) self.assertEqual( - response.data['descriptions'][0]['language']['name'], - move_category_description.language.name) + response.data["descriptions"][0]["language"]["name"], + move_category_description.language.name, + ) self.assertEqual( - response.data['descriptions'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, move_category_description.language.pk)) + response.data["descriptions"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, move_category_description.language.pk + ), + ) # move params - self.assertEqual(response.data['moves'][0]['name'], move.name) + self.assertEqual(response.data["moves"][0]["name"], move.name) self.assertEqual( - response.data['moves'][0]['url'], '{}{}/move/{}/'.format(TEST_HOST, API_V2, move.pk)) + response.data["moves"][0]["url"], + "{}{}/move/{}/".format(TEST_HOST, API_V2, move.pk), + ) def test_move_damage_class_api(self): - move_damage_class = self.setup_move_damage_class_data(name='base mv dmg cls') + move_damage_class = self.setup_move_damage_class_data(name="base mv dmg cls") move_damage_class_name = self.setup_move_damage_class_name_data( - move_damage_class, name='base mv dmg cls nm') + move_damage_class, name="base mv dmg cls nm" + ) move_damage_class_description = self.setup_move_damage_class_description_data( - move_damage_class, description='base mv dmg cls desc') + move_damage_class, description="base mv dmg cls desc" + ) move = self.setup_move_data( - name='mv for base mv dmg cls', move_damage_class=move_damage_class) + name="mv for base mv dmg cls", move_damage_class=move_damage_class + ) - response = self.client.get('{}/move-damage-class/{}/'.format(API_V2, move_damage_class.pk)) + response = self.client.get( + "{}/move-damage-class/{}/".format(API_V2, move_damage_class.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], move_damage_class.pk) - self.assertEqual(response.data['name'], move_damage_class.name) + self.assertEqual(response.data["id"], move_damage_class.pk) + self.assertEqual(response.data["name"], move_damage_class.name) # name params - self.assertEqual(response.data['names'][0]['name'], move_damage_class_name.name) + self.assertEqual(response.data["names"][0]["name"], move_damage_class_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], move_damage_class_name.language.name) + response.data["names"][0]["language"]["name"], + move_damage_class_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, move_damage_class_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, move_damage_class_name.language.pk + ), + ) # description params self.assertEqual( - response.data['descriptions'][0]['description'], - move_damage_class_description.description) + response.data["descriptions"][0]["description"], + move_damage_class_description.description, + ) self.assertEqual( - response.data['descriptions'][0]['language']['name'], - move_damage_class_description.language.name) + response.data["descriptions"][0]["language"]["name"], + move_damage_class_description.language.name, + ) self.assertEqual( - response.data['descriptions'][0]['language']['url'], - '{}{}/language/{}/'.format( - TEST_HOST, API_V2, move_damage_class_description.language.pk)) + response.data["descriptions"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, move_damage_class_description.language.pk + ), + ) # move params - self.assertEqual(response.data['moves'][0]['name'], move.name) + self.assertEqual(response.data["moves"][0]["name"], move.name) self.assertEqual( - response.data['moves'][0]['url'], '{}{}/move/{}/'.format(TEST_HOST, API_V2, move.pk)) + response.data["moves"][0]["url"], + "{}{}/move/{}/".format(TEST_HOST, API_V2, move.pk), + ) def test_move_learn_method_api(self): - move_learn_method = self.setup_move_learn_method_data(name='base mv lrn mthd') + move_learn_method = self.setup_move_learn_method_data(name="base mv lrn mthd") move_learn_method_name = self.setup_move_learn_method_name_data( - move_learn_method, name='base mv lrn mthd nm') + move_learn_method, name="base mv lrn mthd nm" + ) move_learn_method_description = self.setup_move_learn_method_description_data( - move_learn_method, description='base mv lrn mthd desc') - version_group = self.setup_version_group_data(name='ver grp for base mv lrn mthd') + move_learn_method, description="base mv lrn mthd desc" + ) + version_group = self.setup_version_group_data( + name="ver grp for base mv lrn mthd" + ) self.setup_version_group_move_learn_method_data( - version_group=version_group, move_learn_method=move_learn_method) + version_group=version_group, move_learn_method=move_learn_method + ) - response = self.client.get('{}/move-learn-method/{}/'.format(API_V2, move_learn_method.pk)) + response = self.client.get( + "{}/move-learn-method/{}/".format(API_V2, move_learn_method.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], move_learn_method.pk) - self.assertEqual(response.data['name'], move_learn_method.name) + self.assertEqual(response.data["id"], move_learn_method.pk) + self.assertEqual(response.data["name"], move_learn_method.name) # name params - self.assertEqual(response.data['names'][0]['name'], move_learn_method_name.name) + self.assertEqual(response.data["names"][0]["name"], move_learn_method_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], move_learn_method_name.language.name) + response.data["names"][0]["language"]["name"], + move_learn_method_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, move_learn_method_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, move_learn_method_name.language.pk + ), + ) # description params self.assertEqual( - response.data['descriptions'][0]['description'], - move_learn_method_description.description) + response.data["descriptions"][0]["description"], + move_learn_method_description.description, + ) self.assertEqual( - response.data['descriptions'][0]['language']['name'], - move_learn_method_description.language.name) + response.data["descriptions"][0]["language"]["name"], + move_learn_method_description.language.name, + ) self.assertEqual( - response.data['descriptions'][0]['language']['url'], - '{}{}/language/{}/'.format( - TEST_HOST, API_V2, move_learn_method_description.language.pk)) + response.data["descriptions"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, move_learn_method_description.language.pk + ), + ) # version group params - self.assertEqual(response.data['version_groups'][0]['name'], version_group.name) + self.assertEqual(response.data["version_groups"][0]["name"], version_group.name) self.assertEqual( - response.data['version_groups'][0]['url'], - '{}{}/version-group/{}/'.format(TEST_HOST, API_V2, version_group.pk)) + response.data["version_groups"][0]["url"], + "{}{}/version-group/{}/".format(TEST_HOST, API_V2, version_group.pk), + ) def test_move_target_api(self): - move_target = self.setup_move_target_data(name='base mv trgt') - move_target_name = self.setup_move_target_name_data(move_target, name='base mv trgt nm') + move_target = self.setup_move_target_data(name="base mv trgt") + move_target_name = self.setup_move_target_name_data( + move_target, name="base mv trgt nm" + ) move_target_description = self.setup_move_target_description_data( - move_target, description='base mv trgt desc') - move = self.setup_move_data(name='mv for base mv trgt', move_target=move_target) + move_target, description="base mv trgt desc" + ) + move = self.setup_move_data(name="mv for base mv trgt", move_target=move_target) - response = self.client.get('{}/move-target/{}/'.format(API_V2, move_target.pk)) + response = self.client.get("{}/move-target/{}/".format(API_V2, move_target.pk)) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], move_target.pk) - self.assertEqual(response.data['name'], move_target.name) + self.assertEqual(response.data["id"], move_target.pk) + self.assertEqual(response.data["name"], move_target.name) # name params - self.assertEqual(response.data['names'][0]['name'], move_target_name.name) + self.assertEqual(response.data["names"][0]["name"], move_target_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], move_target_name.language.name) + response.data["names"][0]["language"]["name"], + move_target_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, move_target_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, move_target_name.language.pk), + ) # description params self.assertEqual( - response.data['descriptions'][0]['description'], move_target_description.description) + response.data["descriptions"][0]["description"], + move_target_description.description, + ) self.assertEqual( - response.data['descriptions'][0]['language']['name'], - move_target_description.language.name) + response.data["descriptions"][0]["language"]["name"], + move_target_description.language.name, + ) self.assertEqual( - response.data['descriptions'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, move_target_description.language.pk)) + response.data["descriptions"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, move_target_description.language.pk + ), + ) # move params - self.assertEqual(response.data['moves'][0]['name'], move.name) + self.assertEqual(response.data["moves"][0]["name"], move.name) self.assertEqual( - response.data['moves'][0]['url'], '{}{}/move/{}/'.format(TEST_HOST, API_V2, move.pk)) + response.data["moves"][0]["url"], + "{}{}/move/{}/".format(TEST_HOST, API_V2, move.pk), + ) def test_move_api(self): move_effect = self.setup_move_effect_data() move_effect_effect_text = self.setup_move_effect_effect_text_data(move_effect) - move = self.setup_move_data(name='base mv', move_effect=move_effect) - move_name = self.setup_move_name_data(move, name='base mv nm') + move = self.setup_move_data(name="base mv", move_effect=move_effect) + move_name = self.setup_move_name_data(move, name="base mv nm") move_meta = self.setup_move_meta_data(move) move_stat_change = self.setup_move_stat_change_data(move=move, change=2) move_change = self.setup_move_change_data(move, power=10, pp=20, accuracy=30) move_effect_change = self.setup_move_effect_change_data(move_effect) move_effect_change_effect_text = self.setup_move_effect_change_effect_text_data( - move_effect_change=move_effect_change, effect='efct tx for mv efct chng') + move_effect_change=move_effect_change, effect="efct tx for mv efct chng" + ) - after_move = self.setup_move_data(name='after mv') - before_move = self.setup_move_data(name='before mv') + after_move = self.setup_move_data(name="after mv") + before_move = self.setup_move_data(name="before mv") self.setup_contest_combo_data(move, after_move) self.setup_contest_combo_data(before_move, move) self.setup_super_contest_combo_data(move, after_move) self.setup_super_contest_combo_data(before_move, move) - move_flavor_text = self.setup_move_flavor_text_data(move, flavor_text='flvr text for move') + move_flavor_text = self.setup_move_flavor_text_data( + move, flavor_text="flvr text for move" + ) - response = self.client.get('{}/move/{}/'.format(API_V2, move.pk)) + response = self.client.get("{}/move/{}/".format(API_V2, move.pk)) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], move.pk) - self.assertEqual(response.data['name'], move.name) - self.assertEqual(response.data['accuracy'], move.accuracy) - self.assertEqual(response.data['effect_chance'], move.move_effect_chance) - self.assertEqual(response.data['power'], move.power) - self.assertEqual(response.data['pp'], move.pp) - self.assertEqual(response.data['priority'], move.priority) + self.assertEqual(response.data["id"], move.pk) + self.assertEqual(response.data["name"], move.name) + self.assertEqual(response.data["accuracy"], move.accuracy) + self.assertEqual(response.data["effect_chance"], move.move_effect_chance) + self.assertEqual(response.data["power"], move.power) + self.assertEqual(response.data["pp"], move.pp) + self.assertEqual(response.data["priority"], move.priority) # name params - self.assertEqual(response.data['names'][0]['name'], move_name.name) - self.assertEqual(response.data['names'][0]['language']['name'], move_name.language.name) + self.assertEqual(response.data["names"][0]["name"], move_name.name) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, move_name.language.pk)) + response.data["names"][0]["language"]["name"], move_name.language.name + ) + self.assertEqual( + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, move_name.language.pk), + ) # damage class params - self.assertEqual(response.data['damage_class']['name'], move.move_damage_class.name) self.assertEqual( - response.data['damage_class']['url'], - '{}{}/move-damage-class/{}/'.format(TEST_HOST, API_V2, move.move_damage_class.pk)) + response.data["damage_class"]["name"], move.move_damage_class.name + ) + self.assertEqual( + response.data["damage_class"]["url"], + "{}{}/move-damage-class/{}/".format( + TEST_HOST, API_V2, move.move_damage_class.pk + ), + ) # contest type params - self.assertEqual(response.data['contest_type']['name'], move.contest_type.name) + self.assertEqual(response.data["contest_type"]["name"], move.contest_type.name) self.assertEqual( - response.data['contest_type']['url'], - '{}{}/contest-type/{}/'.format(TEST_HOST, API_V2, move.contest_type.pk)) + response.data["contest_type"]["url"], + "{}{}/contest-type/{}/".format(TEST_HOST, API_V2, move.contest_type.pk), + ) # contest effect params self.assertEqual( - response.data['contest_effect']['url'], - '{}{}/contest-effect/{}/'.format(TEST_HOST, API_V2, move.contest_effect.pk)) + response.data["contest_effect"]["url"], + "{}{}/contest-effect/{}/".format(TEST_HOST, API_V2, move.contest_effect.pk), + ) # super contest effect params self.assertEqual( - response.data['super_contest_effect']['url'], - '{}{}/super-contest-effect/{}/'.format(TEST_HOST, API_V2, move.super_contest_effect.pk)) + response.data["super_contest_effect"]["url"], + "{}{}/super-contest-effect/{}/".format( + TEST_HOST, API_V2, move.super_contest_effect.pk + ), + ) # generation params - self.assertEqual(response.data['generation']['name'], move.generation.name) + self.assertEqual(response.data["generation"]["name"], move.generation.name) self.assertEqual( - response.data['generation']['url'], - '{}{}/generation/{}/'.format(TEST_HOST, API_V2, move.generation.pk)) + response.data["generation"]["url"], + "{}{}/generation/{}/".format(TEST_HOST, API_V2, move.generation.pk), + ) # target params - self.assertEqual(response.data['target']['name'], move.move_target.name) + self.assertEqual(response.data["target"]["name"], move.move_target.name) self.assertEqual( - response.data['target']['url'], - '{}{}/move-target/{}/'.format(TEST_HOST, API_V2, move.move_target.pk)) + response.data["target"]["url"], + "{}{}/move-target/{}/".format(TEST_HOST, API_V2, move.move_target.pk), + ) # type params - self.assertEqual(response.data['type']['name'], move.type.name) + self.assertEqual(response.data["type"]["name"], move.type.name) self.assertEqual( - response.data['type']['url'], - '{}{}/type/{}/'.format(TEST_HOST, API_V2, move.type.pk)) + response.data["type"]["url"], + "{}{}/type/{}/".format(TEST_HOST, API_V2, move.type.pk), + ) # stat change params - self.assertEqual(response.data['stat_changes'][0]['change'], move_stat_change.change) self.assertEqual( - response.data['stat_changes'][0]['stat']['name'], move_stat_change.stat.name) + response.data["stat_changes"][0]["change"], move_stat_change.change + ) + self.assertEqual( + response.data["stat_changes"][0]["stat"]["name"], move_stat_change.stat.name + ) self.assertEqual( - response.data['stat_changes'][0]['stat']['url'], - '{}{}/stat/{}/'.format(TEST_HOST, API_V2, move_stat_change.stat.pk)) + response.data["stat_changes"][0]["stat"]["url"], + "{}{}/stat/{}/".format(TEST_HOST, API_V2, move_stat_change.stat.pk), + ) # effect entries params self.assertEqual( - response.data['effect_entries'][0]['effect'], move_effect_effect_text.effect) + response.data["effect_entries"][0]["effect"], move_effect_effect_text.effect + ) self.assertEqual( - response.data['effect_entries'][0]['short_effect'], - move_effect_effect_text.short_effect) + response.data["effect_entries"][0]["short_effect"], + move_effect_effect_text.short_effect, + ) self.assertEqual( - response.data['effect_entries'][0]['language']['name'], - move_effect_effect_text.language.name) + response.data["effect_entries"][0]["language"]["name"], + move_effect_effect_text.language.name, + ) self.assertEqual( - response.data['effect_entries'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, move_effect_effect_text.language.pk)) + response.data["effect_entries"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, move_effect_effect_text.language.pk + ), + ) # meta data - self.assertEqual(response.data['meta']['min_hits'], move_meta.min_hits) - self.assertEqual(response.data['meta']['max_hits'], move_meta.max_hits) - self.assertEqual(response.data['meta']['min_turns'], move_meta.min_turns) - self.assertEqual(response.data['meta']['max_turns'], move_meta.max_turns) - self.assertEqual(response.data['meta']['drain'], move_meta.drain) - self.assertEqual(response.data['meta']['healing'], move_meta.healing) - self.assertEqual(response.data['meta']['crit_rate'], move_meta.crit_rate) - self.assertEqual(response.data['meta']['ailment_chance'], move_meta.ailment_chance) - self.assertEqual(response.data['meta']['flinch_chance'], move_meta.flinch_chance) - self.assertEqual(response.data['meta']['stat_chance'], move_meta.stat_chance) + self.assertEqual(response.data["meta"]["min_hits"], move_meta.min_hits) + self.assertEqual(response.data["meta"]["max_hits"], move_meta.max_hits) + self.assertEqual(response.data["meta"]["min_turns"], move_meta.min_turns) + self.assertEqual(response.data["meta"]["max_turns"], move_meta.max_turns) + self.assertEqual(response.data["meta"]["drain"], move_meta.drain) + self.assertEqual(response.data["meta"]["healing"], move_meta.healing) + self.assertEqual(response.data["meta"]["crit_rate"], move_meta.crit_rate) + self.assertEqual( + response.data["meta"]["ailment_chance"], move_meta.ailment_chance + ) + self.assertEqual( + response.data["meta"]["flinch_chance"], move_meta.flinch_chance + ) + self.assertEqual(response.data["meta"]["stat_chance"], move_meta.stat_chance) # ailment params - self.assertEqual(response.data['meta']['ailment']['name'], move_meta.move_meta_ailment.name) self.assertEqual( - response.data['meta']['ailment']['url'], - '{}{}/move-ailment/{}/'.format(TEST_HOST, API_V2, move_meta.move_meta_ailment.pk)) + response.data["meta"]["ailment"]["name"], move_meta.move_meta_ailment.name + ) + self.assertEqual( + response.data["meta"]["ailment"]["url"], + "{}{}/move-ailment/{}/".format( + TEST_HOST, API_V2, move_meta.move_meta_ailment.pk + ), + ) # category params self.assertEqual( - response.data['meta']['category']['name'], move_meta.move_meta_category.name) + response.data["meta"]["category"]["name"], move_meta.move_meta_category.name + ) self.assertEqual( - response.data['meta']['category']['url'], - '{}{}/move-category/{}/'.format(TEST_HOST, API_V2, move_meta.move_meta_category.pk)) + response.data["meta"]["category"]["url"], + "{}{}/move-category/{}/".format( + TEST_HOST, API_V2, move_meta.move_meta_category.pk + ), + ) # combo params self.assertEqual( - response.data['contest_combos']['normal']['use_before'][0]['name'], after_move.name) + response.data["contest_combos"]["normal"]["use_before"][0]["name"], + after_move.name, + ) self.assertEqual( - response.data['contest_combos']['normal']['use_before'][0]['url'], - '{}{}/move/{}/'.format(TEST_HOST, API_V2, after_move.pk)) + response.data["contest_combos"]["normal"]["use_before"][0]["url"], + "{}{}/move/{}/".format(TEST_HOST, API_V2, after_move.pk), + ) self.assertEqual( - response.data['contest_combos']['normal']['use_after'][0]['name'], before_move.name) + response.data["contest_combos"]["normal"]["use_after"][0]["name"], + before_move.name, + ) self.assertEqual( - response.data['contest_combos']['normal']['use_after'][0]['url'], - '{}{}/move/{}/'.format(TEST_HOST, API_V2, before_move.pk)) + response.data["contest_combos"]["normal"]["use_after"][0]["url"], + "{}{}/move/{}/".format(TEST_HOST, API_V2, before_move.pk), + ) self.assertEqual( - response.data['contest_combos']['super']['use_before'][0]['name'], after_move.name) + response.data["contest_combos"]["super"]["use_before"][0]["name"], + after_move.name, + ) self.assertEqual( - response.data['contest_combos']['super']['use_before'][0]['url'], - '{}{}/move/{}/'.format(TEST_HOST, API_V2, after_move.pk)) + response.data["contest_combos"]["super"]["use_before"][0]["url"], + "{}{}/move/{}/".format(TEST_HOST, API_V2, after_move.pk), + ) self.assertEqual( - response.data['contest_combos']['super']['use_after'][0]['name'], before_move.name) + response.data["contest_combos"]["super"]["use_after"][0]["name"], + before_move.name, + ) self.assertEqual( - response.data['contest_combos']['super']['use_after'][0]['url'], - '{}{}/move/{}/'.format(TEST_HOST, API_V2, before_move.pk)) + response.data["contest_combos"]["super"]["use_after"][0]["url"], + "{}{}/move/{}/".format(TEST_HOST, API_V2, before_move.pk), + ) # change params - self.assertEqual(response.data['past_values'][0]['accuracy'], move_change.accuracy) - self.assertEqual(response.data['past_values'][0]['power'], move_change.power) - self.assertEqual(response.data['past_values'][0]['pp'], move_change.pp) self.assertEqual( - response.data['past_values'][0]['effect_chance'], move_change.move_effect_chance) + response.data["past_values"][0]["accuracy"], move_change.accuracy + ) + self.assertEqual(response.data["past_values"][0]["power"], move_change.power) + self.assertEqual(response.data["past_values"][0]["pp"], move_change.pp) self.assertEqual( - response.data['past_values'][0]['version_group']['name'], - move_change.version_group.name) + response.data["past_values"][0]["effect_chance"], + move_change.move_effect_chance, + ) self.assertEqual( - response.data['past_values'][0]['version_group']['url'], - '{}{}/version-group/{}/'.format(TEST_HOST, API_V2, move_change.version_group.pk)) + response.data["past_values"][0]["version_group"]["name"], + move_change.version_group.name, + ) + self.assertEqual( + response.data["past_values"][0]["version_group"]["url"], + "{}{}/version-group/{}/".format( + TEST_HOST, API_V2, move_change.version_group.pk + ), + ) # effect changes self.assertEqual( - response.data['effect_changes'][0]['version_group']['name'], - move_effect_change.version_group.name) + response.data["effect_changes"][0]["version_group"]["name"], + move_effect_change.version_group.name, + ) self.assertEqual( - response.data['effect_changes'][0]['version_group']['url'], - '{}{}/version-group/{}/'.format(TEST_HOST, API_V2, move_effect_change.version_group.pk)) + response.data["effect_changes"][0]["version_group"]["url"], + "{}{}/version-group/{}/".format( + TEST_HOST, API_V2, move_effect_change.version_group.pk + ), + ) self.assertEqual( - response.data['effect_changes'][0]['effect_entries'][0]['effect'], - move_effect_change_effect_text.effect) + response.data["effect_changes"][0]["effect_entries"][0]["effect"], + move_effect_change_effect_text.effect, + ) self.assertEqual( - response.data['effect_changes'][0]['effect_entries'][0]['language']['name'], - move_effect_change_effect_text.language.name) + response.data["effect_changes"][0]["effect_entries"][0]["language"]["name"], + move_effect_change_effect_text.language.name, + ) self.assertEqual( - response.data['effect_changes'][0]['effect_entries'][0]['language']['url'], - '{}{}/language/{}/'.format( - TEST_HOST, API_V2, move_effect_change_effect_text.language.pk)) + response.data["effect_changes"][0]["effect_entries"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, move_effect_change_effect_text.language.pk + ), + ) # flavor text params self.assertEqual( - response.data['flavor_text_entries'][0]['flavor_text'], move_flavor_text.flavor_text) + response.data["flavor_text_entries"][0]["flavor_text"], + move_flavor_text.flavor_text, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['language']['name'], - move_flavor_text.language.name) + response.data["flavor_text_entries"][0]["language"]["name"], + move_flavor_text.language.name, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, move_flavor_text.language.pk)) + response.data["flavor_text_entries"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, move_flavor_text.language.pk), + ) self.assertEqual( - response.data['flavor_text_entries'][0]['version_group']['name'], - move_flavor_text.version_group.name) + response.data["flavor_text_entries"][0]["version_group"]["name"], + move_flavor_text.version_group.name, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['version_group']['url'], - '{}{}/version-group/{}/'.format(TEST_HOST, API_V2, move_flavor_text.version_group.pk)) + response.data["flavor_text_entries"][0]["version_group"]["url"], + "{}{}/version-group/{}/".format( + TEST_HOST, API_V2, move_flavor_text.version_group.pk + ), + ) # Stat Tests def test_stat_api(self): - stat = self.setup_stat_data(name='base stt') - stat_name = self.setup_stat_name_data(stat, name='base stt name') + stat = self.setup_stat_data(name="base stt") + stat_name = self.setup_stat_name_data(stat, name="base stt name") increase_move = self.setup_move_data(name="incrs mv for base stt") increase_move_stat_change = self.setup_move_stat_change_data( - move=increase_move, stat=stat, change=2) + move=increase_move, stat=stat, change=2 + ) decrease_move = self.setup_move_data(name="dcrs mv for base stt") decrease_move_stat_change = self.setup_move_stat_change_data( - move=decrease_move, stat=stat, change=(-2)) - increase_nature = self.setup_nature_data(name="incrs ntr for base stt", increased_stat=stat) - decrease_nature = self.setup_nature_data(name="dcrs ntr for base stt", decreased_stat=stat) + move=decrease_move, stat=stat, change=(-2) + ) + increase_nature = self.setup_nature_data( + name="incrs ntr for base stt", increased_stat=stat + ) + decrease_nature = self.setup_nature_data( + name="dcrs ntr for base stt", decreased_stat=stat + ) characteristic = self.setup_characteristic_data(stat=stat) - response = self.client.get('{}/stat/{}/'.format(API_V2, stat.pk)) + response = self.client.get("{}/stat/{}/".format(API_V2, stat.pk)) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], stat.pk) - self.assertEqual(response.data['name'], stat.name) - self.assertEqual(response.data['game_index'], stat.game_index) - self.assertEqual(response.data['is_battle_only'], stat.is_battle_only) + self.assertEqual(response.data["id"], stat.pk) + self.assertEqual(response.data["name"], stat.name) + self.assertEqual(response.data["game_index"], stat.game_index) + self.assertEqual(response.data["is_battle_only"], stat.is_battle_only) # name params - self.assertEqual(response.data['names'][0]['name'], stat_name.name) - self.assertEqual(response.data['names'][0]['language']['name'], stat_name.language.name) + self.assertEqual(response.data["names"][0]["name"], stat_name.name) + self.assertEqual( + response.data["names"][0]["language"]["name"], stat_name.language.name + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, stat_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, stat_name.language.pk), + ) # move damage class params - self.assertEqual(response.data['move_damage_class']['name'], stat.move_damage_class.name) self.assertEqual( - response.data['move_damage_class']['url'], - '{}{}/move-damage-class/{}/'.format(TEST_HOST, API_V2, stat.move_damage_class.pk)) + response.data["move_damage_class"]["name"], stat.move_damage_class.name + ) + self.assertEqual( + response.data["move_damage_class"]["url"], + "{}{}/move-damage-class/{}/".format( + TEST_HOST, API_V2, stat.move_damage_class.pk + ), + ) # nature params self.assertEqual( - response.data['affecting_natures']['increase'][0]['name'], increase_nature.name) + response.data["affecting_natures"]["increase"][0]["name"], + increase_nature.name, + ) self.assertEqual( - response.data['affecting_natures']['increase'][0]['url'], - '{}{}/nature/{}/'.format(TEST_HOST, API_V2, increase_nature.pk)) + response.data["affecting_natures"]["increase"][0]["url"], + "{}{}/nature/{}/".format(TEST_HOST, API_V2, increase_nature.pk), + ) self.assertEqual( - response.data['affecting_natures']['decrease'][0]['name'], decrease_nature.name) + response.data["affecting_natures"]["decrease"][0]["name"], + decrease_nature.name, + ) self.assertEqual( - response.data['affecting_natures']['decrease'][0]['url'], - '{}{}/nature/{}/'.format(TEST_HOST, API_V2, decrease_nature.pk)) + response.data["affecting_natures"]["decrease"][0]["url"], + "{}{}/nature/{}/".format(TEST_HOST, API_V2, decrease_nature.pk), + ) # move params self.assertEqual( - response.data['affecting_moves']['increase'][0]['change'], - increase_move_stat_change.change) + response.data["affecting_moves"]["increase"][0]["change"], + increase_move_stat_change.change, + ) self.assertEqual( - response.data['affecting_moves']['increase'][0]['move']['name'], increase_move.name) + response.data["affecting_moves"]["increase"][0]["move"]["name"], + increase_move.name, + ) self.assertEqual( - response.data['affecting_moves']['increase'][0]['move']['url'], - '{}{}/move/{}/'.format(TEST_HOST, API_V2, increase_move.pk)) + response.data["affecting_moves"]["increase"][0]["move"]["url"], + "{}{}/move/{}/".format(TEST_HOST, API_V2, increase_move.pk), + ) self.assertEqual( - response.data['affecting_moves']['decrease'][0]['change'], - decrease_move_stat_change.change) + response.data["affecting_moves"]["decrease"][0]["change"], + decrease_move_stat_change.change, + ) self.assertEqual( - response.data['affecting_moves']['decrease'][0]['move']['name'], decrease_move.name) + response.data["affecting_moves"]["decrease"][0]["move"]["name"], + decrease_move.name, + ) self.assertEqual( - response.data['affecting_moves']['decrease'][0]['move']['url'], - '{}{}/move/{}/'.format(TEST_HOST, API_V2, decrease_move.pk)) + response.data["affecting_moves"]["decrease"][0]["move"]["url"], + "{}{}/move/{}/".format(TEST_HOST, API_V2, decrease_move.pk), + ) # characteristics params self.assertEqual( - response.data['characteristics'][0]['url'], - '{}{}/characteristic/{}/'.format(TEST_HOST, API_V2, characteristic.pk)) + response.data["characteristics"][0]["url"], + "{}{}/characteristic/{}/".format(TEST_HOST, API_V2, characteristic.pk), + ) def test_pokeathlon_stat_api(self): - pokeathlon_stat = self.setup_pokeathlon_stat_data(name='base pkathln stt') + pokeathlon_stat = self.setup_pokeathlon_stat_data(name="base pkathln stt") pokeathlon_stat_name = self.setup_pokeathlon_stat_name_data( - pokeathlon_stat, name='base pkathln stt name') + pokeathlon_stat, name="base pkathln stt name" + ) - response = self.client.get('{}/pokeathlon-stat/{}/'.format(API_V2, pokeathlon_stat.pk)) + response = self.client.get( + "{}/pokeathlon-stat/{}/".format(API_V2, pokeathlon_stat.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], pokeathlon_stat.pk) - self.assertEqual(response.data['name'], pokeathlon_stat.name) + self.assertEqual(response.data["id"], pokeathlon_stat.pk) + self.assertEqual(response.data["name"], pokeathlon_stat.name) # name params - self.assertEqual(response.data['names'][0]['name'], pokeathlon_stat_name.name) + self.assertEqual(response.data["names"][0]["name"], pokeathlon_stat_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], pokeathlon_stat_name.language.name) + response.data["names"][0]["language"]["name"], + pokeathlon_stat_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, pokeathlon_stat_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, pokeathlon_stat_name.language.pk + ), + ) # Characteristic Tests def test_characteristic_api(self): characteristic = self.setup_characteristic_data(gene_mod_5=5) characteristic_description = self.setup_characteristic_description_data( - characteristic, description='base char desc') + characteristic, description="base char desc" + ) - response = self.client.get('{}/characteristic/{}/'.format(API_V2, characteristic.pk)) + response = self.client.get( + "{}/characteristic/{}/".format(API_V2, characteristic.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], characteristic.pk) - self.assertEqual(response.data['gene_modulo'], characteristic.gene_mod_5) + self.assertEqual(response.data["id"], characteristic.pk) + self.assertEqual(response.data["gene_modulo"], characteristic.gene_mod_5) # name params self.assertEqual( - response.data['descriptions'][0]['description'], - characteristic_description.description) + response.data["descriptions"][0]["description"], + characteristic_description.description, + ) self.assertEqual( - response.data['descriptions'][0]['language']['name'], - characteristic_description.language.name) + response.data["descriptions"][0]["language"]["name"], + characteristic_description.language.name, + ) self.assertEqual( - response.data['descriptions'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, characteristic_description.language.pk)) + response.data["descriptions"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, characteristic_description.language.pk + ), + ) # stat params - self.assertEqual(response.data['highest_stat']['name'], characteristic.stat.name) self.assertEqual( - response.data['highest_stat']['url'], - '{}{}/stat/{}/'.format(TEST_HOST, API_V2, characteristic.stat.pk)) + response.data["highest_stat"]["name"], characteristic.stat.name + ) + self.assertEqual( + response.data["highest_stat"]["url"], + "{}{}/stat/{}/".format(TEST_HOST, API_V2, characteristic.stat.pk), + ) # Nature Tests def test_nature_api(self): - hates_flavor = self.setup_berry_flavor_data(name='hts flvr for base ntr') - likes_flavor = self.setup_berry_flavor_data(name='lks flvr for base ntr') - decreased_stat = self.setup_stat_data(name='dcrs stt for base ntr') - increased_stat = self.setup_stat_data(name='ncrs stt for base ntr') + hates_flavor = self.setup_berry_flavor_data(name="hts flvr for base ntr") + likes_flavor = self.setup_berry_flavor_data(name="lks flvr for base ntr") + decreased_stat = self.setup_stat_data(name="dcrs stt for base ntr") + increased_stat = self.setup_stat_data(name="ncrs stt for base ntr") nature = self.setup_nature_data( - name='base ntr', hates_flavor=hates_flavor, likes_flavor=likes_flavor, - decreased_stat=decreased_stat, increased_stat=increased_stat) - nature_name = self.setup_nature_name_data(nature, name='base ntr name') + name="base ntr", + hates_flavor=hates_flavor, + likes_flavor=likes_flavor, + decreased_stat=decreased_stat, + increased_stat=increased_stat, + ) + nature_name = self.setup_nature_name_data(nature, name="base ntr name") - pokeathlon_stat = self.setup_pokeathlon_stat_data(name='pkeathln stt for ntr stt') + pokeathlon_stat = self.setup_pokeathlon_stat_data( + name="pkeathln stt for ntr stt" + ) nature_pokeathlon_stat = self.setup_nature_pokeathlon_stat_data( - nature=nature, pokeathlon_stat=pokeathlon_stat, max_change=1) + nature=nature, pokeathlon_stat=pokeathlon_stat, max_change=1 + ) - move_battle_style = self.setup_move_battle_style_data(name='mv btl stl for ntr stt') + move_battle_style = self.setup_move_battle_style_data( + name="mv btl stl for ntr stt" + ) nature_battle_style_preference = self.setup_nature_battle_style_preference_data( - nature=nature, move_battle_style=move_battle_style) + nature=nature, move_battle_style=move_battle_style + ) - response = self.client.get('{}/nature/{}/'.format(API_V2, nature.pk)) + response = self.client.get("{}/nature/{}/".format(API_V2, nature.pk)) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], nature.pk) - self.assertEqual(response.data['name'], nature.name) + self.assertEqual(response.data["id"], nature.pk) + self.assertEqual(response.data["name"], nature.name) # name params - self.assertEqual(response.data['names'][0]['name'], nature_name.name) - self.assertEqual(response.data['names'][0]['language']['name'], nature_name.language.name) + self.assertEqual(response.data["names"][0]["name"], nature_name.name) + self.assertEqual( + response.data["names"][0]["language"]["name"], nature_name.language.name + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, nature_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format(TEST_HOST, API_V2, nature_name.language.pk), + ) # stat params - self.assertEqual(response.data['decreased_stat']['name'], decreased_stat.name) + self.assertEqual(response.data["decreased_stat"]["name"], decreased_stat.name) self.assertEqual( - response.data['decreased_stat']['url'], - '{}{}/stat/{}/'.format(TEST_HOST, API_V2, decreased_stat.pk)) - self.assertEqual(response.data['increased_stat']['name'], increased_stat.name) + response.data["decreased_stat"]["url"], + "{}{}/stat/{}/".format(TEST_HOST, API_V2, decreased_stat.pk), + ) + self.assertEqual(response.data["increased_stat"]["name"], increased_stat.name) self.assertEqual( - response.data['increased_stat']['url'], - '{}{}/stat/{}/'.format(TEST_HOST, API_V2, increased_stat.pk)) + response.data["increased_stat"]["url"], + "{}{}/stat/{}/".format(TEST_HOST, API_V2, increased_stat.pk), + ) # flavor params - self.assertEqual(response.data['hates_flavor']['name'], hates_flavor.name) + self.assertEqual(response.data["hates_flavor"]["name"], hates_flavor.name) self.assertEqual( - response.data['hates_flavor']['url'], - '{}{}/berry-flavor/{}/'.format(TEST_HOST, API_V2, hates_flavor.pk)) - self.assertEqual(response.data['likes_flavor']['name'], likes_flavor.name) + response.data["hates_flavor"]["url"], + "{}{}/berry-flavor/{}/".format(TEST_HOST, API_V2, hates_flavor.pk), + ) + self.assertEqual(response.data["likes_flavor"]["name"], likes_flavor.name) self.assertEqual( - response.data['likes_flavor']['url'], - '{}{}/berry-flavor/{}/'.format(TEST_HOST, API_V2, likes_flavor.pk)) + response.data["likes_flavor"]["url"], + "{}{}/berry-flavor/{}/".format(TEST_HOST, API_V2, likes_flavor.pk), + ) # pokeathlon stat params self.assertEqual( - response.data['pokeathlon_stat_changes'][0]['max_change'], - nature_pokeathlon_stat.max_change) + response.data["pokeathlon_stat_changes"][0]["max_change"], + nature_pokeathlon_stat.max_change, + ) self.assertEqual( - response.data['pokeathlon_stat_changes'][0]['pokeathlon_stat']['name'], - pokeathlon_stat.name) + response.data["pokeathlon_stat_changes"][0]["pokeathlon_stat"]["name"], + pokeathlon_stat.name, + ) self.assertEqual( - response.data['pokeathlon_stat_changes'][0]['pokeathlon_stat']['url'], - '{}{}/pokeathlon-stat/{}/'.format(TEST_HOST, API_V2, pokeathlon_stat.pk)) + response.data["pokeathlon_stat_changes"][0]["pokeathlon_stat"]["url"], + "{}{}/pokeathlon-stat/{}/".format(TEST_HOST, API_V2, pokeathlon_stat.pk), + ) # pokeathlon stat params self.assertEqual( - response.data['move_battle_style_preferences'][0]['low_hp_preference'], - nature_battle_style_preference.low_hp_preference) + response.data["move_battle_style_preferences"][0]["low_hp_preference"], + nature_battle_style_preference.low_hp_preference, + ) self.assertEqual( - response.data['move_battle_style_preferences'][0]['high_hp_preference'], - nature_battle_style_preference.high_hp_preference) + response.data["move_battle_style_preferences"][0]["high_hp_preference"], + nature_battle_style_preference.high_hp_preference, + ) self.assertEqual( - response.data['move_battle_style_preferences'][0]['move_battle_style']['name'], - move_battle_style.name) + response.data["move_battle_style_preferences"][0]["move_battle_style"][ + "name" + ], + move_battle_style.name, + ) self.assertEqual( - response.data['move_battle_style_preferences'][0]['move_battle_style']['url'], - '{}{}/move-battle-style/{}/'.format(TEST_HOST, API_V2, move_battle_style.pk)) + response.data["move_battle_style_preferences"][0]["move_battle_style"][ + "url" + ], + "{}{}/move-battle-style/{}/".format( + TEST_HOST, API_V2, move_battle_style.pk + ), + ) # Pokemon Tests def test_pokemon_habitat_api(self): - pokemon_habitat = self.setup_pokemon_habitat_data(name='base pkmn hbtt trgr') + pokemon_habitat = self.setup_pokemon_habitat_data(name="base pkmn hbtt trgr") pokemon_habitat_name = self.setup_pokemon_habitat_name_data( - pokemon_habitat, name='base pkmn hbtt name') + pokemon_habitat, name="base pkmn hbtt name" + ) pokemon_species = self.setup_pokemon_species_data( - pokemon_habitat=pokemon_habitat, name='pkmn spcs for pkmn hbtt') + pokemon_habitat=pokemon_habitat, name="pkmn spcs for pkmn hbtt" + ) - response = self.client.get('{}/pokemon-habitat/{}/'.format(API_V2, pokemon_habitat.pk)) + response = self.client.get( + "{}/pokemon-habitat/{}/".format(API_V2, pokemon_habitat.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], pokemon_habitat.pk) - self.assertEqual(response.data['name'], pokemon_habitat.name) + self.assertEqual(response.data["id"], pokemon_habitat.pk) + self.assertEqual(response.data["name"], pokemon_habitat.name) # name params - self.assertEqual(response.data['names'][0]['name'], pokemon_habitat_name.name) + self.assertEqual(response.data["names"][0]["name"], pokemon_habitat_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], pokemon_habitat_name.language.name) + response.data["names"][0]["language"]["name"], + pokemon_habitat_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, pokemon_habitat_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, pokemon_habitat_name.language.pk + ), + ) # species params - self.assertEqual(response.data['pokemon_species'][0]['name'], pokemon_species.name) self.assertEqual( - response.data['pokemon_species'][0]['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, pokemon_species.pk)) + response.data["pokemon_species"][0]["name"], pokemon_species.name + ) + self.assertEqual( + response.data["pokemon_species"][0]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, pokemon_species.pk), + ) def test_pokemon_color_api(self): - pokemon_color = self.setup_pokemon_color_data(name='base pkmn clr trgr') + pokemon_color = self.setup_pokemon_color_data(name="base pkmn clr trgr") pokemon_color_name = self.setup_pokemon_color_name_data( - pokemon_color, name='base pkmn clr name') + pokemon_color, name="base pkmn clr name" + ) pokemon_species = self.setup_pokemon_species_data( - pokemon_color=pokemon_color, name='pkmn spcs for pkmn clr') + pokemon_color=pokemon_color, name="pkmn spcs for pkmn clr" + ) - response = self.client.get('{}/pokemon-color/{}/'.format(API_V2, pokemon_color.pk)) + response = self.client.get( + "{}/pokemon-color/{}/".format(API_V2, pokemon_color.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], pokemon_color.pk) - self.assertEqual(response.data['name'], pokemon_color.name) + self.assertEqual(response.data["id"], pokemon_color.pk) + self.assertEqual(response.data["name"], pokemon_color.name) # name params - self.assertEqual(response.data['names'][0]['name'], pokemon_color_name.name) + self.assertEqual(response.data["names"][0]["name"], pokemon_color_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], pokemon_color_name.language.name) + response.data["names"][0]["language"]["name"], + pokemon_color_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, pokemon_color_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, pokemon_color_name.language.pk + ), + ) # species params - self.assertEqual(response.data['pokemon_species'][0]['name'], pokemon_species.name) self.assertEqual( - response.data['pokemon_species'][0]['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, pokemon_species.pk)) + response.data["pokemon_species"][0]["name"], pokemon_species.name + ) + self.assertEqual( + response.data["pokemon_species"][0]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, pokemon_species.pk), + ) def test_pokemon_shape_api(self): - pokemon_shape = self.setup_pokemon_shape_data(name='base pkmn shp trgr') + pokemon_shape = self.setup_pokemon_shape_data(name="base pkmn shp trgr") pokemon_shape_name = self.setup_pokemon_shape_name_data( - pokemon_shape, name='base pkmn shp name') + pokemon_shape, name="base pkmn shp name" + ) pokemon_species = self.setup_pokemon_species_data( - pokemon_shape=pokemon_shape, name='pkmn spcs for pkmn shp') + pokemon_shape=pokemon_shape, name="pkmn spcs for pkmn shp" + ) - response = self.client.get('{}/pokemon-shape/{}/'.format(API_V2, pokemon_shape.pk)) + response = self.client.get( + "{}/pokemon-shape/{}/".format(API_V2, pokemon_shape.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], pokemon_shape.pk) - self.assertEqual(response.data['name'], pokemon_shape.name) + self.assertEqual(response.data["id"], pokemon_shape.pk) + self.assertEqual(response.data["name"], pokemon_shape.name) # name params - self.assertEqual(response.data['names'][0]['name'], pokemon_shape_name.name) + self.assertEqual(response.data["names"][0]["name"], pokemon_shape_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], pokemon_shape_name.language.name) + response.data["names"][0]["language"]["name"], + pokemon_shape_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, pokemon_shape_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, pokemon_shape_name.language.pk + ), + ) # awesome name params self.assertEqual( - response.data['awesome_names'][0]['awesome_name'], pokemon_shape_name.awesome_name) + response.data["awesome_names"][0]["awesome_name"], + pokemon_shape_name.awesome_name, + ) self.assertEqual( - response.data['awesome_names'][0]['language']['name'], pokemon_shape_name.language.name) + response.data["awesome_names"][0]["language"]["name"], + pokemon_shape_name.language.name, + ) self.assertEqual( - response.data['awesome_names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, pokemon_shape_name.language.pk)) + response.data["awesome_names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, pokemon_shape_name.language.pk + ), + ) # species params - self.assertEqual(response.data['pokemon_species'][0]['name'], pokemon_species.name) self.assertEqual( - response.data['pokemon_species'][0]['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, pokemon_species.pk)) + response.data["pokemon_species"][0]["name"], pokemon_species.name + ) + self.assertEqual( + response.data["pokemon_species"][0]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, pokemon_species.pk), + ) def test_pokemon_species_api(self): - evolves_from_species = self.setup_pokemon_species_data(name='evolves from pkmn spcs') + evolves_from_species = self.setup_pokemon_species_data( + name="evolves from pkmn spcs" + ) pokemon_species = self.setup_pokemon_species_data( - evolves_from_species=evolves_from_species, name='base pkmn spcs') + evolves_from_species=evolves_from_species, name="base pkmn spcs" + ) pokemon_species_name = self.setup_pokemon_species_name_data( - pokemon_species, name='base pkmn shp name') + pokemon_species, name="base pkmn shp name" + ) pokemon_species_form_description = self.setup_pokemon_species_form_description_data( - pokemon_species, description='frm dscr for pkmn spcs') + pokemon_species, description="frm dscr for pkmn spcs" + ) pokemon_species_flavor_text = self.setup_pokemon_species_flavor_text_data( - pokemon_species, flavor_text='flvr txt for pkmn spcs') - pokedex = self.setup_pokedex_data(name='pkdx for pkmn spcs') + pokemon_species, flavor_text="flvr txt for pkmn spcs" + ) + pokedex = self.setup_pokedex_data(name="pkdx for pkmn spcs") pal_park = self.setup_pal_park_data(pokemon_species=pokemon_species) dex_number = self.setup_pokemon_dex_entry_data( - pokemon_species=pokemon_species, pokedex=pokedex, entry_number=44) + pokemon_species=pokemon_species, pokedex=pokedex, entry_number=44 + ) - egg_group = self.setup_egg_group_data(name='egg grp for pkmn spcs') - self.setup_pokemon_egg_group_data(pokemon_species=pokemon_species, egg_group=egg_group) + egg_group = self.setup_egg_group_data(name="egg grp for pkmn spcs") + self.setup_pokemon_egg_group_data( + pokemon_species=pokemon_species, egg_group=egg_group + ) pokemon = self.setup_pokemon_data( - pokemon_species=pokemon_species, name='pkm for base pkmn spcs') + pokemon_species=pokemon_species, name="pkm for base pkmn spcs" + ) self.setup_pokemon_sprites_data(pokemon) response = self.client.get( - '{}/pokemon-species/{}/'.format(API_V2, pokemon_species.pk), HTTP_HOST='testserver') + "{}/pokemon-species/{}/".format(API_V2, pokemon_species.pk), + HTTP_HOST="testserver", + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], pokemon_species.pk) - self.assertEqual(response.data['name'], pokemon_species.name) - self.assertEqual(response.data['order'], pokemon_species.order) - self.assertEqual(response.data['capture_rate'], pokemon_species.capture_rate) - self.assertEqual(response.data['gender_rate'], pokemon_species.gender_rate) - self.assertEqual(response.data['base_happiness'], pokemon_species.base_happiness) - self.assertEqual(response.data['is_baby'], pokemon_species.is_baby) - self.assertEqual(response.data['hatch_counter'], pokemon_species.hatch_counter) - self.assertEqual( - response.data['has_gender_differences'], pokemon_species.has_gender_differences) - self.assertEqual(response.data['forms_switchable'], pokemon_species.forms_switchable) + self.assertEqual(response.data["id"], pokemon_species.pk) + self.assertEqual(response.data["name"], pokemon_species.name) + self.assertEqual(response.data["order"], pokemon_species.order) + self.assertEqual(response.data["capture_rate"], pokemon_species.capture_rate) + self.assertEqual(response.data["gender_rate"], pokemon_species.gender_rate) + self.assertEqual( + response.data["base_happiness"], pokemon_species.base_happiness + ) + self.assertEqual(response.data["is_baby"], pokemon_species.is_baby) + self.assertEqual(response.data["hatch_counter"], pokemon_species.hatch_counter) + self.assertEqual( + response.data["has_gender_differences"], + pokemon_species.has_gender_differences, + ) + self.assertEqual( + response.data["forms_switchable"], pokemon_species.forms_switchable + ) # name params - self.assertEqual(response.data['names'][0]['name'], pokemon_species_name.name) + self.assertEqual(response.data["names"][0]["name"], pokemon_species_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], pokemon_species_name.language.name) + response.data["names"][0]["language"]["name"], + pokemon_species_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, pokemon_species_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, pokemon_species_name.language.pk + ), + ) # growth rate params - self.assertEqual(response.data['growth_rate']['name'], pokemon_species.growth_rate.name) self.assertEqual( - response.data['growth_rate']['url'], - '{}{}/growth-rate/{}/'.format(TEST_HOST, API_V2, pokemon_species.growth_rate.pk)) + response.data["growth_rate"]["name"], pokemon_species.growth_rate.name + ) + self.assertEqual( + response.data["growth_rate"]["url"], + "{}{}/growth-rate/{}/".format( + TEST_HOST, API_V2, pokemon_species.growth_rate.pk + ), + ) # dex number params self.assertEqual( - response.data['pokedex_numbers'][0]['entry_number'], dex_number.pokedex_number) - self.assertEqual(response.data['pokedex_numbers'][0]['pokedex']['name'], pokedex.name) + response.data["pokedex_numbers"][0]["entry_number"], + dex_number.pokedex_number, + ) + self.assertEqual( + response.data["pokedex_numbers"][0]["pokedex"]["name"], pokedex.name + ) self.assertEqual( - response.data['pokedex_numbers'][0]['pokedex']['url'], - '{}{}/pokedex/{}/'.format(TEST_HOST, API_V2, pokedex.pk)) + response.data["pokedex_numbers"][0]["pokedex"]["url"], + "{}{}/pokedex/{}/".format(TEST_HOST, API_V2, pokedex.pk), + ) # egg group params - self.assertEqual(response.data['egg_groups'][0]['name'], egg_group.name) + self.assertEqual(response.data["egg_groups"][0]["name"], egg_group.name) self.assertEqual( - response.data['egg_groups'][0]['url'], - '{}{}/egg-group/{}/'.format(TEST_HOST, API_V2, egg_group.pk)) + response.data["egg_groups"][0]["url"], + "{}{}/egg-group/{}/".format(TEST_HOST, API_V2, egg_group.pk), + ) # generation params - self.assertEqual(response.data['generation']['name'], pokemon_species.generation.name) self.assertEqual( - response.data['generation']['url'], - '{}{}/generation/{}/'.format(TEST_HOST, API_V2, pokemon_species.generation.pk)) + response.data["generation"]["name"], pokemon_species.generation.name + ) + self.assertEqual( + response.data["generation"]["url"], + "{}{}/generation/{}/".format( + TEST_HOST, API_V2, pokemon_species.generation.pk + ), + ) # color params - self.assertEqual(response.data['color']['name'], pokemon_species.pokemon_color.name) self.assertEqual( - response.data['color']['url'], - '{}{}/pokemon-color/{}/'.format(TEST_HOST, API_V2, pokemon_species.pokemon_color.pk)) + response.data["color"]["name"], pokemon_species.pokemon_color.name + ) + self.assertEqual( + response.data["color"]["url"], + "{}{}/pokemon-color/{}/".format( + TEST_HOST, API_V2, pokemon_species.pokemon_color.pk + ), + ) # shape params - self.assertEqual(response.data['shape']['name'], pokemon_species.pokemon_shape.name) self.assertEqual( - response.data['shape']['url'], - '{}{}/pokemon-shape/{}/'.format(TEST_HOST, API_V2, pokemon_species.pokemon_shape.pk)) + response.data["shape"]["name"], pokemon_species.pokemon_shape.name + ) + self.assertEqual( + response.data["shape"]["url"], + "{}{}/pokemon-shape/{}/".format( + TEST_HOST, API_V2, pokemon_species.pokemon_shape.pk + ), + ) # habitat params - self.assertEqual(response.data['habitat']['name'], pokemon_species.pokemon_habitat.name) self.assertEqual( - response.data['habitat']['url'], - '{}{}/pokemon-habitat/{}/'.format( - TEST_HOST, API_V2, pokemon_species.pokemon_habitat.pk)) + response.data["habitat"]["name"], pokemon_species.pokemon_habitat.name + ) + self.assertEqual( + response.data["habitat"]["url"], + "{}{}/pokemon-habitat/{}/".format( + TEST_HOST, API_V2, pokemon_species.pokemon_habitat.pk + ), + ) # evolves from params - self.assertEqual(response.data['evolves_from_species']['name'], evolves_from_species.name) self.assertEqual( - response.data['evolves_from_species']['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, evolves_from_species.pk)) + response.data["evolves_from_species"]["name"], evolves_from_species.name + ) + self.assertEqual( + response.data["evolves_from_species"]["url"], + "{}{}/pokemon-species/{}/".format( + TEST_HOST, API_V2, evolves_from_species.pk + ), + ) # genus params - self.assertEqual(response.data['genera'][0]['genus'], pokemon_species_name.genus) self.assertEqual( - response.data['genera'][0]['language']['name'], pokemon_species_name.language.name) + response.data["genera"][0]["genus"], pokemon_species_name.genus + ) + self.assertEqual( + response.data["genera"][0]["language"]["name"], + pokemon_species_name.language.name, + ) self.assertEqual( - response.data['genera'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, pokemon_species_name.language.pk)) + response.data["genera"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, pokemon_species_name.language.pk + ), + ) # pokemon varieties params - self.assertEqual(response.data['varieties'][0]['is_default'], pokemon.is_default) - self.assertEqual(response.data['varieties'][0]['pokemon']['name'], pokemon.name) self.assertEqual( - response.data['varieties'][0]['pokemon']['url'], - '{}{}/pokemon/{}/'.format(TEST_HOST, API_V2, pokemon.pk)) + response.data["varieties"][0]["is_default"], pokemon.is_default + ) + self.assertEqual(response.data["varieties"][0]["pokemon"]["name"], pokemon.name) + self.assertEqual( + response.data["varieties"][0]["pokemon"]["url"], + "{}{}/pokemon/{}/".format(TEST_HOST, API_V2, pokemon.pk), + ) # form descriptions params self.assertEqual( - response.data['form_descriptions'][0]['description'], - pokemon_species_form_description.description) + response.data["form_descriptions"][0]["description"], + pokemon_species_form_description.description, + ) self.assertEqual( - response.data['form_descriptions'][0]['language']['name'], - pokemon_species_form_description.language.name) + response.data["form_descriptions"][0]["language"]["name"], + pokemon_species_form_description.language.name, + ) self.assertEqual( - response.data['form_descriptions'][0]['language']['url'], - '{}{}/language/{}/'.format( - TEST_HOST, API_V2, pokemon_species_form_description.language.pk)) + response.data["form_descriptions"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, pokemon_species_form_description.language.pk + ), + ) # flavor text params self.assertEqual( - response.data['flavor_text_entries'][0]['flavor_text'], - pokemon_species_flavor_text.flavor_text) + response.data["flavor_text_entries"][0]["flavor_text"], + pokemon_species_flavor_text.flavor_text, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['language']['name'], - pokemon_species_flavor_text.language.name) + response.data["flavor_text_entries"][0]["language"]["name"], + pokemon_species_flavor_text.language.name, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, pokemon_species_flavor_text.language.pk)) + response.data["flavor_text_entries"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, pokemon_species_flavor_text.language.pk + ), + ) self.assertEqual( - response.data['flavor_text_entries'][0]['version']['name'], - pokemon_species_flavor_text.version.name) + response.data["flavor_text_entries"][0]["version"]["name"], + pokemon_species_flavor_text.version.name, + ) self.assertEqual( - response.data['flavor_text_entries'][0]['version']['url'], - '{}{}/version/{}/'.format(TEST_HOST, API_V2, pokemon_species_flavor_text.version.pk)) + response.data["flavor_text_entries"][0]["version"]["url"], + "{}{}/version/{}/".format( + TEST_HOST, API_V2, pokemon_species_flavor_text.version.pk + ), + ) # pal park params - self.assertEqual(response.data['pal_park_encounters'][0]['base_score'], pal_park.base_score) - self.assertEqual(response.data['pal_park_encounters'][0]['rate'], pal_park.rate) self.assertEqual( - response.data['pal_park_encounters'][0]['area']['name'], pal_park.pal_park_area.name) + response.data["pal_park_encounters"][0]["base_score"], pal_park.base_score + ) + self.assertEqual(response.data["pal_park_encounters"][0]["rate"], pal_park.rate) self.assertEqual( - response.data['pal_park_encounters'][0]['area']['url'], - '{}{}/pal-park-area/{}/'.format(TEST_HOST, API_V2, pal_park.pal_park_area.pk)) + response.data["pal_park_encounters"][0]["area"]["name"], + pal_park.pal_park_area.name, + ) + self.assertEqual( + response.data["pal_park_encounters"][0]["area"]["url"], + "{}{}/pal-park-area/{}/".format( + TEST_HOST, API_V2, pal_park.pal_park_area.pk + ), + ) def test_pokemon_api(self): - pokemon_species = self.setup_pokemon_species_data(name='pkmn spcs for base pkmn') - pokemon = self.setup_pokemon_data(pokemon_species=pokemon_species, name='base pkm') - pokemon_form = self.setup_pokemon_form_data(pokemon=pokemon, name='pkm form for base pkmn') + pokemon_species = self.setup_pokemon_species_data( + name="pkmn spcs for base pkmn" + ) + pokemon = self.setup_pokemon_data( + pokemon_species=pokemon_species, name="base pkm" + ) + pokemon_form = self.setup_pokemon_form_data( + pokemon=pokemon, name="pkm form for base pkmn" + ) pokemon_ability = self.setup_pokemon_ability_data(pokemon=pokemon) pokemon_stat = self.setup_pokemon_stat_data(pokemon=pokemon) pokemon_type = self.setup_pokemon_type_data(pokemon=pokemon) pokemon_item = self.setup_pokemon_item_data(pokemon=pokemon) pokemon_sprites = self.setup_pokemon_sprites_data(pokemon=pokemon) - pokemon_game_index = self.setup_pokemon_game_index_data(pokemon=pokemon, game_index=10) + pokemon_game_index = self.setup_pokemon_game_index_data( + pokemon=pokemon, game_index=10 + ) # To test issue #85, we will create one move that has multiple # learn levels in different version groups. Later, we'll # assert that we only got one move record back. - pokemon_move = self.setup_move_data(name='mv for pkmn') + pokemon_move = self.setup_move_data(name="mv for pkmn") pokemon_moves = [] for move in range(0, 4): version_group = self.setup_version_group_data( - name='ver grp ' + str(move) + ' for pkmn') + name="ver grp " + str(move) + " for pkmn" + ) new_move = self.setup_pokemon_move_data( pokemon=pokemon, move=pokemon_move, version_group=version_group, - level=move) + level=move, + ) pokemon_moves.append(new_move) - encounter_method = self.setup_encounter_method_data(name='encntr mthd for lctn area') - location_area1 = self.setup_location_area_data(name='lctn1 area for base pkmn') - encounter_slot1 = self.setup_encounter_slot_data(encounter_method, slot=1, rarity=30) + encounter_method = self.setup_encounter_method_data( + name="encntr mthd for lctn area" + ) + location_area1 = self.setup_location_area_data(name="lctn1 area for base pkmn") + encounter_slot1 = self.setup_encounter_slot_data( + encounter_method, slot=1, rarity=30 + ) self.setup_encounter_data( - location_area=location_area1, pokemon=pokemon, - encounter_slot=encounter_slot1, min_level=30, max_level=35) - location_area2 = self.setup_location_area_data(name='lctn2 area for base pkmn') - encounter_slot2 = self.setup_encounter_slot_data(encounter_method, slot=2, rarity=40) + location_area=location_area1, + pokemon=pokemon, + encounter_slot=encounter_slot1, + min_level=30, + max_level=35, + ) + location_area2 = self.setup_location_area_data(name="lctn2 area for base pkmn") + encounter_slot2 = self.setup_encounter_slot_data( + encounter_method, slot=2, rarity=40 + ) self.setup_encounter_data( - location_area=location_area2, pokemon=pokemon, - encounter_slot=encounter_slot2, min_level=32, max_level=36) + location_area=location_area2, + pokemon=pokemon, + encounter_slot=encounter_slot2, + min_level=32, + max_level=36, + ) response = self.client.get( - '{}/pokemon/{}/'.format(API_V2, pokemon.pk), HTTP_HOST='testserver') + "{}/pokemon/{}/".format(API_V2, pokemon.pk), HTTP_HOST="testserver" + ) sprites_data = json.loads(pokemon_sprites.sprites) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], pokemon.pk) - self.assertEqual(response.data['name'], pokemon.name) - self.assertEqual(response.data['order'], pokemon.order) - self.assertEqual(response.data['is_default'], pokemon.is_default) - self.assertEqual(response.data['height'], pokemon.height) - self.assertEqual(response.data['weight'], pokemon.weight) - self.assertEqual(response.data['base_experience'], pokemon.base_experience) + self.assertEqual(response.data["id"], pokemon.pk) + self.assertEqual(response.data["name"], pokemon.name) + self.assertEqual(response.data["order"], pokemon.order) + self.assertEqual(response.data["is_default"], pokemon.is_default) + self.assertEqual(response.data["height"], pokemon.height) + self.assertEqual(response.data["weight"], pokemon.weight) + self.assertEqual(response.data["base_experience"], pokemon.base_experience) # species params - self.assertEqual(response.data['species']['name'], pokemon_species.name) + self.assertEqual(response.data["species"]["name"], pokemon_species.name) self.assertEqual( - response.data['species']['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, pokemon_species.pk)) + response.data["species"]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, pokemon_species.pk), + ) # abilities params - self.assertEqual(response.data['abilities'][0]['is_hidden'], pokemon_ability.is_hidden) - self.assertEqual(response.data['abilities'][0]['slot'], pokemon_ability.slot) self.assertEqual( - response.data['abilities'][0]['ability']['name'], pokemon_ability.ability.name) + response.data["abilities"][0]["is_hidden"], pokemon_ability.is_hidden + ) + self.assertEqual(response.data["abilities"][0]["slot"], pokemon_ability.slot) + self.assertEqual( + response.data["abilities"][0]["ability"]["name"], + pokemon_ability.ability.name, + ) self.assertEqual( - response.data['abilities'][0]['ability']['url'], - '{}{}/ability/{}/'.format(TEST_HOST, API_V2, pokemon_ability.ability.pk)) + response.data["abilities"][0]["ability"]["url"], + "{}{}/ability/{}/".format(TEST_HOST, API_V2, pokemon_ability.ability.pk), + ) # stat params - self.assertEqual(response.data['stats'][0]['base_stat'], pokemon_stat.base_stat) - self.assertEqual(response.data['stats'][0]['effort'], pokemon_stat.effort) - self.assertEqual(response.data['stats'][0]['stat']['name'], pokemon_stat.stat.name) + self.assertEqual(response.data["stats"][0]["base_stat"], pokemon_stat.base_stat) + self.assertEqual(response.data["stats"][0]["effort"], pokemon_stat.effort) + self.assertEqual( + response.data["stats"][0]["stat"]["name"], pokemon_stat.stat.name + ) self.assertEqual( - response.data['stats'][0]['stat']['url'], - '{}{}/stat/{}/'.format(TEST_HOST, API_V2, pokemon_stat.stat.pk)) + response.data["stats"][0]["stat"]["url"], + "{}{}/stat/{}/".format(TEST_HOST, API_V2, pokemon_stat.stat.pk), + ) # stat params - self.assertEqual(response.data['types'][0]['slot'], pokemon_type.slot) - self.assertEqual(response.data['types'][0]['type']['name'], pokemon_type.type.name) + self.assertEqual(response.data["types"][0]["slot"], pokemon_type.slot) + self.assertEqual( + response.data["types"][0]["type"]["name"], pokemon_type.type.name + ) self.assertEqual( - response.data['types'][0]['type']['url'], - '{}{}/type/{}/'.format(TEST_HOST, API_V2, pokemon_type.type.pk)) + response.data["types"][0]["type"]["url"], + "{}{}/type/{}/".format(TEST_HOST, API_V2, pokemon_type.type.pk), + ) # items params - self.assertEqual(response.data['held_items'][0]['item']['name'], pokemon_item.item.name) self.assertEqual( - response.data['held_items'][0]['item']['url'], - '{}{}/item/{}/'.format(TEST_HOST, API_V2, pokemon_item.item.pk)) + response.data["held_items"][0]["item"]["name"], pokemon_item.item.name + ) + self.assertEqual( + response.data["held_items"][0]["item"]["url"], + "{}{}/item/{}/".format(TEST_HOST, API_V2, pokemon_item.item.pk), + ) self.assertEqual( - response.data['held_items'][0]['version_details'][0]['rarity'], pokemon_item.rarity) + response.data["held_items"][0]["version_details"][0]["rarity"], + pokemon_item.rarity, + ) self.assertEqual( - response.data['held_items'][0]['version_details'][0]['version']['name'], - pokemon_item.version.name) + response.data["held_items"][0]["version_details"][0]["version"]["name"], + pokemon_item.version.name, + ) self.assertEqual( - response.data['held_items'][0]['version_details'][0]['version']['url'], - '{}{}/version/{}/'.format(TEST_HOST, API_V2, pokemon_item.version.pk)) + response.data["held_items"][0]["version_details"][0]["version"]["url"], + "{}{}/version/{}/".format(TEST_HOST, API_V2, pokemon_item.version.pk), + ) # move params -- Make sure that we only got one move back, # but that we got all of the distinct version group and learn # level values. (See issue #85) # Number of Moves expected = 1 - actual = len(response.data['moves']) + actual = len(response.data["moves"]) self.assertEqual(expected, actual) # Move name expected = pokemon_moves[0].move.name - actual = response.data['moves'][0]['move']['name'] + actual = response.data["moves"][0]["move"]["name"] self.assertEqual(expected, actual) # Move URL - expected = '{}{}/move/{}/'.format( - TEST_HOST, - API_V2, - pokemon_moves[0].move.pk) - actual = response.data['moves'][0]['move']['url'] + expected = "{}{}/move/{}/".format(TEST_HOST, API_V2, pokemon_moves[0].move.pk) + actual = response.data["moves"][0]["move"]["url"] self.assertEqual(expected, actual) # Numbver of version groups expected = len(pokemon_moves) - actual = len(response.data['moves'][0]['version_group_details']) + actual = len(response.data["moves"][0]["version_group_details"]) self.assertEqual(expected, actual) - for i, val in enumerate(pokemon_moves): #pylint: disable=unused-variable - version = response.data['moves'][0]['version_group_details'][i] + for i, val in enumerate(pokemon_moves): # pylint: disable=unused-variable + version = response.data["moves"][0]["version_group_details"][i] # Learn Level expected = pokemon_moves[i].level - actual = version['level_learned_at'] + actual = version["level_learned_at"] self.assertEqual(expected, actual) # Version Group Name expected = pokemon_moves[i].version_group.name - actual = version['version_group']['name'] + actual = version["version_group"]["name"] self.assertEqual(expected, actual) # Version Group URL - expected = '{}{}/version-group/{}/'.format( - TEST_HOST, - API_V2, - pokemon_moves[i].version_group.pk) - actual = version['version_group']['url'] + expected = "{}{}/version-group/{}/".format( + TEST_HOST, API_V2, pokemon_moves[i].version_group.pk + ) + actual = version["version_group"]["url"] self.assertEqual(expected, actual) # Learn Method Name expected = pokemon_moves[i].move_learn_method.name - actual = version['move_learn_method']['name'] + actual = version["move_learn_method"]["name"] self.assertEqual(expected, actual) # Learn Method URL - expected = '{}{}/move-learn-method/{}/'.format( - TEST_HOST, - API_V2, - pokemon_moves[i].move_learn_method.pk) - actual = version['move_learn_method']['url'] + expected = "{}{}/move-learn-method/{}/".format( + TEST_HOST, API_V2, pokemon_moves[i].move_learn_method.pk + ) + actual = version["move_learn_method"]["url"] self.assertEqual(expected, actual) # game indices params self.assertEqual( - response.data['game_indices'][0]['game_index'], - pokemon_game_index.game_index) + response.data["game_indices"][0]["game_index"], + pokemon_game_index.game_index, + ) self.assertEqual( - response.data['game_indices'][0]['version']['name'], - pokemon_game_index.version.name) + response.data["game_indices"][0]["version"]["name"], + pokemon_game_index.version.name, + ) self.assertEqual( - response.data['game_indices'][0]['version']['url'], - '{}{}/version/{}/'.format(TEST_HOST, API_V2, pokemon_game_index.version.pk)) + response.data["game_indices"][0]["version"]["url"], + "{}{}/version/{}/".format(TEST_HOST, API_V2, pokemon_game_index.version.pk), + ) # form params - self.assertEqual(response.data['forms'][0]['name'], pokemon_form.name) + self.assertEqual(response.data["forms"][0]["name"], pokemon_form.name) self.assertEqual( - response.data['forms'][0]['url'], - '{}{}/pokemon-form/{}/'.format(TEST_HOST, API_V2, pokemon_form.pk)) + response.data["forms"][0]["url"], + "{}{}/pokemon-form/{}/".format(TEST_HOST, API_V2, pokemon_form.pk), + ) # sprite params self.assertEqual( - response.data['sprites']['front_default'], - '{}{}'.format(MEDIA_HOST, sprites_data['front_default'].replace('/media/', ''))) - self.assertEqual(response.data['sprites']['back_default'], None) + response.data["sprites"]["front_default"], + "{}{}".format( + MEDIA_HOST, sprites_data["front_default"].replace("/media/", "") + ), + ) + self.assertEqual(response.data["sprites"]["back_default"], None) def test_pokemon_form_api(self): pokemon_species = self.setup_pokemon_species_data() pokemon = self.setup_pokemon_data(pokemon_species=pokemon_species) - pokemon_form = self.setup_pokemon_form_data(pokemon=pokemon, name='pkm form for base pkmn') + pokemon_form = self.setup_pokemon_form_data( + pokemon=pokemon, name="pkm form for base pkmn" + ) pokemon_form_sprites = self.setup_pokemon_form_sprites_data(pokemon_form) sprites_data = json.loads(pokemon_form_sprites.sprites) response = self.client.get( - '{}/pokemon-form/{}/'.format(API_V2, pokemon_form.pk), HTTP_HOST='testserver') + "{}/pokemon-form/{}/".format(API_V2, pokemon_form.pk), + HTTP_HOST="testserver", + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], pokemon_form.pk) - self.assertEqual(response.data['name'], pokemon_form.name) - self.assertEqual(response.data['form_name'], pokemon_form.form_name) - self.assertEqual(response.data['order'], pokemon_form.order) - self.assertEqual(response.data['form_order'], pokemon_form.form_order) - self.assertEqual(response.data['is_default'], pokemon_form.is_default) - self.assertEqual(response.data['is_battle_only'], pokemon_form.is_battle_only) - self.assertEqual(response.data['is_mega'], pokemon_form.is_mega) + self.assertEqual(response.data["id"], pokemon_form.pk) + self.assertEqual(response.data["name"], pokemon_form.name) + self.assertEqual(response.data["form_name"], pokemon_form.form_name) + self.assertEqual(response.data["order"], pokemon_form.order) + self.assertEqual(response.data["form_order"], pokemon_form.form_order) + self.assertEqual(response.data["is_default"], pokemon_form.is_default) + self.assertEqual(response.data["is_battle_only"], pokemon_form.is_battle_only) + self.assertEqual(response.data["is_mega"], pokemon_form.is_mega) # pokemon params - self.assertEqual(response.data['pokemon']['name'], pokemon.name) + self.assertEqual(response.data["pokemon"]["name"], pokemon.name) self.assertEqual( - response.data['pokemon']['url'], '{}{}/pokemon/{}/'.format( - TEST_HOST, API_V2, pokemon.pk)) + response.data["pokemon"]["url"], + "{}{}/pokemon/{}/".format(TEST_HOST, API_V2, pokemon.pk), + ) # version group params - self.assertEqual(response.data['version_group']['name'], pokemon_form.version_group.name) self.assertEqual( - response.data['version_group']['url'], - '{}{}/version-group/{}/'.format(TEST_HOST, API_V2, pokemon_form.version_group.pk)) + response.data["version_group"]["name"], pokemon_form.version_group.name + ) + self.assertEqual( + response.data["version_group"]["url"], + "{}{}/version-group/{}/".format( + TEST_HOST, API_V2, pokemon_form.version_group.pk + ), + ) # sprite params self.assertEqual( - response.data['sprites']['front_default'], - '{}{}'.format(MEDIA_HOST, sprites_data['front_default'].replace('/media/', ''))) - self.assertEqual(response.data['sprites']['back_default'], None) + response.data["sprites"]["front_default"], + "{}{}".format( + MEDIA_HOST, sprites_data["front_default"].replace("/media/", "") + ), + ) + self.assertEqual(response.data["sprites"]["back_default"], None) # Evolution test def test_evolution_trigger_api(self): - evolution_trigger = self.setup_evolution_trigger_data(name='base evltn trgr') + evolution_trigger = self.setup_evolution_trigger_data(name="base evltn trgr") evolution_trigger_name = self.setup_evolution_trigger_name_data( - evolution_trigger, name='base evltn trgr name') + evolution_trigger, name="base evltn trgr name" + ) pokemon_species = self.setup_pokemon_species_data( - name='pkmn spcs for base evltn trgr') + name="pkmn spcs for base evltn trgr" + ) self.setup_pokemon_evolution_data( - evolved_species=pokemon_species, evolution_trigger=evolution_trigger) + evolved_species=pokemon_species, evolution_trigger=evolution_trigger + ) - response = self.client.get('{}/evolution-trigger/{}/'.format(API_V2, evolution_trigger.pk)) + response = self.client.get( + "{}/evolution-trigger/{}/".format(API_V2, evolution_trigger.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], evolution_trigger.pk) - self.assertEqual(response.data['name'], evolution_trigger.name) + self.assertEqual(response.data["id"], evolution_trigger.pk) + self.assertEqual(response.data["name"], evolution_trigger.name) # name params - self.assertEqual(response.data['names'][0]['name'], evolution_trigger_name.name) + self.assertEqual(response.data["names"][0]["name"], evolution_trigger_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], evolution_trigger_name.language.name) + response.data["names"][0]["language"]["name"], + evolution_trigger_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, evolution_trigger_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, evolution_trigger_name.language.pk + ), + ) # pokemon species params - self.assertEqual(response.data['pokemon_species'][0]['name'], pokemon_species.name) self.assertEqual( - response.data['pokemon_species'][0]['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, pokemon_species.pk)) + response.data["pokemon_species"][0]["name"], pokemon_species.name + ) + self.assertEqual( + response.data["pokemon_species"][0]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, pokemon_species.pk), + ) def test_evolution_chain_api(self): baby_trigger_item = self.setup_item_data(name="bby itm for evo chn") - evolution_chain = self.setup_evolution_chain_data(baby_trigger_item=baby_trigger_item) + evolution_chain = self.setup_evolution_chain_data( + baby_trigger_item=baby_trigger_item + ) baby = self.setup_pokemon_species_data( - name="bby for evo chn", is_baby=True, evolution_chain=evolution_chain) + name="bby for evo chn", is_baby=True, evolution_chain=evolution_chain + ) basic = self.setup_pokemon_species_data( - name="bsc for evo chn", evolves_from_species=baby, evolution_chain=evolution_chain) - basic_location = self.setup_location_data(name='lctn for bsc evo chn') + name="bsc for evo chn", + evolves_from_species=baby, + evolution_chain=evolution_chain, + ) + basic_location = self.setup_location_data(name="lctn for bsc evo chn") basic_evolution = self.setup_pokemon_evolution_data( - evolved_species=basic, min_level=5, location=basic_location) + evolved_species=basic, min_level=5, location=basic_location + ) stage_one = self.setup_pokemon_species_data( - name="stg one for evo chn", evolves_from_species=basic, evolution_chain=evolution_chain) - stage_one_held_item = self.setup_item_data( - name='itm for stg one evo chn') + name="stg one for evo chn", + evolves_from_species=basic, + evolution_chain=evolution_chain, + ) + stage_one_held_item = self.setup_item_data(name="itm for stg one evo chn") stage_one_evolution = self.setup_pokemon_evolution_data( - evolved_species=stage_one, min_level=18, held_item=stage_one_held_item) + evolved_species=stage_one, min_level=18, held_item=stage_one_held_item + ) stage_two_first = self.setup_pokemon_species_data( name="stg two frst for evo chn", - evolves_from_species=stage_one, evolution_chain=evolution_chain) + evolves_from_species=stage_one, + evolution_chain=evolution_chain, + ) stage_two_first_known_move = self.setup_move_data(name="mv for evo chn") stage_two_first_evolution = self.setup_pokemon_evolution_data( - evolved_species=stage_two_first, min_level=32, known_move=stage_two_first_known_move,) + evolved_species=stage_two_first, + min_level=32, + known_move=stage_two_first_known_move, + ) stage_two_second = self.setup_pokemon_species_data( name="stg two scnd for evo chn", - evolves_from_species=stage_one, evolution_chain=evolution_chain) + evolves_from_species=stage_one, + evolution_chain=evolution_chain, + ) stage_two_second_party_type = self.setup_type_data(name="tp for evo chn") stage_two_second_evolution = self.setup_pokemon_evolution_data( - evolved_species=stage_two_second, min_level=32, party_type=stage_two_second_party_type) + evolved_species=stage_two_second, + min_level=32, + party_type=stage_two_second_party_type, + ) - response = self.client.get('{}/evolution-chain/{}/'.format(API_V2, evolution_chain.pk)) + response = self.client.get( + "{}/evolution-chain/{}/".format(API_V2, evolution_chain.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) - baby_data = response.data['chain'] - basic_data = baby_data['evolves_to'][0] - stage_one_data = basic_data['evolves_to'][0] - stage_two_first_data = stage_one_data['evolves_to'][0] - stage_two_second_data = stage_one_data['evolves_to'][1] + baby_data = response.data["chain"] + basic_data = baby_data["evolves_to"][0] + stage_one_data = basic_data["evolves_to"][0] + stage_two_first_data = stage_one_data["evolves_to"][0] + stage_two_second_data = stage_one_data["evolves_to"][1] # base params - self.assertEqual(response.data['id'], evolution_chain.pk) + self.assertEqual(response.data["id"], evolution_chain.pk) # baby trigger params - self.assertEqual(response.data['baby_trigger_item']['name'], baby_trigger_item.name) self.assertEqual( - response.data['baby_trigger_item']['url'], - '{}{}/item/{}/'.format(TEST_HOST, API_V2, baby_trigger_item.pk)) + response.data["baby_trigger_item"]["name"], baby_trigger_item.name + ) + self.assertEqual( + response.data["baby_trigger_item"]["url"], + "{}{}/item/{}/".format(TEST_HOST, API_V2, baby_trigger_item.pk), + ) # baby params - self.assertEqual(baby_data['is_baby'], baby.is_baby) - self.assertEqual(baby_data['species']['name'], baby.name) + self.assertEqual(baby_data["is_baby"], baby.is_baby) + self.assertEqual(baby_data["species"]["name"], baby.name) self.assertEqual( - baby_data['species']['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, baby.pk)) + baby_data["species"]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, baby.pk), + ) # basic params - self.assertEqual(basic_data['is_baby'], basic.is_baby) - self.assertEqual(basic_data['species']['name'], basic.name) + self.assertEqual(basic_data["is_baby"], basic.is_baby) + self.assertEqual(basic_data["species"]["name"], basic.name) self.assertEqual( - basic_data['species']['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, basic.pk)) - self.assertEqual(basic_data['evolution_details'][0]['min_level'], basic_evolution.min_level) + basic_data["species"]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, basic.pk), + ) + self.assertEqual( + basic_data["evolution_details"][0]["min_level"], basic_evolution.min_level + ) self.assertEqual( - basic_data['evolution_details'][0]['location']['name'], basic_location.name) + basic_data["evolution_details"][0]["location"]["name"], basic_location.name + ) self.assertEqual( - basic_data['evolution_details'][0]['location']['url'], - '{}{}/location/{}/'.format(TEST_HOST, API_V2, basic_location.pk)) + basic_data["evolution_details"][0]["location"]["url"], + "{}{}/location/{}/".format(TEST_HOST, API_V2, basic_location.pk), + ) # stage one params - self.assertEqual(stage_one_data['is_baby'], stage_one.is_baby) - self.assertEqual(stage_one_data['species']['name'], stage_one.name) + self.assertEqual(stage_one_data["is_baby"], stage_one.is_baby) + self.assertEqual(stage_one_data["species"]["name"], stage_one.name) self.assertEqual( - stage_one_data['species']['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, stage_one.pk)) + stage_one_data["species"]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, stage_one.pk), + ) self.assertEqual( - stage_one_data['evolution_details'][0]['min_level'], stage_one_evolution.min_level) + stage_one_data["evolution_details"][0]["min_level"], + stage_one_evolution.min_level, + ) self.assertEqual( - stage_one_data['evolution_details'][0]['held_item']['name'], stage_one_held_item.name) + stage_one_data["evolution_details"][0]["held_item"]["name"], + stage_one_held_item.name, + ) self.assertEqual( - stage_one_data['evolution_details'][0]['held_item']['url'], - '{}{}/item/{}/'.format(TEST_HOST, API_V2, stage_one_held_item.pk)) + stage_one_data["evolution_details"][0]["held_item"]["url"], + "{}{}/item/{}/".format(TEST_HOST, API_V2, stage_one_held_item.pk), + ) # stage two first params - self.assertEqual(stage_two_first_data['is_baby'], stage_two_first.is_baby) - self.assertEqual(stage_two_first_data['species']['name'], stage_two_first.name) + self.assertEqual(stage_two_first_data["is_baby"], stage_two_first.is_baby) + self.assertEqual(stage_two_first_data["species"]["name"], stage_two_first.name) self.assertEqual( - stage_two_first_data['species']['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, stage_two_first.pk)) + stage_two_first_data["species"]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, stage_two_first.pk), + ) self.assertEqual( - stage_two_first_data['evolution_details'][0]['min_level'], - stage_two_first_evolution.min_level) + stage_two_first_data["evolution_details"][0]["min_level"], + stage_two_first_evolution.min_level, + ) self.assertEqual( - stage_two_first_data['evolution_details'][0]['known_move']['name'], - stage_two_first_known_move.name) + stage_two_first_data["evolution_details"][0]["known_move"]["name"], + stage_two_first_known_move.name, + ) self.assertEqual( - stage_two_first_data['evolution_details'][0]['known_move']['url'], - '{}{}/move/{}/'.format(TEST_HOST, API_V2, stage_two_first_known_move.pk)) + stage_two_first_data["evolution_details"][0]["known_move"]["url"], + "{}{}/move/{}/".format(TEST_HOST, API_V2, stage_two_first_known_move.pk), + ) # stage two second params - self.assertEqual(stage_two_second_data['is_baby'], stage_two_second.is_baby) - self.assertEqual(stage_two_second_data['species']['name'], stage_two_second.name) + self.assertEqual(stage_two_second_data["is_baby"], stage_two_second.is_baby) self.assertEqual( - stage_two_second_data['species']['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, stage_two_second.pk)) + stage_two_second_data["species"]["name"], stage_two_second.name + ) self.assertEqual( - stage_two_second_data['evolution_details'][0]['min_level'], - stage_two_second_evolution.min_level) + stage_two_second_data["species"]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, stage_two_second.pk), + ) self.assertEqual( - stage_two_second_data['evolution_details'][0]['party_type']['name'], - stage_two_second_party_type.name) + stage_two_second_data["evolution_details"][0]["min_level"], + stage_two_second_evolution.min_level, + ) self.assertEqual( - stage_two_second_data['evolution_details'][0]['party_type']['url'], - '{}{}/type/{}/'.format(TEST_HOST, API_V2, stage_two_second_party_type.pk)) + stage_two_second_data["evolution_details"][0]["party_type"]["name"], + stage_two_second_party_type.name, + ) + self.assertEqual( + stage_two_second_data["evolution_details"][0]["party_type"]["url"], + "{}{}/type/{}/".format(TEST_HOST, API_V2, stage_two_second_party_type.pk), + ) # Encounter Tests def test_encounter_method_api(self): - encounter_method = self.setup_encounter_method_data(name='base encntr mthd') + encounter_method = self.setup_encounter_method_data(name="base encntr mthd") encounter_method_name = self.setup_encounter_method_name_data( - encounter_method, name='base encntr mthd name') + encounter_method, name="base encntr mthd name" + ) - response = self.client.get('{}/encounter-method/{}/'.format(API_V2, encounter_method.pk)) + response = self.client.get( + "{}/encounter-method/{}/".format(API_V2, encounter_method.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], encounter_method.pk) - self.assertEqual(response.data['name'], encounter_method.name) - self.assertEqual(response.data['order'], encounter_method.order) + self.assertEqual(response.data["id"], encounter_method.pk) + self.assertEqual(response.data["name"], encounter_method.name) + self.assertEqual(response.data["order"], encounter_method.order) # name params - self.assertEqual(response.data['names'][0]['name'], encounter_method_name.name) + self.assertEqual(response.data["names"][0]["name"], encounter_method_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], encounter_method_name.language.name) + response.data["names"][0]["language"]["name"], + encounter_method_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, encounter_method_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, encounter_method_name.language.pk + ), + ) def test_encounter_condition_value_api(self): encounter_condition = self.setup_encounter_condition_data( - name='encntr cndtn for base encntr cndtn vlu') + name="encntr cndtn for base encntr cndtn vlu" + ) encounter_condition_value = self.setup_encounter_condition_value_data( - encounter_condition, name='base encntr cndtn vlu') + encounter_condition, name="base encntr cndtn vlu" + ) encounter_condition_value_name = self.setup_encounter_condition_value_name_data( - encounter_condition_value, name='base encntr cndtn vlu name') + encounter_condition_value, name="base encntr cndtn vlu name" + ) - response = self.client.get('{}/encounter-condition-value/{}/'.format( - API_V2, encounter_condition_value.pk)) + response = self.client.get( + "{}/encounter-condition-value/{}/".format( + API_V2, encounter_condition_value.pk + ) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], encounter_condition_value.pk) - self.assertEqual(response.data['name'], encounter_condition_value.name) + self.assertEqual(response.data["id"], encounter_condition_value.pk) + self.assertEqual(response.data["name"], encounter_condition_value.name) # name params - self.assertEqual(response.data['names'][0]['name'], encounter_condition_value_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], - encounter_condition_value_name.language.name) + response.data["names"][0]["name"], encounter_condition_value_name.name + ) + self.assertEqual( + response.data["names"][0]["language"]["name"], + encounter_condition_value_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format( - TEST_HOST, API_V2, encounter_condition_value_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, encounter_condition_value_name.language.pk + ), + ) # condition params - self.assertEqual(response.data['condition']['name'], encounter_condition.name) + self.assertEqual(response.data["condition"]["name"], encounter_condition.name) self.assertEqual( - response.data['condition']['url'], - '{}{}/encounter-condition/{}/'.format(TEST_HOST, API_V2, encounter_condition.pk)) + response.data["condition"]["url"], + "{}{}/encounter-condition/{}/".format( + TEST_HOST, API_V2, encounter_condition.pk + ), + ) def test_encounter_condition_api(self): - encounter_condition = self.setup_encounter_condition_data(name='base encntr cndtn') + encounter_condition = self.setup_encounter_condition_data( + name="base encntr cndtn" + ) encounter_condition_name = self.setup_encounter_condition_name_data( - encounter_condition, name='base encntr cndtn name') + encounter_condition, name="base encntr cndtn name" + ) encounter_condition_value = self.setup_encounter_condition_value_data( - encounter_condition, name='encntr cndtn vlu for base encntr', is_default=True) + encounter_condition, + name="encntr cndtn vlu for base encntr", + is_default=True, + ) response = self.client.get( - '{}/encounter-condition/{}/'.format(API_V2, encounter_condition.pk)) + "{}/encounter-condition/{}/".format(API_V2, encounter_condition.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], encounter_condition.pk) - self.assertEqual(response.data['name'], encounter_condition.name) + self.assertEqual(response.data["id"], encounter_condition.pk) + self.assertEqual(response.data["name"], encounter_condition.name) # name params - self.assertEqual(response.data['names'][0]['name'], encounter_condition_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], encounter_condition_name.language.name) + response.data["names"][0]["name"], encounter_condition_name.name + ) + self.assertEqual( + response.data["names"][0]["language"]["name"], + encounter_condition_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, encounter_condition_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, encounter_condition_name.language.pk + ), + ) # value params - self.assertEqual(response.data['values'][0]['name'], encounter_condition_value.name) self.assertEqual( - response.data['values'][0]['url'], - '{}{}/encounter-condition-value/{}/'.format( - TEST_HOST, API_V2, encounter_condition_value.pk)) + response.data["values"][0]["name"], encounter_condition_value.name + ) + self.assertEqual( + response.data["values"][0]["url"], + "{}{}/encounter-condition-value/{}/".format( + TEST_HOST, API_V2, encounter_condition_value.pk + ), + ) # Pal Park Tests def test_pal_park_area_api(self): - pal_park_area = self.setup_pal_park_area_data(name='base pl prk area') + pal_park_area = self.setup_pal_park_area_data(name="base pl prk area") pal_park_area_name = self.setup_pal_park_area_name_data( - pal_park_area, name='base pl prk area nm') - pokemon_species = self.setup_pokemon_species_data(name='pkmn spcs for pl prk') + pal_park_area, name="base pl prk area nm" + ) + pokemon_species = self.setup_pokemon_species_data(name="pkmn spcs for pl prk") pal_park = self.setup_pal_park_data( - pal_park_area=pal_park_area, pokemon_species=pokemon_species, base_score=10, rate=20) + pal_park_area=pal_park_area, + pokemon_species=pokemon_species, + base_score=10, + rate=20, + ) - response = self.client.get('{}/pal-park-area/{}/'.format(API_V2, pal_park_area.pk)) + response = self.client.get( + "{}/pal-park-area/{}/".format(API_V2, pal_park_area.pk) + ) self.assertEqual(response.status_code, status.HTTP_200_OK) # base params - self.assertEqual(response.data['id'], pal_park_area.pk) - self.assertEqual(response.data['name'], pal_park_area.name) + self.assertEqual(response.data["id"], pal_park_area.pk) + self.assertEqual(response.data["name"], pal_park_area.name) # name params - self.assertEqual(response.data['names'][0]['name'], pal_park_area_name.name) + self.assertEqual(response.data["names"][0]["name"], pal_park_area_name.name) self.assertEqual( - response.data['names'][0]['language']['name'], pal_park_area_name.language.name) + response.data["names"][0]["language"]["name"], + pal_park_area_name.language.name, + ) self.assertEqual( - response.data['names'][0]['language']['url'], - '{}{}/language/{}/'.format(TEST_HOST, API_V2, pal_park_area_name.language.pk)) + response.data["names"][0]["language"]["url"], + "{}{}/language/{}/".format( + TEST_HOST, API_V2, pal_park_area_name.language.pk + ), + ) # encounter params - self.assertEqual(response.data['pokemon_encounters'][0]['base_score'], pal_park.base_score) - self.assertEqual(response.data['pokemon_encounters'][0]['rate'], pal_park.rate) self.assertEqual( - response.data['pokemon_encounters'][0]['pokemon_species']['name'], pokemon_species.name) + response.data["pokemon_encounters"][0]["base_score"], pal_park.base_score + ) + self.assertEqual(response.data["pokemon_encounters"][0]["rate"], pal_park.rate) + self.assertEqual( + response.data["pokemon_encounters"][0]["pokemon_species"]["name"], + pokemon_species.name, + ) self.assertEqual( - response.data['pokemon_encounters'][0]['pokemon_species']['url'], - '{}{}/pokemon-species/{}/'.format(TEST_HOST, API_V2, pokemon_species.pk)) + response.data["pokemon_encounters"][0]["pokemon_species"]["url"], + "{}{}/pokemon-species/{}/".format(TEST_HOST, API_V2, pokemon_species.pk), + ) diff --git a/pokemon_v2/urls.py b/pokemon_v2/urls.py index 4e6c71af4..113446b44 100644 --- a/pokemon_v2/urls.py +++ b/pokemon_v2/urls.py @@ -70,7 +70,10 @@ ########################### urlpatterns = [ - url(r'^api/v2/', include(router.urls)), - url(r'^api/v2/pokemon/(?P\d+)/encounters', - PokemonEncounterView.as_view(), name='pokemon_encounters') + url(r"^api/v2/", include(router.urls)), + url( + r"^api/v2/pokemon/(?P\d+)/encounters", + PokemonEncounterView.as_view(), + name="pokemon_encounters", + ), ] diff --git a/test-requirements.txt b/test-requirements.txt index da76606ab..068662e83 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,3 +1,5 @@ +-r requirements.txt pylint===2.1.1 pylint-django===2.0.2 astroid==2.0.4 +black==19.10b0