#132 Old entries migration
* adds intervention payment migration * adds intervention document migration
This commit is contained in:
parent
88946f663c
commit
675a3a0287
@ -1,12 +1,14 @@
|
|||||||
import psycopg2
|
import psycopg2
|
||||||
from django.contrib.gis.geos import MultiPolygon, GEOSException, MultiPoint, MultiLineString, Polygon
|
from django.contrib.gis.geos import MultiPolygon, GEOSException, MultiPoint, MultiLineString, Polygon
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
|
from django.core.files.uploadedfile import UploadedFile
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
|
|
||||||
from codelist.models import KonovaCode
|
from codelist.models import KonovaCode
|
||||||
from codelist.settings import CODELIST_CONSERVATION_OFFICE_ID, CODELIST_REGISTRATION_OFFICE_ID, \
|
from codelist.settings import CODELIST_CONSERVATION_OFFICE_ID, CODELIST_REGISTRATION_OFFICE_ID, \
|
||||||
CODELIST_PROCESS_TYPE_ID, CODELIST_LAW_ID, CODELIST_HANDLER_ID
|
CODELIST_PROCESS_TYPE_ID, CODELIST_LAW_ID, CODELIST_HANDLER_ID
|
||||||
from intervention.models import Intervention, Legal, Responsibility, Handler
|
from compensation.models import Payment
|
||||||
|
from intervention.models import Intervention, Legal, Responsibility, Handler, InterventionDocument
|
||||||
from konova.management.commands.setup import BaseKonovaCommand
|
from konova.management.commands.setup import BaseKonovaCommand
|
||||||
from konova.models import Geometry
|
from konova.models import Geometry
|
||||||
from konova.tasks import celery_update_parcels
|
from konova.tasks import celery_update_parcels
|
||||||
@ -148,6 +150,72 @@ class Command(BaseKonovaCommand):
|
|||||||
intervention.legal.save()
|
intervention.legal.save()
|
||||||
return intervention
|
return intervention
|
||||||
|
|
||||||
|
def _migrate_intervention_payment(self, intervention, eiv):
|
||||||
|
payment_date = eiv[16]
|
||||||
|
payment_amount = eiv[17]
|
||||||
|
|
||||||
|
if payment_amount is not None and payment_amount != 0:
|
||||||
|
payment_exists = intervention.payments.filter(
|
||||||
|
amount=payment_amount
|
||||||
|
).exists()
|
||||||
|
if payment_exists:
|
||||||
|
return intervention
|
||||||
|
|
||||||
|
payment = Payment(
|
||||||
|
amount=payment_amount,
|
||||||
|
)
|
||||||
|
if payment_date is None:
|
||||||
|
payment.comment = "Datenmigration: Kein Zahlungsdatum hinterlegt! Schnellstmöglich nachtragen oder diesen Kommentar mit einer Begründung ersetzen, falls kein Datum existiert."
|
||||||
|
else:
|
||||||
|
payment.due_on = payment_date
|
||||||
|
payment.save()
|
||||||
|
intervention.payments.add(payment)
|
||||||
|
return intervention
|
||||||
|
|
||||||
|
def _migrate_intervention_documents(self, intervention, eiv):
|
||||||
|
eiv_identifier = f"'{eiv[0]}'"
|
||||||
|
tmp_cursor = self.db_connection.cursor()
|
||||||
|
tmp_cursor.execute(
|
||||||
|
'select '
|
||||||
|
'doc.pfad, '
|
||||||
|
'doc."Bemerkung", '
|
||||||
|
'doc."Datum" '
|
||||||
|
'from "OBJ_MASTER" om '
|
||||||
|
'left join "LINFOS" linf on om."GISPADID"=linf."GISPADID" '
|
||||||
|
'left join "Objektphotos" doc on linf."PKEY"=doc."FKEY" '
|
||||||
|
'where '
|
||||||
|
f'om."KENNUNG"={eiv_identifier} and '
|
||||||
|
'doc.pfad is not null '
|
||||||
|
)
|
||||||
|
doc_results = tmp_cursor.fetchall()
|
||||||
|
if len(doc_results) > 0:
|
||||||
|
for doc_result in doc_results:
|
||||||
|
doc_path = doc_result[0]
|
||||||
|
doc_comment = doc_result[1]
|
||||||
|
doc_date = doc_result[2]
|
||||||
|
with open(doc_path, encoding="latin1") as file:
|
||||||
|
file = UploadedFile(file)
|
||||||
|
doc_title = "Migrierte Datei"
|
||||||
|
doc_date = doc_date or "1970-01-01"
|
||||||
|
doc_exists = InterventionDocument.objects.filter(
|
||||||
|
instance=intervention,
|
||||||
|
title=doc_title,
|
||||||
|
comment=doc_comment,
|
||||||
|
date_of_creation=doc_date
|
||||||
|
).exists()
|
||||||
|
if doc_exists:
|
||||||
|
continue
|
||||||
|
doc = InterventionDocument.objects.create(
|
||||||
|
title=doc_title,
|
||||||
|
comment=doc_comment,
|
||||||
|
file=file,
|
||||||
|
date_of_creation=doc_date,
|
||||||
|
instance=intervention,
|
||||||
|
)
|
||||||
|
|
||||||
|
tmp_cursor.close()
|
||||||
|
return intervention
|
||||||
|
|
||||||
def migrate_interventions(self):
|
def migrate_interventions(self):
|
||||||
cursor = self.db_connection.cursor()
|
cursor = self.db_connection.cursor()
|
||||||
cursor.execute(
|
cursor.execute(
|
||||||
@ -167,7 +235,9 @@ class Command(BaseKonovaCommand):
|
|||||||
'adr."Bemerkung" as eingriffsverursacher_bemerkung, '
|
'adr."Bemerkung" as eingriffsverursacher_bemerkung, '
|
||||||
'linf."Bemerkung" as eiv_comment, '
|
'linf."Bemerkung" as eiv_comment, '
|
||||||
'zt.erlass as Zulassungsdatum, '
|
'zt.erlass as Zulassungsdatum, '
|
||||||
'zt.rechtskraft as Bestandskraftdatum '
|
'zt.rechtskraft as Bestandskraftdatum, '
|
||||||
|
'zt.baubeginn as ersatzzahlungstermin, '
|
||||||
|
'eiv.ersatzzahlung '
|
||||||
'from "OBJ_MASTER" om '
|
'from "OBJ_MASTER" om '
|
||||||
'left join "LINFOS" linf on om."GISPADID"=linf."GISPADID" '
|
'left join "LINFOS" linf on om."GISPADID"=linf."GISPADID" '
|
||||||
'left join eiv on om."GISPADID"=eiv.gispadid '
|
'left join eiv on om."GISPADID"=eiv.gispadid '
|
||||||
@ -188,10 +258,10 @@ class Command(BaseKonovaCommand):
|
|||||||
len_all_eivs = len(all_eivs)
|
len_all_eivs = len(all_eivs)
|
||||||
num_processed = 0
|
num_processed = 0
|
||||||
self._write_warning(f"Migrate EIVs to interventions...")
|
self._write_warning(f"Migrate EIVs to interventions...")
|
||||||
self._write_warning(f"Found {len_all_eivs} entries. Process now...")
|
self._write_warning(f"--Found {len_all_eivs} entries. Process now...")
|
||||||
for eiv in all_eivs:
|
for eiv in all_eivs:
|
||||||
if num_processed % 500 == 0:
|
if num_processed % 500 == 0:
|
||||||
self._write_warning(f" {num_processed}/{len_all_eivs} processed")
|
self._write_warning(f"----{num_processed}/{len_all_eivs} processed")
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
eiv_comment = eiv[13] or ""
|
eiv_comment = eiv[13] or ""
|
||||||
intervention = Intervention.objects.get_or_create(
|
intervention = Intervention.objects.get_or_create(
|
||||||
@ -203,7 +273,10 @@ class Command(BaseKonovaCommand):
|
|||||||
intervention = self._migrate_intervention_geometry(intervention, eiv)
|
intervention = self._migrate_intervention_geometry(intervention, eiv)
|
||||||
intervention = self._migrate_intervention_legal(intervention, eiv)
|
intervention = self._migrate_intervention_legal(intervention, eiv)
|
||||||
intervention = self._migrate_intervention_responsibility(intervention, eiv)
|
intervention = self._migrate_intervention_responsibility(intervention, eiv)
|
||||||
|
intervention = self._migrate_intervention_payment(intervention, eiv)
|
||||||
|
intervention = self._migrate_intervention_documents(intervention, eiv)
|
||||||
|
|
||||||
intervention.save()
|
intervention.save()
|
||||||
num_processed += 1
|
num_processed += 1
|
||||||
|
|
||||||
|
cursor.close()
|
||||||
|
Loading…
Reference in New Issue
Block a user