From 007a378f2b78e7b59b8c6e93793be03383eb1e92 Mon Sep 17 00:00:00 2001 From: Ross Scroggs Date: Sat, 11 Apr 2020 14:07:45 -0700 Subject: [PATCH] Add GAM_CSV_HEADER_DROP_FILTER (#1158) It may be simpler to list headers you don't want that headers you do want --- src/display.py | 13 ++++++++----- src/gam.py | 1 + src/var.py | 8 ++++++-- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/display.py b/src/display.py index a6ffbe2f..0d7f2078 100644 --- a/src/display.py +++ b/src/display.py @@ -130,8 +130,8 @@ def write_csv_file(csvRows, titles, list_type, todrive): return False return rowBoolean == filterBoolean - def headerFilterMatch(title): - for filterStr in GC_Values[GC_CSV_HEADER_FILTER]: + def headerFilterMatch(filters, title): + for filterStr in filters: if filterStr.match(title): return True return False @@ -151,10 +151,13 @@ def write_csv_file(csvRows, titles, list_type, todrive): csvRows = [row for row in csvRows if rowCountFilterMatch(row.get(column, 0), filterVal[1], filterVal[2])] else: #boolean csvRows = [row for row in csvRows if rowBooleanFilterMatch(row.get(column, False), filterVal[1])] - if GC_Values[GC_CSV_HEADER_FILTER]: - titles = [t for t in titles if headerFilterMatch(t)] + if GC_Values[GC_CSV_HEADER_FILTER] or GC_Values[GC_CSV_HEADER_DROP_FILTER]: + if GC_Values[GC_CSV_HEADER_DROP_FILTER]: + titles = [t for t in titles if not headerFilterMatch(GC_Values[GC_CSV_HEADER_DROP_FILTER], t)] + if GC_Values[GC_CSV_HEADER_FILTER]: + titles = [t for t in titles if headerFilterMatch(GC_Values[GC_CSV_HEADER_FILTER], t)] if not titles: - controlflow.system_error_exit(3, 'No columns selected with GAM_CSV_HEADER_FILTER\n') + controlflow.system_error_exit(3, 'No columns selected with GAM_CSV_HEADER_FILTER and GAM_CSV_HEADER_DROP_FILTER\n') return csv.register_dialect('nixstdout', lineterminator='\n') if todrive: diff --git a/src/gam.py b/src/gam.py index b7200e62..db76eef2 100755 --- a/src/gam.py +++ b/src/gam.py @@ -431,6 +431,7 @@ def SetGlobalVariables(): _getOldEnvVar(GC_AUTO_BATCH_MIN, 'GAM_AUTOBATCH') _getOldEnvVar(GC_BATCH_SIZE, 'GAM_BATCH_SIZE') _getOldEnvVar(GC_CSV_HEADER_FILTER, 'GAM_CSV_HEADER_FILTER') + _getOldEnvVar(GC_CSV_HEADER_DROP_FILTER, 'GAM_CSV_HEADER_DROP_FILTER') _getOldEnvVar(GC_CSV_ROW_FILTER, 'GAM_CSV_ROW_FILTER') _getOldEnvVar(GC_TLS_MIN_VERSION, 'GAM_TLS_MIN_VERSION') _getOldEnvVar(GC_TLS_MAX_VERSION, 'GAM_TLS_MAX_VERSION') diff --git a/src/var.py b/src/var.py index 772f5cb6..09ea0742 100644 --- a/src/var.py +++ b/src/var.py @@ -11,8 +11,8 @@ gam_license = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)' GAM_URL = 'https://git.io/gam' GAM_INFO = (f'GAM {gam_version} - {GAM_URL} / {gam_author} / ' - f'Python {platform.python_version()} {sys.version_info.releaselevel} / ' - f'{platform.platform()} {platform.machine()}') + f'Python {platform.python_version()} {sys.version_info.releaselevel} / ' + f'{platform.platform()} {platform.machine()}') GAM_RELEASES = 'https://github.com/jay0lee/GAM/releases' GAM_WIKI = 'https://github.com/jay0lee/GAM/wiki' @@ -843,6 +843,8 @@ GC_SHOW_GETTINGS = 'show_gettings' GC_SITE_DIR = 'site_dir' # CSV Columns GAM should show on CSV output GC_CSV_HEADER_FILTER = 'csv_header_filter' +# CSV Columns GAM should not show on CSV output +GC_CSV_HEADER_DROP_FILTER = 'csv_header_drop_filter' # CSV Rows GAM should filter GC_CSV_ROW_FILTER = 'csv_row_filter' # Minimum TLS Version required for HTTPS connections @@ -878,6 +880,7 @@ GC_Defaults = { GC_SHOW_GETTINGS: True, GC_SITE_DIR: '', GC_CSV_HEADER_FILTER: '', + GC_CSV_HEADER_DROP_FILTER: '', GC_CSV_ROW_FILTER: '', GC_TLS_MIN_VERSION: tls_min, GC_TLS_MAX_VERSION: None, @@ -925,6 +928,7 @@ GC_VAR_INFO = { GC_SHOW_GETTINGS: {GC_VAR_TYPE: GC_TYPE_BOOLEAN}, GC_SITE_DIR: {GC_VAR_TYPE: GC_TYPE_DIRECTORY}, GC_CSV_HEADER_FILTER: {GC_VAR_TYPE: GC_TYPE_HEADERFILTER}, + GC_CSV_HEADER_DROP_FILTER: {GC_VAR_TYPE: GC_TYPE_HEADERFILTER}, GC_CSV_ROW_FILTER: {GC_VAR_TYPE: GC_TYPE_ROWFILTER}, GC_TLS_MIN_VERSION: {GC_VAR_TYPE: GC_TYPE_STRING}, GC_TLS_MAX_VERSION: {GC_VAR_TYPE: GC_TYPE_STRING},