ccdb-api/ccdb/species/migrations/0005_DATA_species_collection.py

41 lines
1.3 KiB
Python

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']
CollectionSpecies = apps.get_model('species', 'CollectionSpecies')
CollectionSpecies.objects.all().delete()
CollectionSpeciesForm = modelform_factory(CollectionSpecies, fields='__all__')
for r in c.execute('SELECT * FROM tbl_hash_collection_species;'):
form = CollectionSpeciesForm(dict(collection=r[0], species=r[1], sex=r[2],
count=r[3], count_estimated=r[4]))
if form.is_valid():
# No PK in Andre's file
form.save()
else:
print('collection species', r[0:], form.errors.as_data())
def rollback(apps, schema_editor):
CollectionSpecies = apps.get_model('species', 'CollectionSpecies')
CollectionSpecies.objects.all().delete()
dependencies = [
('species', '0004_DATA_initial'),
('collections_ccdb', '0005_DATA_initial'),
]
operations = [
migrations.RunPython(migrate, rollback),
]