Merge pull request '439_Wartungskommando_Nachverschneidung' (#446) from 439_Wartungskommando_Nachverschneidung into master
Reviewed-on: #446
This commit is contained in:
commit
416ad8478c
@ -34,7 +34,9 @@ class Command(BaseKonovaCommand):
|
||||
def recalculate_parcels(self, options: dict):
|
||||
force_all = options.get("force_all", False)
|
||||
|
||||
geometry_objects = Geometry.objects.all()
|
||||
geometry_objects = Geometry.objects.all().exclude(
|
||||
geom=None
|
||||
)
|
||||
|
||||
if not force_all:
|
||||
# Fetch all intersections
|
||||
@ -46,16 +48,17 @@ class Command(BaseKonovaCommand):
|
||||
"geometry__id",
|
||||
flat=True
|
||||
)
|
||||
# Filter those geometries out (they have intersections and do not need to be processed)
|
||||
geometry_objects = geometry_objects.exclude(
|
||||
intersected_geom_objs = Geometry.objects.filter(
|
||||
id__in=geom_with_intersection_ids
|
||||
)
|
||||
# Filter those geometries out (they have intersections and do not need to be processed)
|
||||
geometry_objects = geometry_objects.difference(intersected_geom_objs)
|
||||
|
||||
self._write_warning("=== Update parcels and districts ===")
|
||||
# Order geometries by size to process smaller once at first
|
||||
geometries = geometry_objects.exclude(
|
||||
geom=None
|
||||
).annotate(area=Area("geom")).order_by(
|
||||
geometries = geometry_objects.annotate(
|
||||
area=Area("geom")
|
||||
).order_by(
|
||||
'area'
|
||||
)
|
||||
self._write_warning(f"Process parcels for {geometries.count()} geometry entries now ...")
|
||||
|
@ -159,7 +159,6 @@ class Parcel(UuidModel):
|
||||
return f"{self.parcel_group} | {self.flr} | {self.flrstck_zhlr} | {self.flrstck_nnr}"
|
||||
|
||||
@classmethod
|
||||
@transaction.atomic
|
||||
def make_unique(cls, **kwargs):
|
||||
""" Checks for duplicates of a Parcel, choose a (now) unique one,
|
||||
repairs relations for ParcelIntersection and removes duplicates.
|
||||
@ -188,6 +187,7 @@ class Parcel(UuidModel):
|
||||
intersection_objs = ParcelIntersection.objects.filter(
|
||||
parcel__in=parcel_objs
|
||||
)
|
||||
|
||||
# Change each intersection, so they point on the 'true one' parcel from now on
|
||||
for intersection in intersection_objs:
|
||||
intersection.parcel = unique_parcel
|
||||
|
Loading…
Reference in New Issue
Block a user