Add a script for setting pokemon.order veekun-promotions/2010122201
authora_magical_me <andrew@turnipmints.mooo.com>
Tue, 21 Dec 2010 04:58:51 +0000 (20:58 -0800)
committera_magical_me <andrew@turnipmints.mooo.com>
Tue, 21 Dec 2010 04:58:51 +0000 (20:58 -0800)
scripts/set_pokemon_order.py [new file with mode: 0755]

diff --git a/scripts/set_pokemon_order.py b/scripts/set_pokemon_order.py
new file mode 100755 (executable)
index 0000000..2c80ad1
--- /dev/null
@@ -0,0 +1,27 @@
+#!/usr/bin/env python2
+
+import sqlite3
+
+conn = sqlite3.connect("pokedex/data/pokedex.sqlite")
+
+cur = conn.execute(
+    """select p.id, p.name, pf.name
+    from pokemon p
+    join evolution_chains ec on p.evolution_chain_id = ec.id
+    left join pokemon_forms pf on p.id = pf.unique_pokemon_id
+    order by ec.id, is_baby = 0, coalesce(pf.form_base_pokemon_id, p.id),
+             pf."order", pf.name
+    ;""")
+
+idmap = []
+
+for i, row in enumerate(cur):
+    idmap.append((1 + i, row[0]))
+
+conn.executemany(
+    """update pokemon set "order" = ? where id = ?""",
+    idmap,
+)
+
+conn.commit()
+