gam7 7.5.14__tar.gz → 7.5.16__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of gam7 might be problematic. Click here for more details.
- {gam7-7.5.14 → gam7-7.5.16}/PKG-INFO +1 -1
- {gam7-7.5.14 → gam7-7.5.16}/src/GamCommands.txt +3 -3
- {gam7-7.5.14 → gam7-7.5.16}/src/GamUpdate.txt +18 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/__init__.py +28 -4
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/glglobals.py +3 -0
- {gam7-7.5.14 → gam7-7.5.16}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/.github/ISSUE_TEMPLATE.txt +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/.github/actions/creds.tar.xz.gpg +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/.github/actions/decrypt.sh +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/.github/actions/entitlements.plist +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/.github/actions/package_exclusions.txt +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/.github/stale.yml +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/.github/workflows/build.yml +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/.github/workflows/codeql-analysis.yml +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/.github/workflows/get-cacerts.yml +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/.github/workflows/pypi.yml +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/.pre-commit-config.yaml +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/LICENSE +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/README.md +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/pyproject.toml +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/.gitignore +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/LICENSE +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/cacerts.pem +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/callgam.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/__main__.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/atom/__init__.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/atom/auth.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/atom/client.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/atom/core.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/atom/data.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/atom/http.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/atom/http_core.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/atom/http_interface.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/atom/mock_http.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/atom/mock_http_core.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/atom/mock_service.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/atom/service.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/atom/token_store.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/atom/url.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/cacerts.pem +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/cbcm-v1.1beta1.json +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/contactdelegation-v1.json +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/datastudio-v1.json +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/__init__.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/glaction.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/glapi.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/glcfg.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/glclargs.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/glentity.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/glgapi.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/glgdata.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/glindent.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/glmsgs.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/glskus.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/gluprop.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/glverlibs.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gamlib/yubikey.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gdata/__init__.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gdata/alt/__init__.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gdata/alt/app_engine.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gdata/alt/appengine.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gdata/apps/__init__.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gdata/apps/audit/__init__.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gdata/apps/audit/service.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gdata/apps/contacts/__init__.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gdata/apps/contacts/service.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gdata/apps/service.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gdata/service.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/gdata/urlfetch.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/__init__.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/_auth.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/_helpers.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/channel.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/discovery.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/errors.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/http.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/mimeparse.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/model.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/schema.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/googleapiclient/version.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/iso8601/__init__.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/iso8601/iso8601.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/meet-v2beta.json +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/serviceaccountlookup-v1.json +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam/six.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam-install.sh +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam-setup.bat +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam.exe.manifest +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam.spec +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/gam.wxs +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/license.rtf +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/requirements-dev.txt +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/requirements.txt +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/setup.cfg +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/setup.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/tools/a_atleast_b.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/tools/gen-wix-xml-filelist.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/tools/mkGamRef.py +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/tools/openssl.props +0 -0
- {gam7-7.5.14 → gam7-7.5.16}/src/version_info.txt.in +0 -0
|
@@ -102,7 +102,7 @@ If an item contains spaces, it should be surrounded by ".
|
|
|
102
102
|
banana|basil|blueberry|flamingo|graphite|grape|
|
|
103
103
|
lavender|peacock|sage|tangerine|tomato
|
|
104
104
|
<FileFormat> ::=
|
|
105
|
-
csv|doc|dot|docx|dotx|epub|html|jpeg|jpg|mht|odp|ods|odt|
|
|
105
|
+
csv|doc|dot|docx|dotx|epub|html|jpeg|jpg|json|mht|odp|ods|odt|
|
|
106
106
|
pdf|png|ppt|pot|potx|pptx|rtf|svg|tsv|txt|xls|xlt|xlsx|xltx|zip|
|
|
107
107
|
ms|microsoft|openoffice|
|
|
108
108
|
<LabelColorHex> ::=
|
|
@@ -1276,8 +1276,8 @@ If the pattern {{Section}} appears in <FileName>, it will be replaced with the n
|
|
|
1276
1276
|
For redirect csv, the optional arguments must appear in the order shown.
|
|
1277
1277
|
<Redirect> ::=
|
|
1278
1278
|
redirect csv <FileName> [multiprocess] [append] [noheader] [charset <Charset>]
|
|
1279
|
-
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
|
1280
|
-
[sortheaders <StringList>] [timestampcolumn <String>]
|
|
1279
|
+
[columndelimiter <Character>] [noescapechar [<Boolean>]] [quotechar <Character>]
|
|
1280
|
+
[sortheaders <StringList>] [timestampcolumn <String>] [transpose [<Bopolean>]]
|
|
1281
1281
|
[todrive <ToDriveAttribute>*] |
|
|
1282
1282
|
redirect stdout <FileName> [multiprocess] [append] |
|
|
1283
1283
|
redirect stdout null [multiprocess] |
|
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
7.05.16
|
|
2
|
+
|
|
3
|
+
Added option `transpose [<Boolean>]` to `redirect csv` that causes
|
|
4
|
+
GAM to transpose CSV output rows and columns. This will most useful
|
|
5
|
+
when a `countsonly` option is used in a `print` or `report` command.
|
|
6
|
+
|
|
7
|
+
7.05.15
|
|
8
|
+
|
|
9
|
+
Updated `gam <UserTypeEntity> get drivefile` and `gam <UserTypeEntity> create drivefile`
|
|
10
|
+
to allow downloading and uploading of Google Apps Scripts.
|
|
11
|
+
```
|
|
12
|
+
$ gam user user1@domain.com get drivefile 1ZY-YkS3E0OKipALra_XzfIh9cvxoILSbb8TRdHBFCpyB_mXI_J8FmjHv format json
|
|
13
|
+
User: user1@domain.com, Download 1 Drive File
|
|
14
|
+
User: user1@domain.com, Drive File: Test Project, Downloaded to: /Users/gamteam/GamWork/Test Project.json, Type: Google Doc
|
|
15
|
+
$ gam user user2@domain.com create drivefile localfile "Test Project.json" mimetype application/vnd.google-apps.script+json drivefilename "Test Project"
|
|
16
|
+
User: user2@domain.com, Drive File: Test Project(1Ok_svw55VTreZ5CzcViJDLfEzVRi-Un8D9eG6I5pIeVyRl2YsmNiy3C_), Created with content from: Test Project.json
|
|
17
|
+
```
|
|
18
|
+
|
|
1
19
|
7.05.14
|
|
2
20
|
|
|
3
21
|
Added the following License SKU:
|
|
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
|
|
|
25
25
|
"""
|
|
26
26
|
|
|
27
27
|
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
|
|
28
|
-
__version__ = '7.05.
|
|
28
|
+
__version__ = '7.05.16'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -262,6 +262,7 @@ MIMETYPE_GA_JAM = f'{APPLICATION_VND_GOOGLE_APPS}jam'
|
|
|
262
262
|
MIMETYPE_GA_MAP = f'{APPLICATION_VND_GOOGLE_APPS}map'
|
|
263
263
|
MIMETYPE_GA_PRESENTATION = f'{APPLICATION_VND_GOOGLE_APPS}presentation'
|
|
264
264
|
MIMETYPE_GA_SCRIPT = f'{APPLICATION_VND_GOOGLE_APPS}script'
|
|
265
|
+
MIMETYPE_GA_SCRIPT_JSON = f'{APPLICATION_VND_GOOGLE_APPS}script+json'
|
|
265
266
|
MIMETYPE_GA_SHORTCUT = f'{APPLICATION_VND_GOOGLE_APPS}shortcut'
|
|
266
267
|
MIMETYPE_GA_3P_SHORTCUT = f'{APPLICATION_VND_GOOGLE_APPS}drive-sdk'
|
|
267
268
|
MIMETYPE_GA_SITE = f'{APPLICATION_VND_GOOGLE_APPS}site'
|
|
@@ -4112,8 +4113,8 @@ def SetGlobalVariables():
|
|
|
4112
4113
|
if checkArgumentPresent(Cmd.MULTIPROCESSEXIT_CMD):
|
|
4113
4114
|
_setMultiprocessExit()
|
|
4114
4115
|
# redirect csv <FileName> [multiprocess] [append] [noheader] [charset <CharSet>]
|
|
4115
|
-
# [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]]
|
|
4116
|
-
# [sortheaders <StringList>] [timestampcolumn <String>]
|
|
4116
|
+
# [columndelimiter <Character>] [noescapechar [<Boolean>]] [quotechar <Character>]]
|
|
4117
|
+
# [sortheaders <StringList>] [timestampcolumn <String>] [transpose [<Boolean>]]
|
|
4117
4118
|
# [todrive <ToDriveAttribute>*]
|
|
4118
4119
|
# redirect stdout <FileName> [multiprocess] [append]
|
|
4119
4120
|
# redirect stdout null
|
|
@@ -4138,6 +4139,8 @@ def SetGlobalVariables():
|
|
|
4138
4139
|
GM.Globals[GM.CSV_OUTPUT_SORT_HEADERS] = GC.Values[GC.CSV_OUTPUT_SORT_HEADERS] = getString(Cmd.OB_STRING_LIST, minLen=0).replace(',', ' ').split()
|
|
4139
4140
|
if checkArgumentPresent('timestampcolumn'):
|
|
4140
4141
|
GM.Globals[GM.CSV_OUTPUT_TIMESTAMP_COLUMN] = GC.Values[GC.CSV_OUTPUT_TIMESTAMP_COLUMN] = getString(Cmd.OB_STRING, minLen=0)
|
|
4142
|
+
if checkArgumentPresent('transpose'):
|
|
4143
|
+
GM.Globals[GM.CSV_OUTPUT_TRANSPOSE] = getBoolean()
|
|
4141
4144
|
_setCSVFile(filename, mode, encoding, writeHeader, multi)
|
|
4142
4145
|
GM.Globals[GM.CSVFILE][GM.REDIRECT_QUEUE_CSVPF] = CSVPrintFile()
|
|
4143
4146
|
if checkArgumentPresent('todrive'):
|
|
@@ -4446,7 +4449,7 @@ def handleOAuthTokenError(e, softErrors, displayError=False, i=0, count=0):
|
|
|
4446
4449
|
if not GM.Globals[GM.CURRENT_SVCACCT_USER]:
|
|
4447
4450
|
ClientAPIAccessDeniedExit()
|
|
4448
4451
|
if softErrors:
|
|
4449
|
-
|
|
4452
|
+
entityActionFailedWarning([Ent.USER, GM.Globals[GM.CURRENT_SVCACCT_USER], Ent.USER, None], errMsg, i, count)
|
|
4450
4453
|
return None
|
|
4451
4454
|
systemErrorExit(SERVICE_NOT_APPLICABLE_RC, Msg.SERVICE_NOT_APPLICABLE_THIS_ADDRESS.format(GM.Globals[GM.CURRENT_SVCACCT_USER]))
|
|
4452
4455
|
if errMsg in API.OAUTH2_UNAUTHORIZED_ERRORS:
|
|
@@ -7793,6 +7796,7 @@ class CSVPrintFile():
|
|
|
7793
7796
|
def __init__(self, titles=None, sortTitles=None, indexedTitles=None):
|
|
7794
7797
|
self.rows = []
|
|
7795
7798
|
self.rowCount = 0
|
|
7799
|
+
self.outputTranspose = GM.Globals[GM.CSV_OUTPUT_TRANSPOSE]
|
|
7796
7800
|
self.todrive = GM.Globals[GM.CSV_TODRIVE]
|
|
7797
7801
|
self.titlesSet = set()
|
|
7798
7802
|
self.titlesList = []
|
|
@@ -8992,6 +8996,22 @@ class CSVPrintFile():
|
|
|
8992
8996
|
self.JSONtitlesList = self.orderHeaders(self.JSONtitlesList)
|
|
8993
8997
|
titlesList = self.JSONtitlesList
|
|
8994
8998
|
normalizeSortHeaders()
|
|
8999
|
+
if self.outputTranspose:
|
|
9000
|
+
newRows = []
|
|
9001
|
+
pivotKey = titlesList[0]
|
|
9002
|
+
newTitlesList = [pivotKey]
|
|
9003
|
+
newTitlesSet = set(newTitlesList)
|
|
9004
|
+
for title in titlesList[1:]:
|
|
9005
|
+
newRow = {pivotKey: title}
|
|
9006
|
+
for row in self.rows:
|
|
9007
|
+
pivotValue = row[pivotKey]
|
|
9008
|
+
if pivotValue not in newTitlesSet:
|
|
9009
|
+
newTitlesSet.add(pivotValue)
|
|
9010
|
+
newTitlesList.append(pivotValue)
|
|
9011
|
+
newRow[pivotValue] = row.get(title)
|
|
9012
|
+
newRows.append(newRow)
|
|
9013
|
+
titlesList = newTitlesList
|
|
9014
|
+
self.rows = newRows
|
|
8995
9015
|
if (not self.todrive) or self.todrive['localcopy']:
|
|
8996
9016
|
if GM.Globals[GM.CSVFILE][GM.REDIRECT_NAME] == '-':
|
|
8997
9017
|
if GM.Globals[GM.STDOUT][GM.REDIRECT_MULTI_FD]:
|
|
@@ -57402,6 +57422,8 @@ def createDriveFile(users):
|
|
|
57402
57422
|
if parameters[DFA_LOCALFILEPATH]:
|
|
57403
57423
|
if parameters[DFA_LOCALFILEPATH] != '-' and parameters[DFA_PRESERVE_FILE_TIMES]:
|
|
57404
57424
|
setPreservedFileTimes(body, parameters, False)
|
|
57425
|
+
if body.get('mimeType') == MIMETYPE_GA_SCRIPT_JSON:
|
|
57426
|
+
parameters[DFA_LOCALMIMETYPE] = body['mimeType']
|
|
57405
57427
|
media_body = getMediaBody(parameters)
|
|
57406
57428
|
elif parameters[DFA_URL]:
|
|
57407
57429
|
media_body = getMediaBody(parameters)
|
|
@@ -60439,6 +60461,7 @@ GOOGLEDOC_VALID_EXTENSIONS_MAP = {
|
|
|
60439
60461
|
MIMETYPE_GA_DOCUMENT: ['.docx', '.epub', '.html', '.odt', '.pdf', '.rtf', '.txt', '.zip'],
|
|
60440
60462
|
MIMETYPE_GA_JAM: ['.pdf'],
|
|
60441
60463
|
MIMETYPE_GA_PRESENTATION: ['.pdf', '.pptx', '.odp', '.txt'],
|
|
60464
|
+
MIMETYPE_GA_SCRIPT: ['.json'],
|
|
60442
60465
|
MIMETYPE_GA_SPREADSHEET: ['.csv', '.ods', '.pdf', '.tsv', '.xlsx', '.zip'],
|
|
60443
60466
|
}
|
|
60444
60467
|
|
|
@@ -60474,6 +60497,7 @@ DOCUMENT_FORMATS_MAP = {
|
|
|
60474
60497
|
'html': [{'mime': 'text/html', 'ext': '.html'}],
|
|
60475
60498
|
'jpeg': [{'mime': 'image/jpeg', 'ext': '.jpeg'}],
|
|
60476
60499
|
'jpg': [{'mime': 'image/jpeg', 'ext': '.jpg'}],
|
|
60500
|
+
'json': [{'mime': MIMETYPE_GA_SCRIPT_JSON, 'ext': '.json'}],
|
|
60477
60501
|
'mht': [{'mime': 'message/rfc822', 'ext': 'mht'}],
|
|
60478
60502
|
'odp': [{'mime': 'application/vnd.oasis.opendocument.presentation', 'ext': '.odp'}],
|
|
60479
60503
|
'ods': [{'mime': 'application/x-vnd.oasis.opendocument.spreadsheet', 'ext': '.ods'},
|
|
@@ -85,6 +85,8 @@ CSV_OUTPUT_ROW_FILTER_MODE = 'corm'
|
|
|
85
85
|
CSV_OUTPUT_ROW_LIMIT = 'corl'
|
|
86
86
|
# Add timestamp column to CSV output file
|
|
87
87
|
CSV_OUTPUT_TIMESTAMP_COLUMN = 'cotc'
|
|
88
|
+
# Transpose output rows/columns
|
|
89
|
+
CSV_OUTPUT_TRANSPOSE = 'cotr'
|
|
88
90
|
# Output sort headers
|
|
89
91
|
CSV_OUTPUT_SORT_HEADERS = 'cosh'
|
|
90
92
|
# CSV todrive options
|
|
@@ -250,6 +252,7 @@ Globals = {
|
|
|
250
252
|
CSV_OUTPUT_ROW_LIMIT: 0,
|
|
251
253
|
CSV_OUTPUT_SORT_HEADERS: [],
|
|
252
254
|
CSV_OUTPUT_TIMESTAMP_COLUMN: None,
|
|
255
|
+
CSV_OUTPUT_TRANSPOSE: False,
|
|
253
256
|
CSV_TODRIVE: {},
|
|
254
257
|
CURRENT_API_SERVICES: {},
|
|
255
258
|
CURRENT_CLIENT_API: None,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|