From de1d2eafac14d7b643801a5a2c03e8d7326e9be7 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 15 Jan 2025 21:09:01 +0000 Subject: [PATCH] Allow running migrations without PostGIS --- .github/workflows/ci.yml | 4 +++- temba/locations/migrations/0031_squashed.py | 6 +++++- temba/locations/migrations/0034_populate_json_geometry.py | 5 +++++ temba/settings_common.py | 5 ++++- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 350cc93f58..ffed60da05 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: ports: - 6379:6379 postgres: - image: postgis/postgis:15-3.3-alpine + image: postgres:15-alpine env: POSTGRES_DB: temba POSTGRES_USER: temba @@ -63,6 +63,8 @@ jobs: port: 6000 - name: Initialize environment + env: + POSTGIS: 'OFF' run: | poetry install --no-root yarn install diff --git a/temba/locations/migrations/0031_squashed.py b/temba/locations/migrations/0031_squashed.py index df917a94ba..ee2c2f049d 100644 --- a/temba/locations/migrations/0031_squashed.py +++ b/temba/locations/migrations/0031_squashed.py @@ -36,7 +36,11 @@ class Migration(migrations.Migration): ("path", models.CharField(max_length=768)), ( "simplified_geometry", - django.contrib.gis.db.models.fields.MultiPolygonField(null=True, srid=4326), + ( + django.contrib.gis.db.models.fields.MultiPolygonField(null=True, srid=4326) + if settings.POSTGIS + else models.TextField() + ), ), ("lft", models.PositiveIntegerField(editable=False)), ("rght", models.PositiveIntegerField(editable=False)), diff --git a/temba/locations/migrations/0034_populate_json_geometry.py b/temba/locations/migrations/0034_populate_json_geometry.py index 0b792c391c..d3ed6919d4 100644 --- a/temba/locations/migrations/0034_populate_json_geometry.py +++ b/temba/locations/migrations/0034_populate_json_geometry.py @@ -1,10 +1,15 @@ # Generated by Django 5.1.4 on 2025-01-10 14:30 + import geojson +from django.conf import settings from django.db import migrations def populate_boundary_geometry(apps, schema_editor): # pragma: no cover + if not settings.POSTGIS: + return + AdminBoundary = apps.get_model("locations", "AdminBoundary") boundaries = AdminBoundary.objects.all().order_by("level", "osm_id") diff --git a/temba/settings_common.py b/temba/settings_common.py index 8e594caee1..102d927875 100644 --- a/temba/settings_common.py +++ b/temba/settings_common.py @@ -18,6 +18,9 @@ DATA_UPLOAD_MAX_NUMBER_FIELDS = 2500 # needed for exports of big workspaces +# Temp workaround to allow running migrations without PostGIS +POSTGIS = os.getenv("POSTGIS") != "OFF" + # ----------------------------------------------------------------------------------- # Tests # ----------------------------------------------------------------------------------- @@ -633,7 +636,7 @@ # Database # ----------------------------------------------------------------------------------- _default_database_config = { - "ENGINE": "django.contrib.gis.db.backends.postgis", + "ENGINE": "django.contrib.gis.db.backends.postgis" if POSTGIS else "django.db.backends.postgresql", "NAME": "temba", "USER": "temba", "PASSWORD": "temba",