Commit graph

392 commits

Author SHA1 Message Date
Eevee 5338d44272 Merge pull request #69 from encukou/i18n
Allow ordering and filtering on translatable texts, e.g. `Move.name`
2012-03-25 01:22:39 -07:00
Lynn "Zhorken" Vaughan 12b87852c6 Add game indices for the main six stats. 2012-03-20 03:33:18 -04:00
Lynn "Zhorken" Vaughan 61ed3c4ccb Add a VersionGroup.machines relationship. 2012-02-29 00:33:03 -05:00
Lynn "Zhorken" Vaughan cdf052555b Eagerload Pokemon.forms.
This fixes all those spline-pokedex tests that broke when I fixed
Pokémon name display.
2012-02-28 21:28:58 -05:00
Eevee 75287587a2 Merge pull request #66 from encukou/internal-ids
Add internal IDs to forms
2012-02-28 17:14:43 -08:00
Eevee 0e766d309c Merge pull request #65 from encukou/xd-tutor
Add the VersionGroupPokemonMoveMethod table
2012-02-23 19:42:31 -08:00
Lynn "Zhorken" Vaughan 2073fa5089 Support null regional Pokédex for Colosseum/XD. #70 2012-02-16 11:37:04 -05:00
Petr Viktorin 391fd1c1ac Support association proxies 2012-02-12 23:43:14 +01:00
Petr Viktorin ef3fb2f536 Move relationships to _add_relationships calls: Pokemon 2012-02-12 23:43:14 +01:00
Petr Viktorin 949ff883ea Autodoc for backrefs 2012-02-12 22:45:10 +01:00
Petr Viktorin 0cb1f8a1b8 Make the table schema a bit more introspectable
This solves two problems: first, the relationships are now defined in
the class they apply to, rather than in a separate section of the module,
and second, their metadata -- both creation arguments and extra info such
as `description` (or, later, possibly, info for API properties) -- is
stored.
2012-02-12 16:19:09 +01:00
Petr Viktorin 96499fae30 Allow ordering and filtering on translated texts, e.g. Move.name 2012-02-12 09:50:04 +01:00
Petr Viktorin 50b08d94d9 Make a few __get__ methods work properly on their class
Automatic doc generation requires this.
2012-02-11 22:54:46 +01:00
Petr Viktorin 81f2c83ad5 Allow ordering and filtering on translated texts, e.g. Move.name 2012-02-11 21:05:52 +01:00
Petr Viktorin 5b7e13892a Add pokemon_form_generations, with internal game indices
Fixes #63
2012-02-11 13:08:54 +01:00
Petr Viktorin 216e4c8462 Typo fix 2012-02-11 09:12:17 +01:00
Eevee 897c6f1de1 Merge pull request #64 from veekun/zhorken
Fixes some move data issues and form bugs.
2012-02-05 21:29:22 -08:00
Petr Viktorin 48f3957aab Add the VersionGroupPokemonMoveMethod table 2012-02-06 00:43:47 +01:00
Petr Viktorin 73cf9c036c Use VersionGroup.order in a bunch of relationships 2012-01-30 18:17:00 +01:00
Petr Viktorin 1134415e13 Introduce an order column for version groups
Some code in spline-pokedex orders by `id`, which has worse consequences
than it may seem (e.g. instead of defaulting to most recent games, the
comparifier defaults to XD). This is the first step to fixing that.
2012-01-30 14:09:05 +01:00
Lynn "Zhorken" Vaughan 111394315e Fix the indiscriminate display of Pokémon with their form names. 2012-01-24 00:24:02 -05:00
Petr Viktorin 3607b9b3e1 Let MoveEffectProperty be None if the move_effect is None
MoveChangelog.move_effect is None if there is no effect change.
Its .effect should just be None as well.
2011-11-14 21:17:12 +02:00
Petr Viktorin ebab8c6e43 Try importing markdown utilities from markdown.util
etree and AtomicString will be moved in python-markdown 2.1

See commit https://github.com/waylan/Python-Markdown/commit/89a4f3d0829a7 :
    Cleaned up markdown namespace. This may be a backward incompatible
    change for some extensions. They should be importing from
    markdown.util
2011-09-22 00:51:59 +03:00
Petr Viktorin 719c32de0b Make MarkdownString.as_html() accept an extension object, not class
No reason to instantiate every time as_html's called, is there?

Also, sessions use a markdown_extension attribute instead of
markdown_extension_class. The latter is only used to set the former when
the session is created (unless another markdown_extension_class is given,
of course).
2011-09-22 00:51:59 +03:00
Petr Viktorin 928eaca4a4 Make bad links in Markdown not fail
Links such as []{pokemon:mewthree} can come from users, so they should not
crash the parser.
So, when an object is not found (or more than one is found), call
identifier_url() directly, instead of failing to get the object for
object_url(). Essentially, treat the link as having an unknown category
(like mechanic:, currently).

The test that check the pokédex descriptions updated so that only
links to known objects and "mechanic:" are allowed.
2011-09-22 00:51:59 +03:00
Petr Viktorin cdac374eed Allow links to Pokémon forms in Markdown. Fixes #465
Linked-to objects aren't required to have identifiers now, so object_url()
in custom extensions might need to be changed.
The one in the test did, for example.
2011-09-22 00:51:59 +03:00
Petr Viktorin d8d32a0176 Use identifiers in Pokemon.stat 2011-09-22 00:51:59 +03:00
Eevee a11261e529 Fix a stupid closure-in-loop problem. #654 #655 2011-09-11 17:27:58 -07:00
Eevee 25ab674c7c Fix this markdown extension nonsense.
Previously, every single spline-pokedex request tacked another markdown
extension onto a global list in spline, making markdown processing just
a little bit slower over time.  This is terrible.

Now we do something a little less crazy and a little more global.  Wait,
is that less crazy or more?
2011-09-06 21:52:27 -07:00
Eevee 3a59ef1fe0 Update us to SQLAlchemy 0.7. #582 2011-09-04 23:19:56 -07:00
Petr Viktorin bb49a6bc39 Fix a Unicode docstring 2011-08-30 23:05:28 +03:00
Petr Viktorin 41a168a0e2 Add a missing import, remove some unused ones 2011-08-30 23:05:22 +03:00
Eevee 10ce391098 Nicer docstrings for the three "pokemon" tables we have now. 2011-08-29 20:36:06 -07:00
Petr Viktorin dd668febe7 Make id lookup util.get use query.get, avoiding queries for dupe lookups 2011-05-06 12:40:44 +03:00
Petr Viktorin 3034c04d59 Allow missing Markdown translation rows (for species' form descriptions) 2011-05-06 12:26:16 +03:00
Petr Viktorin dd0d225228 Pokemon species split: utilities.
Remove 'simple' altogether, as pokémon are now sane by default!
2011-05-06 12:26:16 +03:00
Petr Viktorin d0c01810be Pokemon species split: Lookup & Markdown 2011-05-06 12:26:16 +03:00
Petr Viktorin 8309b316f2 Add is_default to Pokemon. Revise forms' is_default accordingly. 2011-05-06 12:26:16 +03:00
Petr Viktorin bc244aeb53 Pokemon species split: DB metadata changes 2011-05-06 12:26:16 +03:00
Petr Viktorin 280c90b966 Pokemon species split: Schema changes 2011-05-06 12:26:16 +03:00
Eevee 349fbb2d94 Merge remote-tracking branch 'origin/encukou-markdown' 2011-04-28 19:40:20 -07:00
Petr Viktorin 7d7fcc74c8 Don't set autoincrement for ids with zeroes. Test included. #580 2011-04-28 23:45:43 +03:00
Petr Viktorin b711edd511 Port the Markdown value tests from spline-pokedex. Fix remaining strings. 2011-04-28 23:43:54 +03:00
Petr Viktorin f7a9c28e60 Rename MoveFlagType/MoveFlag to MoveFlag/MoveFlagMap. #591 2011-04-28 23:43:54 +03:00
Petr Viktorin 85d779ba83 Move Markdown handling to the translation classes
- the Session has a `pokedex_link_maker` property, whose `object_url`
  method is used to make URLs in Markdown
- pokemon.names_table.name is now an ordinary Unicode column
- pokemon.name is a MarkdownString that is aware of the session and the
  language the string is in
- pokemon.name_map is a dict-like association_proxy of the above
- move.effect works similarly, with transparent $effect_chance substitution
  as before
2011-04-28 23:42:56 +03:00
Petr Viktorin 059f7dfc55 Autofill empty labels in Markdown links
- as_text() is now a function that takes the session as an argument
- likewise as_html(), which also takes URL makers and the language
- since there should be only one link extension, it is registered by
  setting default_link_extension, not appending to markdown_extensions.
  This only affects the __html__ attribute.
2011-04-28 23:42:56 +03:00
Petr Viktorin 051d6563a4 Don't try to replace the $effect_chance in missing effect translations 2011-04-28 23:42:56 +03:00
Petr Viktorin 98dcc613e2 Use relationship() instead of the deprecated relation(). #596 2011-04-28 23:31:38 +03:00
Petr Viktorin 3c17720a1c order_by_name: properly fall back to the specified languages, or identifier
Sometimes, translations are incomplete. Handle this gracefully by allowing
fallback languages. If there are none, fall back to the identifier to get
at least some order.
2011-04-28 23:31:38 +03:00
Eevee b2db58afc7 Fix discrepancy between media-accessors branches. 2011-04-17 22:35:24 -07:00
Petr Viktorin 69140a88f5 Move the rest of pokedex.util.get to pokedex.db.util 2011-04-17 22:34:05 -07:00
Petr Viktorin 1f2df80a00 Make Pokemon.form an actual relation 2011-04-17 22:34:03 -07:00
Petr Viktorin 4cd68fb5e3 Typo: multilang docstring was wrong 2011-04-17 22:34:02 -07:00
Petr Viktorin 11c0c4778b Add media accessors 2011-04-17 20:55:57 -07:00
Petr Viktorin 0f7feab591 Make PokemonForm.pokemon an actual relation 2011-04-17 17:45:10 -07:00
Petr Viktorin 27d33556d4 Load local_language lazily 2011-04-17 17:45:10 -07:00
Eevee 8e1bbe0004 Merge remote-tracking branch 'origin/encukou-translations' 2011-04-17 17:43:42 -07:00
Petr Viktorin 695347bcff Update markdown.py docstring 2011-04-12 11:10:36 +03:00
Petr Viktorin 10d9bc83b3 Mark MoveEffect.effect as a Markdown column.
Also relax the appropriate test
2011-04-12 09:51:51 +03:00
Petr Viktorin f42f5f32d0 Expand some string limits so links with identifiers can fit 2011-04-12 09:06:04 +03:00
Petr Viktorin 5d18ae7ab6 Make the schema tests pass 2011-04-12 09:06:02 +03:00
Petr Viktorin 34a8070449 Load translations in pokedex load. 2011-04-11 17:07:38 +03:00
Petr Viktorin 817c4c289d Don't dump unofficial translations in pokedex dump
(Translations cannot be dumped properly because the source string hash
isn't in the database.)

By default, unofficial texts are only dumped for English, but that can
be configured if someone wants CSVs for different language(s).

Official texts (<thing>_names rows for official languages) are always
dumped.
2011-04-11 17:07:37 +03:00
Petr Viktorin 4c2ad2bdf1 Reading, merging, and writing translations 2011-04-11 17:03:27 +03:00
Eevee 36fa8b7093 Fix a misuse of a set as a dictionary in db loading. 2011-04-10 18:51:03 -07:00
Eevee 28d81cc25f Rearranged evolution table; added new B/W evolutions. #378
There are now (well, have been for a while) multiple ways to evolve
a Pokémon from its unique parent, so the current schema wasn't working.
The parent Pokémon has moved back to the main pokemon table, and
pokemon_evolution has grown an artificial primary key.

New evolution methods for Milotic, Leafeon, Glaceon, Magnezone, and
Probopass have been added.
2011-04-10 16:33:18 -07:00
Eevee 08bfd753e0 Fix default language assignment once and for all.
Stop trying to be clever and magical and just make the caller pass in a
damn primary key.
2011-04-10 00:54:14 -07:00
Eevee f666327fa0 Remove old move effect categories. #389 2011-04-09 22:58:40 -07:00
Eevee 8de33be206 Added identifiers for move meta categories. 2011-04-09 22:22:58 -07:00
Eevee 8e2ad429d9 hurp durp default language 2011-04-05 23:34:28 -07:00
Eevee 905f5b3d13 Merge remote-tracking branch 'origin/encounters-i18n'
Conflicts:
	pokedex/db/__init__.py
2011-04-05 22:32:51 -07:00
Eevee 5b0f290ec5 Unbreak db.connect(), whoops. 2011-04-05 21:46:11 -07:00
Eevee acf44c63a0 Merge branch 'encukou' 2011-04-05 21:04:32 -07:00
Eevee 9441ffb165 Remove the responsibility of setting a default language from multilang.
Caller now has to do it.  No need to avoid circular deps, no need to do
much of anything at all.
2011-04-05 21:03:41 -07:00
Eevee ef29dd667c Always joinedload the local_language for a full language map. 2011-04-05 20:48:10 -07:00
a_magical_me 841694f83f Add R/S/E encounters. #136
- They actually have LocationAreaEncounterRates this time!

- Make EncounterSlots.rarity nullable, since my script requires it.
2011-04-04 17:48:10 -07:00
a_magical_me c9a3ceb88f Rename terrain => method. #375
They aren't actually terrains, and i need that name for another table.
2011-04-04 17:48:05 -07:00
a_magical_me 7b7c0addde Add B/W locations. #375
English and Japanese. Woo!

The text dump contained a bunch of duplicate location names (possibly
for the Entralink?).  I've merged them in the locations table, but
location_game_indices still has the duplicates—that is, a location can
now have multiple game_index values in one generation (necessitating a
small schema change).
2011-04-04 17:09:11 -07:00
Petr Viktorin 4291c33c00 Make MultilangSession's language class configurable 2011-04-04 21:51:35 +03:00
Petr Viktorin 9fdb8e1bd0 Make session.default_language set/get work 2011-04-04 04:18:37 +03:00
a_magical_me dbb293e727 Add identifier_from_name() function.
Adapted from name2ident() in scripts/migration-i18n.py.
2011-04-03 15:32:11 -07:00
a_magical_me 34a888cc16 Revert "Added a bunch of autoincrement=False."
This reverts commit e68f43a5aee1b8fe145c416df6fa0015b54efd5c,
because it was a bloody terrible idea.
2011-04-03 15:20:53 -07:00
Petr Viktorin 8cddfefc4c Add __repr__ to mapped classes
This makes string representations of lists, tuples, dicts, etc. with the
DB objects make sense
2011-04-03 21:18:37 +03:00
Petr Viktorin a06498cb39 Make a bunch of text columns nullable to support missing translations 2011-04-03 20:08:05 +03:00
Petr Viktorin 6f36907341 Enable nullable MarkdownColumns 2011-04-03 20:08:04 +03:00
Petr Viktorin 105d9422ca Change item short effect format to markdown 2011-04-03 19:34:18 +03:00
a_magical_me bbb7cb9907 Make load.py more idiomatic.
Also snuck an idiom into db/__init__.py.
2011-04-03 04:26:45 -07:00
a_magical_me 9340f24ae4 load: Add --recursive option.
Helps somewhat with #526 (`pokedex load` is slow) by making it easier to
load only the tables you're interested in.
2011-04-03 03:17:08 -07:00
a_magical_me bc0b4acb84 Add MarkdownString.__html__(). 2011-04-03 03:17:04 -07:00
a_magical_me b924a82236 Remove all uses of str.format().
For Python 2.5 compatibility.
2011-04-03 03:16:52 -07:00
Eevee 629d99885c Change item short effects to markdown. 2011-04-03 02:16:15 -07:00
Eevee c519a4c824 Added a truckload of innerjoins and joinedloads.
Also reformatted the relationship definitions.  Now less of a clusterfuck.
2011-04-03 01:26:55 -07:00
Eevee 50b3adf949 Split up MoveEffectProperty; don't detect dict proxies.
(It didn't work anyway!)
2011-04-03 01:25:59 -07:00
Eevee adbd3b628f Fix pokedex load with empty tables. 2011-04-03 01:23:48 -07:00
Eevee 702b99666e Added a bunch of autoincrement=False. 2011-04-01 17:59:42 -07:00
Petr Viktorin 17e359ddba Add 'ripped' to column info 2011-04-01 16:50:10 -07:00
Eevee 13452d3136 Create flavor_summary tables for Pokemon, Move, Item. 2011-04-01 16:47:52 -07:00
Petr Viktorin 7b93c11f7e Reorder the classes in tables.py alphabetically. Also, test the order. 2011-04-01 16:08:56 -07:00
Petr Viktorin 3bfb7f0bb9 Update the comment for the Postgres version of pokedex load. 2011-04-01 16:08:56 -07:00
Petr Viktorin 97bf4cfe45 Update test_schema to the new API. Add some missing column metadata. 2011-04-01 15:59:53 -07:00
Petr Viktorin d961cfe1c7 Add a mapped_classes list, and a translation_classes list to each mapped class 2011-04-01 15:59:52 -07:00
Eevee bd9fa0d6a6 Shapes for gen 5 Pokémon. 2011-04-01 15:59:14 -07:00
Eevee 305f739190 Disable autoincrement for MoveMetaAilment. 2011-03-31 09:22:16 -07:00
Eevee 8b81053a90 Add Stat.is_battle_only. 2011-03-29 21:26:57 -07:00
Eevee db466bbebf Update the pokedex.db.tables docs. 2011-03-29 20:20:08 -07:00
Eevee 825d40c51e Match default language by id, not identifier. 2011-03-29 20:15:41 -07:00
Eevee 1268a76832 Joinedload current-language names. 2011-03-29 18:39:37 -07:00
Petr Viktorin 3475c86d2e Print progress for dropping/creating tables 2011-03-29 17:42:59 +03:00
Petr Viktorin bb4861b8c6 Faster pokedex load for PostgreSQL #526
Also added the -S (--safe) option, which disables the backend-specific
optimizations.

This gives over 3× speedup on my machine :)
2011-03-29 17:42:48 +03:00
Eevee f24702b7a9 language_id -> local_language_id 2011-03-28 19:12:30 -07:00
Eevee 93a85f020f Remove back_populates, which doesn't seem to work. 2011-03-24 20:44:08 -07:00
Eevee 027fd6236f Remove a bunch of imports from tables.py. 2011-03-24 20:02:00 -07:00
Eevee d986355bf3 Rename internal_id to game_index. 2011-03-24 19:37:12 -07:00
Eevee 3a6fe6d539 Rename *_texts tables to *_names. 2011-03-24 18:46:46 -07:00
Eevee a3e0e4912b Whoops; preserve column order. 2011-03-24 17:17:24 -07:00
Eevee ef1db6029d Remove LanguageSpecific. 2011-03-23 22:41:02 -07:00
Eevee 8ad84e4032 Removed ProseColumn and TextColumn. Huzzah. 2011-03-23 22:17:02 -07:00
Eevee 68e14e663e Started switching to create_translation_table.
- Moved the function to its own file.
- Implemented the session-based default language switching.
- Migrated a couple tables.
2011-03-21 22:32:52 -07:00
Eevee 6a9172151a Sigh! Remove support for strings as keys; use Language objects. 2011-03-21 17:54:28 -07:00
Eevee 1da816af4b New i18n schema thing impl, and fixed the new tests to match. 2011-03-20 01:06:45 -07:00
Eevee 542aa670ae Added a test for the i18n dynamic table generation.
It fails spectacularly, but hopefully documents what I'm ultimately
going for.
2011-03-18 18:22:18 -07:00
Eevee 4645349133 Rename some meta-schema variables for ease of debugging. 2011-03-18 17:15:34 -07:00
Eevee a417a0a9e1 Replace String* sqla stuff with association_proxy. 2011-03-14 22:24:29 -07:00
Eevee a0f5c53193 Give every db table a __str__. 2011-03-14 20:51:31 -07:00
Eevee b61acaff69 Tidy up relation creation for name tables. 2011-03-13 23:43:08 -07:00
Eevee f773ef02ec Remove OfficiallyNamed and UnofficiallyNamed. 2011-03-13 23:33:42 -07:00
Eevee 482ca207cb Fix some i18n schema issues when running under a Real Database™. 2011-03-13 15:45:07 -07:00
Petr Viktorin 2f222ca973 Make the string properties mutable 2011-03-13 15:43:42 -07:00
Petr Viktorin 7c039115ee Use DefaultLangProperty for Markdown columns 2011-03-13 15:43:02 -07:00
Petr Viktorin e5f7cd2aed Rename StatHint.text to .message (clashed with the all-texts attribute) 2011-03-13 15:43:01 -07:00
Petr Viktorin 1053b35471 fixup! I18n for the database schema 2011-03-13 15:43:01 -07:00
Petr Viktorin 980ae01d10 Fix connect() without arguments 2011-03-13 15:43:01 -07:00
Petr Viktorin bc2707f6c4 Support filtering by strings (Pokemon.name, Pokemon.names['fr'], etc.) 2011-03-13 15:43:01 -07:00
Petr Viktorin 414a272c21 Add descriptions to new tables 2011-03-13 15:43:00 -07:00
Petr Viktorin d0d4d1aa96 Use a class + mapper instead of dynamic declarative magic 2011-03-13 15:43:00 -07:00
Petr Viktorin b3c7689d41 Replace all_tables by table_classes; get rid of globals() 2011-03-13 15:43:00 -07:00
Eevee 625aa19fbd Preserve the order of TextColumns and ProseColumns. 2011-03-13 15:40:46 -07:00
Petr Viktorin 30faa46ab6 Multi-language markdown move properties
Singular property name for English text
Plural property name for dict of texts keyed by language
2011-03-13 15:10:11 -07:00
Petr Viktorin d813e24b25 I18n for the database schema
- Helper base class: Named
  Subclasses: OfficiallyNamed, UnofficiallyNamed
  for these, a 'name' column is created in the appropriate text table
  also, they get automatic __str__/__repr__/__unicode__
- Faux columns: ProseColumn, TextColumn
  these become columns in the appropriate text tables
  these text tables (*_text, *_prose) are auto-generated at the end
  the main table gets one property (singular name) that gets the English text
   and one (plural name) with dict of texts keyed by language
- Every named table gets 'identifier'
- Languages compare & hash equal to their identifiers
- Existing foreign-name tables replaced by the autogenerated ones
- order_by: names replaced by identifiers
- New function: all_tables(), yields all tables
- Markdown move properties removed for now
- Schema test suite
2011-03-13 15:10:10 -07:00
Eevee 373c01dfda "Characteristic" text, here called stat hints. 2011-03-08 22:28:34 -08:00
Eevee 74454f8d76 Add B/W move metadata. #389 2011-03-08 22:28:33 -08:00
Lynn "Zhorken" Vaughan edc222bbb6 Shorten some over-long move effect changelog entries.
I couldn't really shorten Dig and Fly's bug descriptions to 255
characters, so I also gave the column more space.
2011-02-10 22:00:18 -05:00
Lynn "Zhorken" Vaughan 92084b28b3 Support null PP for Struggle and Shadow moves. #190 2011-02-10 21:02:02 -05:00
Lynn "Zhorken" Vaughan d6a96f5ee9 Support null pre-D/P damage class for ??? and Shadow.
Rather than marking them "non-damaging".
2011-02-10 21:02:01 -05:00
Eevee 1bfbaa67b1 Add a couple relations for move effect changelogs. 2011-02-09 23:39:03 -08:00
Eevee 96c5c6a09f Use engine_from_config for database connections. #390 2011-02-09 23:39:03 -08:00
Lynn "Zhorken" Vaughan b0e99aa7f1 Order Ability's Pokémon relations by Pokemon.order. 2011-01-31 17:02:34 -05:00
Lynn "Zhorken" Vaughan 04ec336654 Make Type.moves a proper relation with an order_by. 2011-01-31 16:36:20 -05:00
Lynn "Zhorken" Vaughan 6c286ffa6f Morning is not a separate time of day for evolution.
As far as evolution is concerned, it's always day or night--there is no
in-between period when Eevee will not evolve into Espeon or Umbreon, and
there are no Pokémon that only evolve during the early part of the day.
Having 'morning' as a separate value is thus misleading, albeit not
terribly misleading since it never appeared outside of tables.py.
2011-01-31 14:41:19 -05:00
Petr Viktorin 497ba412b0 Speed tweaks for pokedex load in SQLite 2011-01-27 21:51:30 -08:00