From 6d06e08430c05dbf485e636b5dff3fd19addd8b1 Mon Sep 17 00:00:00 2001 From: hendraet Date: Thu, 30 Apr 2020 21:50:12 +0200 Subject: [PATCH 1/5] First untested implementation of old revision restoration --- _1327/documents/utils.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/_1327/documents/utils.py b/_1327/documents/utils.py index c95fef59..64e0c827 100644 --- a/_1327/documents/utils.py +++ b/_1327/documents/utils.py @@ -148,7 +148,16 @@ def prepare_versions(document): # prepare data for the template version_list = [] for id, version in enumerate(versions): - version_list.append((id, version, json.dumps(version.field_dict['text_de']).strip('"'), json.dumps(version.field_dict['text_en']).strip('"'))) + text_de = version.field_dict['text_de'] + text_en = version.field_dict['text_en'] + + if text_de == "" and text_en == "": # reversions are old and text was formerly saved in "text" field + base_document = Version.objects.get_for_object(document.document_ptr).reverse()[id] + parsed_data = json.loads(base_document.serialized_data) + text_de = parsed_data[0]["fields"]["text"] + + # TODO: find out why there is a json.dumps here + version_list.append((id, version, json.dumps(text_de).strip('"'), json.dumps(text_en).strip('"'))) return version_list From 0cd669268b0b1be742d9328db61360fd88bab4d5 Mon Sep 17 00:00:00 2001 From: hendraet Date: Thu, 7 May 2020 21:11:56 +0200 Subject: [PATCH 2/5] revert python changes --- _1327/documents/utils.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/_1327/documents/utils.py b/_1327/documents/utils.py index 64e0c827..c95fef59 100644 --- a/_1327/documents/utils.py +++ b/_1327/documents/utils.py @@ -148,16 +148,7 @@ def prepare_versions(document): # prepare data for the template version_list = [] for id, version in enumerate(versions): - text_de = version.field_dict['text_de'] - text_en = version.field_dict['text_en'] - - if text_de == "" and text_en == "": # reversions are old and text was formerly saved in "text" field - base_document = Version.objects.get_for_object(document.document_ptr).reverse()[id] - parsed_data = json.loads(base_document.serialized_data) - text_de = parsed_data[0]["fields"]["text"] - - # TODO: find out why there is a json.dumps here - version_list.append((id, version, json.dumps(text_de).strip('"'), json.dumps(text_en).strip('"'))) + version_list.append((id, version, json.dumps(version.field_dict['text_de']).strip('"'), json.dumps(version.field_dict['text_en']).strip('"'))) return version_list From 5303ef2d1983c6a13c4672fa0981b6c67c0e3331 Mon Sep 17 00:00:00 2001 From: hendraet Date: Thu, 30 Apr 2020 21:50:12 +0200 Subject: [PATCH 3/5] First untested implementation of old revision restoration --- _1327/documents/utils.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/_1327/documents/utils.py b/_1327/documents/utils.py index c95fef59..64e0c827 100644 --- a/_1327/documents/utils.py +++ b/_1327/documents/utils.py @@ -148,7 +148,16 @@ def prepare_versions(document): # prepare data for the template version_list = [] for id, version in enumerate(versions): - version_list.append((id, version, json.dumps(version.field_dict['text_de']).strip('"'), json.dumps(version.field_dict['text_en']).strip('"'))) + text_de = version.field_dict['text_de'] + text_en = version.field_dict['text_en'] + + if text_de == "" and text_en == "": # reversions are old and text was formerly saved in "text" field + base_document = Version.objects.get_for_object(document.document_ptr).reverse()[id] + parsed_data = json.loads(base_document.serialized_data) + text_de = parsed_data[0]["fields"]["text"] + + # TODO: find out why there is a json.dumps here + version_list.append((id, version, json.dumps(text_de).strip('"'), json.dumps(text_en).strip('"'))) return version_list From 738890c2cf74318fb566e25a6bf411959ddb19ee Mon Sep 17 00:00:00 2001 From: hendraet Date: Thu, 7 May 2020 21:11:56 +0200 Subject: [PATCH 4/5] revert python changes --- _1327/documents/utils.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/_1327/documents/utils.py b/_1327/documents/utils.py index 64e0c827..c95fef59 100644 --- a/_1327/documents/utils.py +++ b/_1327/documents/utils.py @@ -148,16 +148,7 @@ def prepare_versions(document): # prepare data for the template version_list = [] for id, version in enumerate(versions): - text_de = version.field_dict['text_de'] - text_en = version.field_dict['text_en'] - - if text_de == "" and text_en == "": # reversions are old and text was formerly saved in "text" field - base_document = Version.objects.get_for_object(document.document_ptr).reverse()[id] - parsed_data = json.loads(base_document.serialized_data) - text_de = parsed_data[0]["fields"]["text"] - - # TODO: find out why there is a json.dumps here - version_list.append((id, version, json.dumps(text_de).strip('"'), json.dumps(text_en).strip('"'))) + version_list.append((id, version, json.dumps(version.field_dict['text_de']).strip('"'), json.dumps(version.field_dict['text_en']).strip('"'))) return version_list From fbe787a2e959526d57faeb467e80fcfe5ee6f644 Mon Sep 17 00:00:00 2001 From: hendraet Date: Mon, 6 Jul 2020 17:22:47 +0200 Subject: [PATCH 5/5] Adds prototype for migration script --- migrate.sql | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 migrate.sql diff --git a/migrate.sql b/migrate.sql new file mode 100644 index 00000000..17355312 --- /dev/null +++ b/migrate.sql @@ -0,0 +1,37 @@ +UPDATE + reversion_version +SET + serialized_data = REPLACE ( + serialized_data, + '"url_title":', + '"title_en": "", "url_title":' + ) +WHERE serialized_data LIKE '%"title":%'; + +UPDATE + reversion_version +SET + serialized_data = REPLACE ( + serialized_data, + '"hash_value":', + '"text_en": "", "hash_value":' + ) +WHERE serialized_data LIKE '%"title":%'; + +UPDATE + reversion_version +SET + serialized_data = REPLACE ( + serialized_data, + '"title":', + '"title_de":' + ); + +UPDATE + reversion_version +SET + serialized_data = REPLACE ( + serialized_data, + '"text":', + '"text_de":' + );