#49 Parcels and Districts

* introduces new models: Parcel and District
This commit is contained in:
mpeltriaux 2021-12-16 12:21:31 +01:00
parent 44dbee0008
commit 71f88f7218
3 changed files with 71 additions and 2 deletions

View File

@ -9,3 +9,4 @@ from .object import *
from .deadline import * from .deadline import *
from .document import * from .document import *
from .geometry import * from .geometry import *
from .parcel import *

View File

@ -7,7 +7,6 @@ Created on: 15.11.21
""" """
from django.contrib.gis.db.models import MultiPolygonField from django.contrib.gis.db.models import MultiPolygonField
from django.db import models from django.db import models
from django.db.models import Q
from konova.models import BaseResource, UuidModel from konova.models import BaseResource, UuidModel
@ -69,7 +68,6 @@ class Geometry(BaseResource):
resolved_conflicts = all_conflicted_by_conflicts.exclude(id__in=still_conflicting_conflicts) resolved_conflicts = all_conflicted_by_conflicts.exclude(id__in=still_conflicting_conflicts)
resolved_conflicts.delete() resolved_conflicts.delete()
def get_data_objects(self): def get_data_objects(self):
""" Getter for all objects which are related to this geometry """ Getter for all objects which are related to this geometry

70
konova/models/parcel.py Normal file
View File

@ -0,0 +1,70 @@
"""
Author: Michel Peltriaux
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
Contact: michel.peltriaux@sgdnord.rlp.de
Created on: 16.12.21
"""
from django.db import models
from konova.models import UuidModel
class Parcel(UuidModel):
""" The Parcel model holds administrative data on the covered properties.
Due to the unique but relevant naming of the administrative data, we have to use these namings as field
names in german. Any try to translate them to English result in strange or insufficient translations.
All fields have to be CharFields as well, since there are e.g. Flurstücksnummer holding e.g. '123____' which
can not be realized using numerical fields.
To avoid conflicts due to german Umlaute, the field names are shortened and vocals are dropped.
"""
geometries = models.ManyToManyField("konova.Geometry", related_name="parcels", null=True, blank=True)
district = models.ForeignKey("konova.District", on_delete=models.SET_NULL, null=True, blank=True, related_name="parcels")
flrstck_nnr = models.CharField(
max_length=1000,
help_text="Flurstücksnenner"
)
flrstck_zhlr = models.CharField(
max_length=1000,
help_text="Flurstückszähler"
)
flr = models.CharField(
max_length=1000,
help_text="Flur"
)
gmrkng = models.CharField(
max_length=1000,
help_text="Gemarkung"
)
def __str__(self):
return f"{self.gmrkng} | {self.flr} | {self.flrstck_nnr} | {self.flrstck_zhlr}"
class District(UuidModel):
""" The model District holds more coarse information, such as Kreis, Verbandsgemeinde and Gemeinde.
There might be the case that a geometry lies on a hundred Parcel entries but only on one District entry.
Therefore a geometry can have a lot of relations to Parcel entries but only a few or only a single one to one
District.
"""
gmnd = models.CharField(
max_length=1000,
help_text="Gemeinde"
)
vg = models.CharField(
max_length=1000,
help_text="Verbandsgemeinde",
)
krs = models.CharField(
max_length=1000,
help_text="Kreis"
)
def __str__(self):
return f"{self.krs} | {self.vg} | {self.gmnd}"