species: tests and data migration

This commit is contained in:
Matthew Ryan Dillon 2016-06-09 14:37:34 -07:00
parent 831e4091dc
commit afa22b046b
4 changed files with 74 additions and 0 deletions

View file

@ -0,0 +1,40 @@
from django.db import migrations
from django.forms import modelform_factory
from ccdb.utils.data import get_data_sources
class Migration(migrations.Migration):
def migrate(apps, schema_editor):
sources = get_data_sources()
if not sources:
return
c = sources['db0']
Species = apps.get_model('species', 'Species')
Species.objects.all().delete()
SpeciesForm = modelform_factory(Species, fields='__all__')
for r in c.execute('SELECT * FROM tbl_lu_species;'):
form = SpeciesForm(dict(common_name=r[1], genus=r[2],
species=r[3], parasite=r[4],
sort_order=int(r[5]) if r[5] else None))
if form.is_valid():
Species.objects.create(id=r[0], **form.cleaned_data)
else:
print('species', r[0:], form.errors.as_data())
def rollback(apps, schema_editor):
Species = apps.get_model('species', 'Species')
Species.objects.all().delete()
dependencies = [
('species', '0003_collectionspecies'),
]
operations = [
migrations.RunPython(migrate, rollback),
]