diff options
Diffstat (limited to 'ishtar_common/management/commands')
| -rw-r--r-- | ishtar_common/management/commands/migrate_to_geo_v4.py | 97 | 
1 files changed, 64 insertions, 33 deletions
| diff --git a/ishtar_common/management/commands/migrate_to_geo_v4.py b/ishtar_common/management/commands/migrate_to_geo_v4.py index df275bd85..64ab25c16 100644 --- a/ishtar_common/management/commands/migrate_to_geo_v4.py +++ b/ishtar_common/management/commands/migrate_to_geo_v4.py @@ -62,43 +62,74 @@ def migrate(quiet=False, log=True):      )      q = Operation.objects.exclude(main_geodata__isnull=False)      nb = q.count() +    data_type_area, __ = models_common.GeoDataType.objects.get_or_create( +        txt_idx="operation-area", defaults={"label": "Emprise de l'opération"} +    ) +    data_type_center, __ = models_common.GeoDataType.objects.get_or_create( +        txt_idx="operation-center", defaults={"label": "Centre de l'opération"} +    )      for idx, operation in enumerate(q.all()): -        if operation.multi_polygon_source == "T": -            operation._no_move = True -            operation.skip_history_when_saving = True -            operation.save()  # auto managed -        elif operation.multi_polygon_source == "P": -            # TODO - -            """ -            q = operation.towns.filter(limit__isnull=False) -            nb = q.count -            if not nb: -                break -            elif nb == 1: -                town = q.all()[0] -                geo = models_common.GeoVectorData.objects.get( -                    source_content_type=town_content_type, -                    source_id=town.pk -                ) -            else: +        if not quiet: +            sys.stdout.write(f"\r[{percent(idx, nb)}] Migrate operations {idx + 1}/{nb}") +            sys.stdout.flush() +        operation._no_move = True +        operation.skip_history_when_saving = True +        operation.save()  # auto manage geo town association +        q_towns = operation.towns.filter(main_geodata__multi_polygon__isnull=False) +        if q_towns.count() > 1: +            changed.append( +                ["operation", str(operation), operation.pk, +                 "Association géo de zone communale"]) +        elif q_towns.count() == 1: +            changed.append( +                ["operation", str(operation), operation.pk, +                 "Association géo de commune"]) +        if operation.multi_polygon_source == "P" and operation.multi_polygon: +            attrs = { +                "name": f"{_('Operation')}{_(':')} {str(operation)}", +                "source_content_type": operation_content_type, +                "source_id": operation.pk, +                "multi_polygon": operation.multi_polygon, +                "data_type": data_type_area, +            } +            data = models_common.GeoVectorData.objects.create(**attrs) +            operation.main_geodata = data +            operation.save() +            changed.append( +                    ["geovectordata", data.name, data.pk, "Multi-polygone opération"]) +        if operation.point_source == "P" and operation.point_2d: +            if operation.x and operation.y:                  attrs = { -                    "name": name, -                    "source_content_type": town_content_type, -                    "source_id": town.pk, -                    "data_type": data_type, -                    "provider": provider, -                    "multi_polygon": poly, +                    "name": f"{_('Operation')}{_(':')} {str(operation)}", +                    "source_content_type": operation_content_type, +                    "source_id": operation.pk, +                    "data_type": data_type_center, +                    "x": operation.x, +                    "y": operation.y, +                    "z": operation.z,                  } -                geo, created = models_common.GeoVectorData.objects.get_or_create( -                    **attrs) - -            operation.main_geodata = geo -            operation.skip_history_when_saving = True -            operation._no_move = True -            operation.save() -            """ +                data = models_common.GeoVectorData.objects.create(**attrs) +                operation.main_geodata = data +                operation.save() +                changed.append( +                    ["geovectordata", data.name, data.pk, "Coordonnées opération"]) +            elif operation.point_2d: +                attrs = { +                    "name": f"{_('Operation')}{_(':')} {str(operation)}", +                    "source_content_type": operation_content_type, +                    "source_id": operation.pk, +                    "data_type": data_type_center, +                } +                if operation.point: +                    attrs["point_3d"] = operation.point +                else: +                    attrs["point_2d"] = operation.point_2d +                data = models_common.GeoVectorData.objects.create(**attrs) +                operation.main_geodata = data +                operation.save() +                changed.append( +                    ["geovectordata", data.name, data.pk, "Point opération"])      if log and changed: | 
