diff --git a/specifyweb/specify/migrations/0012_coordinate_fields_fix.py b/specifyweb/specify/migrations/0012_coordinate_fields_fix.py new file mode 100644 index 00000000000..98046bd28d7 --- /dev/null +++ b/specifyweb/specify/migrations/0012_coordinate_fields_fix.py @@ -0,0 +1,38 @@ +# Generated by Django 3.2.15 on 2024-11-02 00:46 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('specify', '0011_cascading_tree_nodes'), + ] + + operations = [ + # There are cases from Specify 6 where Longitude and Latitude are captured as decimal values but + # the accompanying text fields are not populated. In cases where the text fields are not populated, + # it appears the records do not have coordinates. This script will populate the text fields with the + # decimal values where the text fields are empty but the decimal values are not. + migrations.RunSQL( + """ + UPDATE locality + SET Lat1text = Latitude1 + WHERE Lat1text IS NULL AND Latitude1 IS NOT NULL; + + UPDATE locality + SET Long1text = Longitude1 + WHERE Long1text IS NULL AND Longitude1 IS NOT NULL; + + UPDATE locality + SET Lat2text = Latitude2 + WHERE Lat2text IS NULL AND Latitude2 IS NOT NULL; + + UPDATE locality + SET Long2text = Longitude2 + WHERE Long2text IS NULL AND Longitude2 IS NOT NULL; + """, + # This SQL statment should not be reversed, but this allows for rollback + reverse_sql='' + ) + ]