Test fixes, postgis migration

pull/66/head
Piero Toffanin 2016-12-12 12:25:54 -05:00
rodzic 5c54aca9c1
commit 7db9ba200b
3 zmienionych plików z 35 dodań i 8 usunięć

Wyświetl plik

@ -0,0 +1,9 @@
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [("app", "0001_initial")]
operations = [
migrations.RunSQL("SET postgis.enable_outdb_rasters TO True;"),
migrations.RunSQL("SET postgis.gdal_enabled_drivers TO 'GTiff';")
]

Wyświetl plik

@ -243,7 +243,7 @@ class Task(models.Model):
# Process this as a new task # Process this as a new task
# Removing its UUID will cause the scheduler # Removing its UUID will cause the scheduler
# to process this the next tick # to process this the next tick
self.uuid = None self.uuid = ''
self.console_output = "" self.console_output = ""
self.processing_time = -1 self.processing_time = -1
@ -304,11 +304,11 @@ class Task(models.Model):
logger.info("Downloading all.zip for {}".format(self)) logger.info("Downloading all.zip for {}".format(self))
# Download all assets # Download all assets
#zip_stream = self.processing_node.download_task_asset(self.uuid, "all.zip") zip_stream = self.processing_node.download_task_asset(self.uuid, "all.zip")
zip_path = os.path.join(assets_dir, "all.zip") zip_path = os.path.join(assets_dir, "all.zip")
#with open(zip_path, 'wb') as fd: with open(zip_path, 'wb') as fd:
# for chunk in zip_stream.iter_content(4096): for chunk in zip_stream.iter_content(4096):
# fd.write(chunk) fd.write(chunk)
logger.info("Done downloading all.zip for {}".format(self)) logger.info("Done downloading all.zip for {}".format(self))
@ -319,9 +319,16 @@ class Task(models.Model):
logger.info("Extracted all.zip for {}".format(self)) logger.info("Extracted all.zip for {}".format(self))
# Add to database orthophoto # Add to database orthophoto
orthophoto_path = self.assets_path("odm_orthophoto", "odm_orthophoto.tif") orthophoto_path = os.path.realpath(self.assets_path("odm_orthophoto", "odm_orthophoto.tif"))
if os.path.exists(orthophoto_path): if os.path.exists(orthophoto_path):
self.orthophoto = GDALRaster(orthophoto_path, write=True) orthophoto = GDALRaster(orthophoto_path, write=True)
# We need to transform to 4326 before we can store it
# as an offdb raster field
orthophoto_4326_path = os.path.realpath(self.assets_path("odm_orthophoto", "odm_orthophoto_4326.tif"))
self.orthophoto = orthophoto.transform(4326, 'GTiff', orthophoto_4326_path)
logger.info("Imported orthophoto {} for {}".format(orthophoto_4326_path, self))
self.save() self.save()
except ProcessingException as e: except ProcessingException as e:

Wyświetl plik

@ -1,4 +1,6 @@
from django.contrib.gis.gdal import GDALRaster from django.contrib.gis.gdal import GDALRaster
from django.db import InternalError
from django.db import transaction
from .classes import BootTestCase from .classes import BootTestCase
from app.models import Task, Project from app.models import Task, Project
@ -13,8 +15,17 @@ class TestApi(BootTestCase):
def test_db(self): def test_db(self):
# Make sure we can use PostGIS raster type # Make sure we can use PostGIS raster type
raster = GDALRaster(os.path.realpath(os.path.join("app", "fixtures", "orthophoto.tif")), write=True)
self.assertTrue(raster.srid == 32615)
with transaction.atomic():
# We cannot store offdb references with SRID different than the one declared (4326)
self.assertRaises(InternalError, Task.objects.create, project=Project.objects.latest("created_at"),
orthophoto=raster)
# All OK when we transform to 4326
task = Task.objects.create(project=Project.objects.latest("created_at"), task = Task.objects.create(project=Project.objects.latest("created_at"),
orthophoto=GDALRaster(os.path.join("app", "fixtures", "orthophoto.tif"), write=True)) orthophoto=raster.transform(4326))
task.refresh_from_db() task.refresh_from_db()
self.assertTrue(task.orthophoto.srid == 4326) self.assertTrue(task.orthophoto.srid == 4326)
self.assertTrue(task.orthophoto.width == 252) # not original size, warp happened self.assertTrue(task.orthophoto.width == 252) # not original size, warp happened