From c289fb08f1eb9e701e6259a0e1082e51702dd375 Mon Sep 17 00:00:00 2001 From: Ross Scroggs Date: Fri, 1 Dec 2023 18:42:42 -0800 Subject: [PATCH] Update library files --- src/gam/gamlib/glcfg.py | 12 ++++++++++++ src/gam/gamlib/glglobals.py | 3 +++ src/gam/gamlib/glmsgs.py | 1 + 3 files changed, 16 insertions(+) diff --git a/src/gam/gamlib/glcfg.py b/src/gam/gamlib/glcfg.py index 7ecb3572..2aa8c23b 100644 --- a/src/gam/gamlib/glcfg.py +++ b/src/gam/gamlib/glcfg.py @@ -89,6 +89,8 @@ CONFIG_DIR = 'config_dir' CONTACT_MAX_RESULTS = 'contact_max_results' # Column delimiter in CSV input file CSV_INPUT_COLUMN_DELIMITER = 'csv_input_column_delimiter' +# No escape character in CSV input file +CSV_INPUT_NO_ESCAPE_CHAR = 'csv_input_no_escape_char' # Quote character in CSV input file CSV_INPUT_QUOTE_CHAR = 'csv_input_quote_char' # Filter for input column values @@ -105,6 +107,8 @@ CSV_INPUT_ROW_LIMIT = 'csv_input_row_limit' CSV_OUTPUT_CONVERT_CR_NL = 'csv_output_convert_cr_nl' # Column delimiter in CSV output file CSV_OUTPUT_COLUMN_DELIMITER = 'csv_output_column_delimiter' +# No escape character in CSV output file +CSV_OUTPUT_NO_ESCAPE_CHAR = 'csv_output_no_escape_char' # Field list delimiter in CSV output file CSV_OUTPUT_FIELD_DELIMITER = 'csv_output_field_delimiter' # Filter for output column headers @@ -260,6 +264,8 @@ TODRIVE_LOCALE = 'todrive_locale' TODRIVE_NOBROWSER = 'todrive_nobrowser' # Suppress sending email on todrive upload TODRIVE_NOEMAIL = 'todrive_noemail' +# No escape character in CSV output file +TODRIVE_NO_ESCAPE_CHAR = 'todrive_no_escape_char' # ID/Name of parent folder for todrive files TODRIVE_PARENT = 'todrive_parent' # Append timestamp to todrive sheet name @@ -317,6 +323,7 @@ Defaults = { CONFIG_DIR: '', CONTACT_MAX_RESULTS: '100', CSV_INPUT_COLUMN_DELIMITER: ',', + CSV_INPUT_NO_ESCAPE_CHAR: TRUE, CSV_INPUT_QUOTE_CHAR: '\'"\'', CSV_INPUT_ROW_FILTER: '', CSV_INPUT_ROW_FILTER_MODE: 'allmatch', @@ -325,6 +332,7 @@ Defaults = { CSV_INPUT_ROW_LIMIT: '0', CSV_OUTPUT_COLUMN_DELIMITER: ',', CSV_OUTPUT_CONVERT_CR_NL: FALSE, + CSV_OUTPUT_NO_ESCAPE_CHAR: FALSE, CSV_OUTPUT_FIELD_DELIMITER: "' '", CSV_OUTPUT_HEADER_FILTER: '', CSV_OUTPUT_HEADER_DROP_FILTER: '', @@ -402,6 +410,7 @@ Defaults = { TODRIVE_LOCALE: '', TODRIVE_NOBROWSER: '', TODRIVE_NOEMAIL: '', + TODRIVE_NO_ESCAPE_CHAR: TRUE, TODRIVE_PARENT: 'root', TODRIVE_SHEET_TIMESTAMP: 'copy', # copy from TODRIVE_TIMESTAMP TODRIVE_SHEET_TIMEFORMAT: 'copy', # copy from TODRIVE_TIMEFORMAT @@ -469,6 +478,7 @@ VAR_INFO = { CONFIG_DIR: {VAR_TYPE: TYPE_DIRECTORY, VAR_ENVVAR: 'GAMUSERCONFIGDIR'}, CONTACT_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 10000)}, CSV_INPUT_COLUMN_DELIMITER: {VAR_TYPE: TYPE_CHARACTER}, + CSV_INPUT_NO_ESCAPE_CHAR: {VAR_TYPE: TYPE_BOOLEAN}, CSV_INPUT_QUOTE_CHAR: {VAR_TYPE: TYPE_CHARACTER}, CSV_INPUT_ROW_FILTER: {VAR_TYPE: TYPE_ROWFILTER}, CSV_INPUT_ROW_FILTER_MODE: {VAR_TYPE: TYPE_CHOICE, VAR_CHOICES: {'allmatch': True, 'anymatch': False}}, @@ -477,6 +487,7 @@ VAR_INFO = { CSV_INPUT_ROW_LIMIT: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (0, None)}, CSV_OUTPUT_COLUMN_DELIMITER: {VAR_TYPE: TYPE_CHARACTER}, CSV_OUTPUT_CONVERT_CR_NL: {VAR_TYPE: TYPE_BOOLEAN}, + CSV_OUTPUT_NO_ESCAPE_CHAR: {VAR_TYPE: TYPE_BOOLEAN}, CSV_OUTPUT_FIELD_DELIMITER: {VAR_TYPE: TYPE_CHARACTER}, CSV_OUTPUT_HEADER_FILTER: {VAR_TYPE: TYPE_HEADERFILTER}, CSV_OUTPUT_HEADER_DROP_FILTER: {VAR_TYPE: TYPE_HEADERFILTER}, @@ -554,6 +565,7 @@ VAR_INFO = { TODRIVE_LOCALE: {VAR_TYPE: TYPE_LOCALE}, TODRIVE_NOBROWSER: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'nobrowser.txt', VAR_SFFT: (FALSE, TRUE)}, TODRIVE_NOEMAIL: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'notdemail.txt', VAR_SFFT: (FALSE, TRUE)}, + TODRIVE_NO_ESCAPE_CHAR: {VAR_TYPE: TYPE_BOOLEAN}, TODRIVE_PARENT: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)}, TODRIVE_SHEET_TIMESTAMP: {VAR_TYPE: TYPE_BOOLEAN}, TODRIVE_SHEET_TIMEFORMAT: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)}, diff --git a/src/gam/gamlib/glglobals.py b/src/gam/gamlib/glglobals.py index 654ead41..b33d54ab 100644 --- a/src/gam/gamlib/glglobals.py +++ b/src/gam/gamlib/glglobals.py @@ -65,6 +65,8 @@ CSV_OUTPUT_HEADER_DROP_FILTER = 'cohd' CSV_OUTPUT_HEADER_FILTER = 'cohf' # Force output column headers CSV_OUTPUT_HEADER_FORCE = 'cofh' +# No escape character in CSV output file +CSV_OUTPUT_NO_ESCAPE_CHAR = 'cone' # Quote character in CSV output file CSV_OUTPUT_QUOTE_CHAR = 'coqc' # Filter for output column drop values @@ -227,6 +229,7 @@ Globals = { CSV_OUTPUT_HEADER_DROP_FILTER: [], CSV_OUTPUT_HEADER_FILTER: [], CSV_OUTPUT_HEADER_FORCE: [], + CSV_OUTPUT_NO_ESCAPE_CHAR: None, CSV_OUTPUT_QUOTE_CHAR: None, CSV_OUTPUT_ROW_DROP_FILTER: [], CSV_OUTPUT_ROW_DROP_FILTER_MODE: False, diff --git a/src/gam/gamlib/glmsgs.py b/src/gam/gamlib/glmsgs.py index f9e3af61..5d462de2 100644 --- a/src/gam/gamlib/glmsgs.py +++ b/src/gam/gamlib/glmsgs.py @@ -422,6 +422,7 @@ RESOURCE_CAPACITY_FLOOR_REQUIRED = 'Options "capacity " ( > 0) a RESOURCE_FLOOR_REQUIRED = 'Option "floor " required' RESULTS_TOO_LARGE_FOR_GOOGLE_SPREADSHEET = 'Results are too large for Google Spreadsheets. Uploading as a regular CSV file.' RETRIES_EXHAUSTED = 'Retries {0} exhausted' +RETRYING_GOOGLE_SHEET_EXPORT_SLEEPING = 'Retrying Google Sheet export {0}/{1}. Sleeping {2} seconds\n' ROLE_MUST_BE_ORGANIZER = 'Role must be organizer' ROLE_NOT_IN_SET = 'Role not in set: {0})' SCHEMA_WOULD_HAVE_NO_FIELDS = '{0} would have no {1}'