Fixing broken document migration

* adds changes to document migration to correctly migrate documents
This commit is contained in:
mpeltriaux 2022-11-18 12:41:46 +01:00
parent c7c6eef2e5
commit 022e4a580b
3 changed files with 44 additions and 23 deletions

View File

@ -90,18 +90,22 @@ class BaseMigrater:
doc_comment = doc_result[1] doc_comment = doc_result[1]
doc_date = doc_result[2] doc_date = doc_result[2]
try: try:
with open(doc_path, encoding="latin1") as file: with open(doc_path, "rb") as file:
file = UploadedFile(file) file = UploadedFile(file)
doc_title = "Migrierte Datei" doc_title = "Migrierte Datei"
doc_date = doc_date or "1970-01-01" doc_date = doc_date or "1970-01-01"
doc_exists = document_cls.objects.filter(
instance=instance, doc_file = self.__find_migrated_file_recursive(
title=doc_title, document_cls,
comment=doc_comment, instance,
date_of_creation=doc_date file.name
).exists() )
if doc_exists:
continue if doc_file is not None:
doc_file.delete()
else:
print(f"------ Could not find file, that should have been migrated already. Adding new version anyway: {doc_path}")
doc = document_cls.objects.create( doc = document_cls.objects.create(
title=doc_title, title=doc_title,
comment=doc_comment, comment=doc_comment,
@ -114,6 +118,21 @@ class BaseMigrater:
tmp_cursor.close() tmp_cursor.close()
return instance return instance
def __find_migrated_file_recursive(self, document_cls, instance, file_name):
file_name_tmp = file_name
try:
doc_file = document_cls.objects.get(
instance=instance,
file__icontains=file_name_tmp
)
return doc_file
except ObjectDoesNotExist:
file_name_tmp = file_name_tmp[:len(file_name_tmp) - 1]
if len(file_name_tmp) > 0:
return self.__find_migrated_file_recursive(document_cls, instance, file_name_tmp)
else:
return None
def _migrate_log(self, instance, db_result: tuple): def _migrate_log(self, instance, db_result: tuple):
identifier = f"'{db_result[0]}'" identifier = f"'{db_result[0]}'"
tmp_cursor = self.db_connection.cursor() tmp_cursor = self.db_connection.cursor()

View File

@ -146,6 +146,7 @@ class InterventionMigrater(BaseMigrater):
def migrate(self): def migrate(self):
self.connect_db() self.connect_db()
el = "'EIV-1380625802430'"
cursor = self.db_connection.cursor() cursor = self.db_connection.cursor()
cursor.execute( cursor.execute(
'select ' 'select '
@ -180,7 +181,8 @@ class InterventionMigrater(BaseMigrater):
'where ' 'where '
'om."OKL"=7730085 and ' 'om."OKL"=7730085 and '
'om.archiv=false and ' 'om.archiv=false and '
'om.nicht_vollstaendig=0 ' 'om.nicht_vollstaendig=0 and '
f'om."KENNUNG"={el}'
) )
all_eivs = cursor.fetchall() all_eivs = cursor.fetchall()
@ -196,17 +198,17 @@ class InterventionMigrater(BaseMigrater):
intervention = Intervention.objects.get_or_create( intervention = Intervention.objects.get_or_create(
identifier=eiv[0] identifier=eiv[0]
)[0] )[0]
intervention.title = eiv[1] #intervention.title = eiv[1]
intervention.comment = eiv_comment #intervention.comment = eiv_comment
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_documents(intervention, InterventionDocument, eiv) intervention = self._migrate_documents(intervention, InterventionDocument, eiv)
intervention = self._migrate_log(intervention, eiv) #intervention = self._migrate_log(intervention, eiv)
intervention = self._migrate_revocation(intervention, eiv) #intervention = self._migrate_revocation(intervention, eiv)
intervention.save() intervention.save()
intervention = self._migrate_geometry(intervention, eiv) #intervention = self._migrate_geometry(intervention, eiv)
intervention = self._migrate_intervention_payment(intervention, eiv) #intervention = self._migrate_intervention_payment(intervention, eiv)
intervention.save() intervention.save()
num_processed += 1 num_processed += 1

View File

@ -20,11 +20,11 @@ class Command(BaseKonovaCommand):
try: try:
migraters = [ migraters = [
InterventionMigrater(options), InterventionMigrater(options),
CompensationMigrater(options), #CompensationMigrater(options),
EmaMigrater(options), #EmaMigrater(options),
EcoAccountMigrater(options), #EcoAccountMigrater(options),
InterventionRecordedMigrater(options), #InterventionRecordedMigrater(options),
UserMigrater(options), #UserMigrater(options),
] ]
for migrater in migraters: for migrater in migraters:
migrater.migrate() migrater.migrate()