diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76aaddd2..6b919bc7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -167,17 +167,11 @@ jobs: run: docker compose run --rm test /code/misc/run_tests.sh - name: Upload test coverage to Codecov - uses: codecov/codecov-action@v5 - with: - token: ${{ secrets.CODECOV_TOKEN }} - fail_ci_if_error: true - - - name: Upload test results to Codecov - uses: codecov/test-results-action@v1 - if: ${{ !cancelled() }} + uses: codecov/codecov-action@v7 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: true + report-type: test_results - name: 🐳 Docker push if: ${{ inputs.push_docker_image }} diff --git a/apps/project/migrations/0013_migrate_aoi_geometry.py b/apps/project/migrations/0013_migrate_aoi_geometry.py new file mode 100644 index 00000000..5c06e1c0 --- /dev/null +++ b/apps/project/migrations/0013_migrate_aoi_geometry.py @@ -0,0 +1,39 @@ +# Generated by Django 5.2.5 on 2026-06-08 15:00 + +from django.db import migrations +from django.db.models import F + + +def backfill_project_geometry_data(apps, schema_editor): + Project = apps.get_model("project", "Project") + + projects = [] + + for project in ( + Project._default_manager + .filter(aoi_geometry__isnull=False) + .select_related("aoi_geometry") + .iterator() + ): + project.centroid = project.aoi_geometry.centroid + project.bbox = project.aoi_geometry.bbox + project.total_area = project.aoi_geometry.total_area + projects.append(project) + + Project._default_manager.bulk_update( + projects, + ["centroid", "bbox", "total_area"], + ) + +class Migration(migrations.Migration): + + dependencies = [ + ("project", "0012_alter_project_project_type"), + ] + + operations = [ + migrations.RunPython( + backfill_project_geometry_data, + reverse_code=migrations.RunPython.noop, + ), + ] diff --git a/apps/project/serializers.py b/apps/project/serializers.py index 1df4e0b6..9fe71efe 100644 --- a/apps/project/serializers.py +++ b/apps/project/serializers.py @@ -383,12 +383,22 @@ def update(self, instance: Project, validated_data: dict[typing.Any, typing.Any] proj_aoi_geometry = proj.aoi_geometry if proj_aoi_geometry: proj_aoi_geometry.delete() + proj.aoi_geometry = None # FIXME(tnagorra): remove these later proj.total_area = total_area proj.bbox = bbox proj.centroid = centroid - proj.save(update_fields=["aoi_geometry", "aoi_geometry_input_asset", "total_area"]) + proj.save( + update_fields=[ + "total_area", + "bbox", + "centroid", + "aoi_geometry", + "aoi_geometry_input_asset", + "total_area", + ], + ) return proj