Fixes + enhancements

* minor fixes and enhancements
This commit is contained in:
mpeltriaux 2022-08-01 14:07:48 +02:00
parent fbb7b66249
commit 492110882b
3 changed files with 17 additions and 11 deletions

View File

@ -10,6 +10,7 @@ from django.utils.timezone import make_aware
from konova.models import Geometry from konova.models import Geometry
from konova.settings import DEFAULT_GROUP from konova.settings import DEFAULT_GROUP
from user.models import User, UserActionLogEntry, UserAction, Team from user.models import User, UserActionLogEntry, UserAction, Team
from konova.tasks import celery_update_parcels
class BaseMigrater: class BaseMigrater:
@ -62,7 +63,7 @@ class BaseMigrater:
geom = instance.geometry or Geometry() geom = instance.geometry or Geometry()
geom.geom = db_result_geom geom.geom = db_result_geom
geom.save() geom.save()
# celery_update_parcels.delay(geom.id) celery_update_parcels.delay(geom.id)
instance.geometry = geom instance.geometry = geom
return instance return instance
@ -143,9 +144,10 @@ class BaseMigrater:
) )
fetch_results = tmp_cursor.fetchall() fetch_results = tmp_cursor.fetchall()
instance.log.all().delete() migrated_identifier = "(migriert)"
instance.log.filter(comment__contains=migrated_identifier).delete()
for result in fetch_results: for result in fetch_results:
comment = result[0] comment = f"{result[0]} {migrated_identifier}"
timestamp = make_aware(result[1]) timestamp = make_aware(result[1])
user_name = result[2] user_name = result[2]
user = self._get_migrate_user(user_name) user = self._get_migrate_user(user_name)
@ -172,11 +174,11 @@ class BaseMigrater:
first_entry = instance.log.order_by("timestamp").first() first_entry = instance.log.order_by("timestamp").first()
last_entry = instance.log.order_by("-timestamp").first() last_entry = instance.log.order_by("-timestamp").first()
if first_entry is not None: if first_entry is not None and instance.created is None:
instance.created = UserActionLogEntry.get_created_action(first_entry.user) instance.created = UserActionLogEntry.get_created_action(first_entry.user)
instance.created.timestamp = first_entry.timestamp instance.created.timestamp = first_entry.timestamp
instance.created.save() instance.created.save()
if last_entry is not None: if last_entry is not None and instance.modified != last_entry:
instance.modified = last_entry instance.modified = last_entry
tmp_cursor.close() tmp_cursor.close()

View File

@ -1,6 +1,6 @@
import datetime import datetime
from django.contrib.auth.models import Group from django.contrib.gis.gdal import GDALException
from django.contrib.gis.geos import MultiPolygon, Polygon from django.contrib.gis.geos import MultiPolygon, Polygon
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.db import transaction from django.db import transaction
@ -13,8 +13,8 @@ from compensation.utils.quality import EcoAccountQualityChecker
from intervention.models import Responsibility, Handler, Intervention, Legal from intervention.models import Responsibility, Handler, Intervention, Legal
from konova.management.commands.kspMigrater.compensation_migrater import CompensationMigrater from konova.management.commands.kspMigrater.compensation_migrater import CompensationMigrater
from konova.models import Geometry from konova.models import Geometry
from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP, DEFAULT_SRID from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP
from user.models import User, UserActionLogEntry from user.models import UserActionLogEntry
class EcoAccountMigrater(CompensationMigrater): class EcoAccountMigrater(CompensationMigrater):
@ -104,7 +104,7 @@ class EcoAccountMigrater(CompensationMigrater):
if db_result_geom is not None: if db_result_geom is not None:
deductions_db_result_geom = MultiPolygon.from_ewkt(deduction_db_results[0][0]) deductions_db_result_geom = MultiPolygon.from_ewkt(deduction_db_results[0][0])
else: else:
deductions_db_result_geom = MultiPolygon(srid=DEFAULT_SRID) deductions_db_result_geom = MultiPolygon(srid=DEFAULT_SRID_RLP)
tmp_cursor.execute( tmp_cursor.execute(
'select ' 'select '
@ -121,7 +121,7 @@ class EcoAccountMigrater(CompensationMigrater):
db_result_geom = account_db_result_geom.union(deductions_db_result_geom) db_result_geom = account_db_result_geom.union(deductions_db_result_geom)
if isinstance(db_result_geom, Polygon): if isinstance(db_result_geom, Polygon):
db_result_geom = MultiPolygon(db_result_geom, srid=DEFAULT_SRID) db_result_geom = MultiPolygon(db_result_geom, srid=DEFAULT_SRID_RLP)
instance.geometry = instance.geometry or Geometry() instance.geometry = instance.geometry or Geometry()
try: try:
# Calculate area by transforming # Calculate area by transforming
@ -146,6 +146,8 @@ class EcoAccountMigrater(CompensationMigrater):
instance.geometry.save() instance.geometry.save()
except TypeError: except TypeError:
raise TypeError(f"{identifier}, {db_result_geom}") raise TypeError(f"{identifier}, {db_result_geom}")
except GDALException as e:
raise GDALException(f"{identifier}, {e}")
tmp_cursor.close() tmp_cursor.close()
return instance return instance

View File

@ -1,5 +1,5 @@
from django.contrib.auth.models import Group from django.contrib.auth.models import Group
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
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
@ -84,6 +84,8 @@ class UserMigrater(BaseMigrater):
except ObjectDoesNotExist: except ObjectDoesNotExist:
# organisation code might not be valid anymore # organisation code might not be valid anymore
continue continue
except MultipleObjectsReturned as e:
raise MultipleObjectsReturned(f"{_org}: {e}")
if company_team is not None and len(user_teams) == 0: if company_team is not None and len(user_teams) == 0:
# Only team is the company team # Only team is the company team
company_team.users.add(user) company_team.users.add(user)