From 7aa19ea9aaa8e36aa850ddcb3e100e2203c1953d Mon Sep 17 00:00:00 2001 From: sujanadh Date: Fri, 6 Sep 2024 10:29:18 +0545 Subject: [PATCH 1/8] feat: created separate group verification for digitisation form --- osm_fieldwork/update_form.py | 44 +++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/osm_fieldwork/update_form.py b/osm_fieldwork/update_form.py index 75e15574..229f94cd 100644 --- a/osm_fieldwork/update_form.py +++ b/osm_fieldwork/update_form.py @@ -9,7 +9,7 @@ pandas_monkeypatch() -def merge_sheets(mandatory_df, custom_df, digitisation_df): +def merge_sheets(mandatory_df, custom_df, digitisation_df, is_survey_sheet=False): # Remove rows with None in 'name' column if "name" in mandatory_df.columns: mandatory_df = mandatory_df.dropna(subset=["name"]) @@ -33,7 +33,17 @@ def merge_sheets(mandatory_df, custom_df, digitisation_df): mandatory_df_filtered = mandatory_df[~mandatory_df["name"].isin(common_fields)] digitisation_df_filtered = digitisation_df[~digitisation_df["name"].isin(common_fields)] - group_row = pd.DataFrame( + if not is_survey_sheet: + return pd.concat( + [ + custom_common_df, + mandatory_df_filtered, + custom_non_common_df, + digitisation_df_filtered, + ], + ignore_index=True, + ) + survey_group_row = pd.DataFrame( { "type": ["begin group"], "name": ["survey_questions"], @@ -43,16 +53,34 @@ def merge_sheets(mandatory_df, custom_df, digitisation_df): ], # Add the relevant condition to display this group only if "Yes" is selected } ) - - end_group_row = pd.DataFrame({"type": ["end group"], "name": ["end_survey_questions"], "label": ["End Survey Form"]}) + survey_end_group_row = pd.DataFrame({"type": ["end group"], "name": ["end_survey_questions"], "label": ["End Survey Form"]}) + digitisation_group = pd.DataFrame( + { + "type": ["begin group"], + "name": ["verification"], + "label": ["Verification Form"], + "relevant": [ + "${building_exists} = 'yes'" + ], + } + ) + digitisation_end_group = pd.DataFrame({"type": ["end group"], "name": ["end_verification"], "label": ["End Verification Form"]}) # Concatenate: mandatory fields at the top, custom common fields, remaining custom fields, and finally append form fields - merged_df = pd.concat( - [custom_common_df, mandatory_df_filtered, group_row, custom_non_common_df, digitisation_df_filtered, end_group_row], + return pd.concat( + [ + custom_common_df, + mandatory_df_filtered, + survey_group_row, + custom_non_common_df, + survey_end_group_row, + digitisation_group, + digitisation_df_filtered, + digitisation_end_group, + ], ignore_index=True, ) - return merged_df def update_xls_form(custom_form: BytesIO) -> BytesIO: @@ -64,7 +92,7 @@ def update_xls_form(custom_form: BytesIO) -> BytesIO: # Process and merge the 'survey' sheet if present in all forms if "survey" in mandatory_sheets and "survey" in digitisation_sheets and "survey" in custom_sheets: - custom_sheets["survey"] = merge_sheets(mandatory_sheets["survey"], custom_sheets["survey"], digitisation_sheets["survey"]) + custom_sheets["survey"] = merge_sheets(mandatory_sheets["survey"], custom_sheets["survey"], digitisation_sheets["survey"], True) # Process and merge the 'choices' sheet if present in all forms if "choices" in mandatory_sheets and "choices" in digitisation_sheets and "choices" in custom_sheets: From 58b7ba21493707d6e25cd429565592fabb37c7e4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 6 Sep 2024 04:47:03 +0000 Subject: [PATCH 2/8] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- osm_fieldwork/update_form.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/osm_fieldwork/update_form.py b/osm_fieldwork/update_form.py index 229f94cd..b6042dbe 100644 --- a/osm_fieldwork/update_form.py +++ b/osm_fieldwork/update_form.py @@ -59,9 +59,7 @@ def merge_sheets(mandatory_df, custom_df, digitisation_df, is_survey_sheet=False "type": ["begin group"], "name": ["verification"], "label": ["Verification Form"], - "relevant": [ - "${building_exists} = 'yes'" - ], + "relevant": ["${building_exists} = 'yes'"], } ) digitisation_end_group = pd.DataFrame({"type": ["end group"], "name": ["end_verification"], "label": ["End Verification Form"]}) @@ -82,7 +80,6 @@ def merge_sheets(mandatory_df, custom_df, digitisation_df, is_survey_sheet=False ) - def update_xls_form(custom_form: BytesIO) -> BytesIO: custom_sheets = pd.read_excel(custom_form, sheet_name=None, engine="calamine") default_form_path = f"{xlsforms_path}/fmtm/mandatory_fields.xls" @@ -92,7 +89,9 @@ def update_xls_form(custom_form: BytesIO) -> BytesIO: # Process and merge the 'survey' sheet if present in all forms if "survey" in mandatory_sheets and "survey" in digitisation_sheets and "survey" in custom_sheets: - custom_sheets["survey"] = merge_sheets(mandatory_sheets["survey"], custom_sheets["survey"], digitisation_sheets["survey"], True) + custom_sheets["survey"] = merge_sheets( + mandatory_sheets["survey"], custom_sheets["survey"], digitisation_sheets["survey"], True + ) # Process and merge the 'choices' sheet if present in all forms if "choices" in mandatory_sheets and "choices" in digitisation_sheets and "choices" in custom_sheets: From 0b50561a66e4883b9d0399722025d42846de9e80 Mon Sep 17 00:00:00 2001 From: sujanadh Date: Mon, 9 Sep 2024 11:40:45 +0545 Subject: [PATCH 3/8] feat: added free text comment at the end of verification group --- .../xlsforms/fmtm/digitisation_fields.xls | Bin 24064 -> 23040 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/osm_fieldwork/xlsforms/fmtm/digitisation_fields.xls b/osm_fieldwork/xlsforms/fmtm/digitisation_fields.xls index 744c431dfb85dd84c0c88e4444fc597805b0b661..d96333d84e07ae5ef96d43092b566177ce58ae9c 100644 GIT binary patch literal 23040 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 Date: Mon, 9 Sep 2024 13:40:37 +0545 Subject: [PATCH 4/8] feat: updated version to current timestamp in settings --- osm_fieldwork/update_form.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/osm_fieldwork/update_form.py b/osm_fieldwork/update_form.py index b6042dbe..5f814d02 100644 --- a/osm_fieldwork/update_form.py +++ b/osm_fieldwork/update_form.py @@ -1,3 +1,4 @@ +from datetime import datetime from io import BytesIO import pandas as pd @@ -102,6 +103,14 @@ def update_xls_form(custom_form: BytesIO) -> BytesIO: # Append or overwrite the existing entities sheet if "entities" in mandatory_sheets: custom_sheets["entities"] = mandatory_sheets["entities"] + + if "settings" in mandatory_sheets: + custom_sheets["settings"] = mandatory_sheets["settings"] + current_timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') + + # Set the 'version' column to the current timestamp (if 'version' column exists in 'settings') + if "version" in custom_sheets["settings"].columns: + custom_sheets["settings"].loc[:, "version"] = current_timestamp output = BytesIO() with pd.ExcelWriter(output, engine="openpyxl") as writer: From cb6e1729fa7ea1930c2bb5e9f6e209b9e28f4993 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 07:56:03 +0000 Subject: [PATCH 5/8] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- osm_fieldwork/update_form.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osm_fieldwork/update_form.py b/osm_fieldwork/update_form.py index 5f814d02..f6bde943 100644 --- a/osm_fieldwork/update_form.py +++ b/osm_fieldwork/update_form.py @@ -103,11 +103,11 @@ def update_xls_form(custom_form: BytesIO) -> BytesIO: # Append or overwrite the existing entities sheet if "entities" in mandatory_sheets: custom_sheets["entities"] = mandatory_sheets["entities"] - + if "settings" in mandatory_sheets: custom_sheets["settings"] = mandatory_sheets["settings"] - current_timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') - + current_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + # Set the 'version' column to the current timestamp (if 'version' column exists in 'settings') if "version" in custom_sheets["settings"].columns: custom_sheets["settings"].loc[:, "version"] = current_timestamp From 82aec78fc707cc2821e8b68f903dd091535f07c1 Mon Sep 17 00:00:00 2001 From: sujanadh Date: Tue, 10 Sep 2024 23:13:57 +0545 Subject: [PATCH 6/8] feat: create entity for new feature point(geopoint) --- osm_fieldwork/update_form.py | 4 ++-- .../xlsforms/fmtm/mandatory_fields.xls | Bin 26112 -> 17408 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osm_fieldwork/update_form.py b/osm_fieldwork/update_form.py index 5f814d02..0860755a 100644 --- a/osm_fieldwork/update_form.py +++ b/osm_fieldwork/update_form.py @@ -50,7 +50,7 @@ def merge_sheets(mandatory_df, custom_df, digitisation_df, is_survey_sheet=False "name": ["survey_questions"], "label": ["Survey Form"], "relevant": [ - "${building_exists} = 'yes'" + "(${new_feature} = 'yes') or (${building_exists} = 'yes')" ], # Add the relevant condition to display this group only if "Yes" is selected } ) @@ -60,7 +60,7 @@ def merge_sheets(mandatory_df, custom_df, digitisation_df, is_survey_sheet=False "type": ["begin group"], "name": ["verification"], "label": ["Verification Form"], - "relevant": ["${building_exists} = 'yes'"], + "relevant": ["(${new_feature} = 'yes') or (${building_exists} = 'yes')"], } ) digitisation_end_group = pd.DataFrame({"type": ["end group"], "name": ["end_verification"], "label": ["End Verification Form"]}) diff --git a/osm_fieldwork/xlsforms/fmtm/mandatory_fields.xls b/osm_fieldwork/xlsforms/fmtm/mandatory_fields.xls index 6a9678b7210fcf1a9d9572ecc5bd7b9cbba221dc..d297c2a6c7eba2fb65307968ead81a3a2482b77d 100644 GIT binary patch literal 17408 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 From bded129b779804d6f1019dd78a0501fec71afd1d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 17:34:31 +0000 Subject: [PATCH 7/8] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- osm_fieldwork/update_form.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osm_fieldwork/update_form.py b/osm_fieldwork/update_form.py index c896ada8..7b4012dd 100644 --- a/osm_fieldwork/update_form.py +++ b/osm_fieldwork/update_form.py @@ -50,7 +50,7 @@ def merge_sheets(mandatory_df, custom_df, digitisation_df, is_survey_sheet=False "name": ["survey_questions"], "label": ["Survey Form"], "relevant": [ - "(${new_feature} = 'yes') or (${building_exists} = 'yes')" + "(${new_feature} = 'yes') or (${building_exists} = 'yes')" ], # Add the relevant condition to display this group only if "Yes" is selected } ) From b86d64f6488ec5737dffdec18d6b1cadf312faa9 Mon Sep 17 00:00:00 2001 From: Sujan Adhikari Date: Wed, 11 Sep 2024 09:56:06 +0545 Subject: [PATCH 8/8] fix: set the version column type to str --- osm_fieldwork/update_form.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osm_fieldwork/update_form.py b/osm_fieldwork/update_form.py index 7b4012dd..c6a226a0 100644 --- a/osm_fieldwork/update_form.py +++ b/osm_fieldwork/update_form.py @@ -110,6 +110,8 @@ def update_xls_form(custom_form: BytesIO) -> BytesIO: # Set the 'version' column to the current timestamp (if 'version' column exists in 'settings') if "version" in custom_sheets["settings"].columns: + # set column type to str + custom_sheets["settings"]["version"] = custom_sheets["settings"]["version"].astype(str) custom_sheets["settings"].loc[:, "version"] = current_timestamp output = BytesIO()