mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-03 12:21:35 +00:00
Added options to gam report <ActivityApplicationName>
`addcsvdata <FieldName> <String>` `shownoactivities`
This commit is contained in:
@@ -10,7 +10,15 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
|
|||||||
|
|
||||||
See [Downloads](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads) for Windows or other options, including manual installation
|
See [Downloads](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads) for Windows or other options, including manual installation
|
||||||
|
|
||||||
Updated `gam <UserTypeEntity> import|insert message` to allow `replace <Tag> <UserReplacement>` as documented.
|
### 6.65.08
|
||||||
|
|
||||||
|
Added option `addcsvdata <FieldName> <String>` to `gam report <ActivityApplicationName>` that adds
|
||||||
|
additional columns of data to the CSV file output.
|
||||||
|
|
||||||
|
Added option `shownoactivities` to `gam report <ActivityApplicationName>` that causes GAM to display
|
||||||
|
a row with a key value of `NoActivities` when there are no activities to report.
|
||||||
|
|
||||||
|
For example, to find Shared Drives with no activity, see: https://github.com/taers232c/GAMADV-XTD3/wiki/Reports#find-shared-drives-with-no-activity
|
||||||
|
|
||||||
### 6.65.07
|
### 6.65.07
|
||||||
|
|
||||||
@@ -47,6 +55,8 @@ in the last 30 days.
|
|||||||
gam user user@domain.com print messages querytime30d -30d query "after:#querytime30d# is:unread"
|
gam user user@domain.com print messages querytime30d -30d query "after:#querytime30d# is:unread"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> import|insert message` to allow `replace <Tag> <UserReplacement>` as documented.
|
||||||
|
|
||||||
Updated non-owner permission handling in `gam <UserTypeEntity> copy|move drivefile`.
|
Updated non-owner permission handling in `gam <UserTypeEntity> copy|move drivefile`.
|
||||||
|
|
||||||
### 6.65.04
|
### 6.65.04
|
||||||
|
|||||||
@@ -334,7 +334,7 @@ writes the credentials into the file oauth2.txt.
|
|||||||
admin@server:/Users/admin/bin/gamadv-xtd3$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
admin@server:/Users/admin/bin/gamadv-xtd3$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
||||||
admin@server:/Users/admin/bin/gamadv-xtd3$ ./gam version
|
admin@server:/Users/admin/bin/gamadv-xtd3$ ./gam version
|
||||||
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
||||||
GAMADV-XTD3 6.65.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.65.08 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.10.8 64-bit final
|
Python 3.10.8 64-bit final
|
||||||
MacOS High Sierra 10.13.6 x86_64
|
MacOS High Sierra 10.13.6 x86_64
|
||||||
@@ -1002,7 +1002,7 @@ writes the credentials into the file oauth2.txt.
|
|||||||
C:\GAMADV-XTD3>del C:\GAMConfig\oauth2.txt
|
C:\GAMADV-XTD3>del C:\GAMConfig\oauth2.txt
|
||||||
C:\GAMADV-XTD3>gam version
|
C:\GAMADV-XTD3>gam version
|
||||||
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
|
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
|
||||||
GAMADV-XTD3 6.65.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.65.08 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.0 64-bit final
|
Python 3.12.0 64-bit final
|
||||||
Windows-10-10.0.17134 AMD64
|
Windows-10-10.0.17134 AMD64
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
- [Collections of Users](Collections-of-Users)
|
- [Collections of Users](Collections-of-Users)
|
||||||
- [Definitions](#definitions)
|
- [Definitions](#definitions)
|
||||||
- [Activity reports](#activity-reports)
|
- [Activity reports](#activity-reports)
|
||||||
|
- [Find Shared Drives with no activity](#find-shared-drives-with-no-activity)
|
||||||
- [Customer and user reports parameters](#customer-and-user-reports-parameters)
|
- [Customer and user reports parameters](#customer-and-user-reports-parameters)
|
||||||
- [Customer usage reports](#customer-usage-reports)
|
- [Customer usage reports](#customer-usage-reports)
|
||||||
- [Customer reports](#customer-reports)
|
- [Customer reports](#customer-reports)
|
||||||
@@ -59,6 +60,7 @@ gam report <ActivityApplicationName> [todrive <ToDriveAttributes>*]
|
|||||||
[groupidfilter <String>]
|
[groupidfilter <String>]
|
||||||
[maxactivities <Number>] [maxresults <Number>]
|
[maxactivities <Number>] [maxresults <Number>]
|
||||||
[countsonly [summary] [eventrowfilter]]
|
[countsonly [summary] [eventrowfilter]]
|
||||||
|
(addcsvdata <FieldName> <String>)* [shownoactivities]
|
||||||
```
|
```
|
||||||
Select the application with `<ActivityApplicationName>`.
|
Select the application with `<ActivityApplicationName>`.
|
||||||
|
|
||||||
@@ -101,6 +103,12 @@ Limit the total number of activites.
|
|||||||
Limit the number of activities downloaded per API call; infrequently used.
|
Limit the number of activities downloaded per API call; infrequently used.
|
||||||
* `maxresults <Number>`
|
* `maxresults <Number>`
|
||||||
|
|
||||||
|
Add additional columns of data from the command line to the output.
|
||||||
|
* `addcsvdata <FieldName> <String>`
|
||||||
|
|
||||||
|
Display a row with a key value of `NoActivities` when there are no activities to report.
|
||||||
|
* `shownoactivities`
|
||||||
|
|
||||||
By default, individual event details are displayed, these options modify what's displayed.
|
By default, individual event details are displayed, these options modify what's displayed.
|
||||||
* `countsonly` - Limit the display to the number of occurences of each event for each user
|
* `countsonly` - Limit the display to the number of occurences of each event for each user
|
||||||
* `countsonly summary` - Limit the display to the number of occurences of each event summarized across all users
|
* `countsonly summary` - Limit the display to the number of occurences of each event summarized across all users
|
||||||
@@ -121,6 +129,43 @@ Number of files summarized across all users
|
|||||||
```
|
```
|
||||||
gam config csv_output_row_filter "doc_title:regex:\.xyz" report drive event create yesterday countsonly summary eventrowfilter
|
gam config csv_output_row_filter "doc_title:regex:\.xyz" report drive event create yesterday countsonly summary eventrowfilter
|
||||||
```
|
```
|
||||||
|
## Find Shared Drives with no activity
|
||||||
|
|
||||||
|
Remember that activity events are only available for the past 180 days.
|
||||||
|
|
||||||
|
Get Shared Drives ID and Name
|
||||||
|
```
|
||||||
|
gam redirect csv ./SharedDrives.csv print shareddrives fields id,name
|
||||||
|
```
|
||||||
|
Options:
|
||||||
|
* `maxactivities 1` - Limits the number of activities displayed for Shared Drives with activity.
|
||||||
|
* `shownoactivities` - Displays a row for Shared Drives with no activity.
|
||||||
|
* `addcsvdata shared_drive_id "~id"` adds the Shared Drive ID to the output.
|
||||||
|
* `addcsvdata shared_drive_name "~name"` adds the Shared Drive name to the output.
|
||||||
|
|
||||||
|
Get activities with minimal activty data.
|
||||||
|
```
|
||||||
|
gam config csv_output_header_filter "name,id.time,shared_drive_id,shared_drive_name" redirect csv ./SharedDrivesActivity.csv multiprocess redirect stderr - multiprocess csv SharedDrives.csv gam report drive filter "shared_drive_id==~~id~~" maxactivities 1 shownoactivities addcsvdata shared_drive_id "~id" addcsvdata shared_drive_name "~name"
|
||||||
|
|
||||||
|
Example output from SharedDrivesActivity.csv:
|
||||||
|
|
||||||
|
name,id.time,shared_drive_id,shared_drive_name
|
||||||
|
NoActivities,,0AERPpMc23znvUkPXYZ,Shared Drive 1
|
||||||
|
view,2023-10-18T21:27:51-07:00,0AMhgLk82dhsuUkPXYZ,Shared Drive 2
|
||||||
|
edit,2023-09-05T15:27:01-07:00,0AM8lpdkkJaKYUkPXYZ,Shared Drive 3
|
||||||
|
```
|
||||||
|
|
||||||
|
Get activities with full activty data.
|
||||||
|
```
|
||||||
|
gam redirect csv ./SharedDrivesActivity.csv multiprocess redirect stderr - multiprocess csv SharedDrives.csv gam report drive filter "shared_drive_id==~~id~~" maxactivities 1 shownoactivities addcsvdata shared_drive_id "~id" addcsvdata shared_drive_name "~name"
|
||||||
|
|
||||||
|
Example output from SharedDrivesActivity.csv:
|
||||||
|
|
||||||
|
name,actor.callerType,actor.email,actor.key,actor.profileId,actor_is_collaborator_account,added_role,billable,destination_folder_id,destination_folder_title,doc_id,doc_title,doc_type,id.applicationName,id.customerId,id.time,id.uniqueQualifier,ipAddress,is_encrypted,membership_change_type,new_settings_state,old_settings_state,originating_app_id,owner,owner_is_shared_drive,owner_is_team_drive,owner_team_drive_id,primary_event,removed_role,shared_drive_id,shared_drive_name,shared_drive_settings_change_type,target,team_drive_id,team_drive_settings_change_type,type,visibility
|
||||||
|
NoActivities,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0AERPpMc23znvUkPXYZ,Shared Drive 1,,,,,,
|
||||||
|
view,,user1@domain.com,,100016760394505151666,False,,True,,,1SDNu-yzDapqjdJq4y4xKDUATJlOPRIBodpGGeGt1n4I,Digital Poetry Journal,document,drive,C03kt1z99,2023-10-18T21:27:51-07:00,-2856812962461786835,2600:1700:9580:f4b0:2127:3b2:dd21:3806,False,,,,263492796725,Shared Drive 2,True,True,0AMhgLk82dhsuUkPXYZ,True,,0AMhgLk82dhsuUkPXYZ,Shared Drive 2,,,0AMhgLk82dhsuUkPXYZ,,access,people_with_link
|
||||||
|
edit,,user2@domain.com,,104066776037911136666,False,,True,,,1ZwHi_v-JVXH8W6zwgb7QYoUHrZD6NzIshJEqoTCaDD0,High School Scavenger Hunt,form,drive,C03kt1z99,2023-09-05T15:27:01-07:00,-1272095408714453395,50.204.178.246,False,,,,,Shared Drive 3,True,True,0AM8lpdkkJaKYUkPXYZ,True,,0AM8lpdkkJaKYUkPXYZ,Shared Drive 3,,,0AM8lpdkkJaKYUkPXYZ,,access,shared_internally
|
||||||
|
```
|
||||||
|
|
||||||
## Customer and user reports parameters
|
## Customer and user reports parameters
|
||||||
Display the valid parameters for customer and user reports.
|
Display the valid parameters for customer and user reports.
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
- [Delete Gmail delegates](#delete-gmail-delegates)
|
- [Delete Gmail delegates](#delete-gmail-delegates)
|
||||||
- [Update Gmail delegates](#update-gmail-delegates)
|
- [Update Gmail delegates](#update-gmail-delegates)
|
||||||
- [Display Gmail delegates](#display-gmail-delegates)
|
- [Display Gmail delegates](#display-gmail-delegates)
|
||||||
|
- [Delete all delegates for a user](#delete-all-delegates-for-a-user)
|
||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* https://developers.google.com/gmail/api/v1/reference/users/settings/delegates
|
* https://developers.google.com/gmail/api/v1/reference/users/settings/delegates
|
||||||
@@ -66,3 +67,19 @@ This involves an extra API call per delegate email address.
|
|||||||
|
|
||||||
By default, `show delegates` displays indented keys and values; use the `csv` option to have just the values
|
By default, `show delegates` displays indented keys and values; use the `csv` option to have just the values
|
||||||
shown as a comma separated list.
|
shown as a comma separated list.
|
||||||
|
|
||||||
|
## Delete all delegates for a user
|
||||||
|
```
|
||||||
|
$ gam redirect csv ./Delegates.csv user testsimple print delegates
|
||||||
|
Getting all Delegates for testsimple@domain.com
|
||||||
|
$ gam redirect stdout - multiprocess csv Delegates.csv gam user "~User" delete delegate "~delegateAddress"
|
||||||
|
2023-11-10T06:56:04.118-08:00,0/3,Using 3 processes...
|
||||||
|
2023-11-10T06:56:04.123-08:00,0,Processing item 3/3
|
||||||
|
User: testsimple@domain.com, Delete 1 Delegate
|
||||||
|
User: testsimple@domain.com, Delegate: testuser1@domain.com, Deleted
|
||||||
|
User: testsimple@domain.com, Delete 1 Delegate
|
||||||
|
User: testsimple@domain.com, Delegate: testuser2@domain.com, Deleted
|
||||||
|
User: testsimple@domain.com, Delete 1 Delegate
|
||||||
|
User: testsimple@domain.com, Delegate: testgroup@domain.com, Deleted
|
||||||
|
2023-11-10T06:56:07.253-08:00,0/3,Processing complete
|
||||||
|
```
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
Print the current version of Gam with details
|
Print the current version of Gam with details
|
||||||
```
|
```
|
||||||
gam version
|
gam version
|
||||||
GAMADV-XTD3 6.65.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.65.08 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.0 64-bit final
|
Python 3.12.0 64-bit final
|
||||||
MacOS Monterey 12.7 x86_64
|
MacOS Monterey 12.7 x86_64
|
||||||
@@ -16,7 +16,7 @@ Time: 2023-06-02T21:10:00-07:00
|
|||||||
Print the current version of Gam with details and time offset information
|
Print the current version of Gam with details and time offset information
|
||||||
```
|
```
|
||||||
gam version timeoffset
|
gam version timeoffset
|
||||||
GAMADV-XTD3 6.65.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.65.08 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.0 64-bit final
|
Python 3.12.0 64-bit final
|
||||||
MacOS Monterey 12.7 x86_64
|
MacOS Monterey 12.7 x86_64
|
||||||
@@ -28,7 +28,7 @@ Your system time differs from www.googleapis.com by less than 1 second
|
|||||||
Print the current version of Gam with extended details and SSL information
|
Print the current version of Gam with extended details and SSL information
|
||||||
```
|
```
|
||||||
gam version extended
|
gam version extended
|
||||||
GAMADV-XTD3 6.65.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.65.08 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.0 64-bit final
|
Python 3.12.0 64-bit final
|
||||||
MacOS Monterey 12.7 x86_64
|
MacOS Monterey 12.7 x86_64
|
||||||
@@ -65,7 +65,7 @@ MacOS High Sierra 10.13.6 x86_64
|
|||||||
Path: /Users/Admin/bin/gamadv-xtd3
|
Path: /Users/Admin/bin/gamadv-xtd3
|
||||||
Version Check:
|
Version Check:
|
||||||
Current: 5.35.08
|
Current: 5.35.08
|
||||||
Latest: 6.65.07
|
Latest: 6.65.08
|
||||||
echo $?
|
echo $?
|
||||||
1
|
1
|
||||||
```
|
```
|
||||||
@@ -73,7 +73,7 @@ echo $?
|
|||||||
Print the current version number without details
|
Print the current version number without details
|
||||||
```
|
```
|
||||||
gam version simple
|
gam version simple
|
||||||
6.65.07
|
6.65.08
|
||||||
```
|
```
|
||||||
In Linux/MacOS you can do:
|
In Linux/MacOS you can do:
|
||||||
```
|
```
|
||||||
@@ -83,7 +83,7 @@ echo $VER
|
|||||||
Print the current version of Gam and address of this Wiki
|
Print the current version of Gam and address of this Wiki
|
||||||
```
|
```
|
||||||
gam help
|
gam help
|
||||||
GAM 6.65.07 - https://github.com/taers232c/GAMADV-XTD3
|
GAM 6.65.08 - https://github.com/taers232c/GAMADV-XTD3
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.0 64-bit final
|
Python 3.12.0 64-bit final
|
||||||
MacOS Monterey 12.7 x86_64
|
MacOS Monterey 12.7 x86_64
|
||||||
|
|||||||
@@ -4138,6 +4138,7 @@ gam report <ActivityApplicationName> [todrive <ToDriveAttribute>*]
|
|||||||
[groupidfilter <String>]
|
[groupidfilter <String>]
|
||||||
[maxactivities <Number>] [maxresults <Number>]
|
[maxactivities <Number>] [maxresults <Number>]
|
||||||
[countsonly [summary] [eventrowfilter]]
|
[countsonly [summary] [eventrowfilter]]
|
||||||
|
(addcsvdata <FieldName> <String>)* [shownoactivities]
|
||||||
|
|
||||||
<CustomerServiceName> ::=
|
<CustomerServiceName> ::=
|
||||||
accounts|
|
accounts|
|
||||||
|
|||||||
@@ -2,6 +2,16 @@
|
|||||||
|
|
||||||
Merged GAM-Team version
|
Merged GAM-Team version
|
||||||
|
|
||||||
|
6.65.08
|
||||||
|
|
||||||
|
Added option `addcsvdata <FieldName> <String>` to `gam report <ActivityApplicationName>` that adds
|
||||||
|
additional columns of data to the CSV file output.
|
||||||
|
|
||||||
|
Added option `shownoactivities` to `gam report <ActivityApplicationName>` that causes GAM to display
|
||||||
|
a row with a key value of `NoActivities` when there are no activities to report.
|
||||||
|
|
||||||
|
For example, to find Shared Drives with no activity, see: https://github.com/taers232c/GAMADV-XTD3/wiki/Reports#find-shared-drives-with-no-activity
|
||||||
|
|
||||||
6.65.07
|
6.65.07
|
||||||
|
|
||||||
Updated `gam delete building` to handle the following error:
|
Updated `gam delete building` to handle the following error:
|
||||||
|
|||||||
@@ -12763,7 +12763,7 @@ REPORTS_PARAMETERS_SIMPLE_TYPES = ['intValue', 'boolValue', 'datetimeValue', 'st
|
|||||||
# [([start|startdate <Date>] [end|enddate <Date>])|(range <Date> <Date>)|
|
# [([start|startdate <Date>] [end|enddate <Date>])|(range <Date> <Date>)|
|
||||||
# thismonth|(previousmonths <Integer>)]
|
# thismonth|(previousmonths <Integer>)]
|
||||||
# [fields|parameters <String>)]
|
# [fields|parameters <String>)]
|
||||||
# gam report usage |customer [todrive <ToDriveAttribute>*]
|
# gam report usage customer [todrive <ToDriveAttribute>*]
|
||||||
# [([start|startdate <Date>] [end|enddate <Date>])|(range <Date> <Date>)|
|
# [([start|startdate <Date>] [end|enddate <Date>])|(range <Date> <Date>)|
|
||||||
# thismonth|(previousmonths <Integer>)]
|
# thismonth|(previousmonths <Integer>)]
|
||||||
# [fields|parameters <String>)]
|
# [fields|parameters <String>)]
|
||||||
@@ -13042,6 +13042,7 @@ REPORT_ACTIVITIES_TIME_OBJECTS = {'time'}
|
|||||||
# [groupidfilter <String>]
|
# [groupidfilter <String>]
|
||||||
# [maxactivities <Number>] [maxresults <Number>]
|
# [maxactivities <Number>] [maxresults <Number>]
|
||||||
# [countsonly [summary] [eventrowfilter]]
|
# [countsonly [summary] [eventrowfilter]]
|
||||||
|
# (addcsvdata <FieldName> <String>)* [shownoactivities]
|
||||||
# gam report users|user [todrive <ToDriveAttribute>*]
|
# gam report users|user [todrive <ToDriveAttribute>*]
|
||||||
# [(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath> [showorgunit])|(select <UserTypeEntity>)]
|
# [(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath> [showorgunit])|(select <UserTypeEntity>)]
|
||||||
# [allverifyuser <UserItem>]
|
# [allverifyuser <UserItem>]
|
||||||
@@ -13320,6 +13321,8 @@ def doReport():
|
|||||||
usageReports = customerReports or userReports
|
usageReports = customerReports or userReports
|
||||||
activityReports = not usageReports
|
activityReports = not usageReports
|
||||||
dataRequiredServices = set()
|
dataRequiredServices = set()
|
||||||
|
addCSVData = {}
|
||||||
|
showNoActivities = False
|
||||||
if usageReports:
|
if usageReports:
|
||||||
includeServices = set()
|
includeServices = set()
|
||||||
while Cmd.ArgumentsRemaining():
|
while Cmd.ArgumentsRemaining():
|
||||||
@@ -13396,6 +13399,11 @@ def doReport():
|
|||||||
eventRowFilter = True
|
eventRowFilter = True
|
||||||
elif activityReports and myarg == 'groupidfilter':
|
elif activityReports and myarg == 'groupidfilter':
|
||||||
groupIdFilter = getString(Cmd.OB_STRING)
|
groupIdFilter = getString(Cmd.OB_STRING)
|
||||||
|
elif activityReports and myarg == 'addcsvdata':
|
||||||
|
k = getString(Cmd.OB_STRING)
|
||||||
|
addCSVData[k] = getString(Cmd.OB_STRING, minLen=0)
|
||||||
|
elif activityReports and myarg == 'shownoactivities':
|
||||||
|
showNoActivities = True
|
||||||
elif not customerReports and myarg.startswith('filtertime'):
|
elif not customerReports and myarg.startswith('filtertime'):
|
||||||
filterTimes[myarg] = getTimeOrDeltaFromNow()
|
filterTimes[myarg] = getTimeOrDeltaFromNow()
|
||||||
elif not customerReports and myarg in {'filter', 'filters'}:
|
elif not customerReports and myarg in {'filter', 'filters'}:
|
||||||
@@ -13596,6 +13604,8 @@ def doReport():
|
|||||||
startDateTime += oneDay
|
startDateTime += oneDay
|
||||||
csvPF.writeCSVfile(f'Customer Report - {tryDate}')
|
csvPF.writeCSVfile(f'Customer Report - {tryDate}')
|
||||||
else: # activityReports
|
else: # activityReports
|
||||||
|
if addCSVData:
|
||||||
|
csvPF.AddTitles(sorted(addCSVData.keys()))
|
||||||
if select:
|
if select:
|
||||||
pageMessage = None
|
pageMessage = None
|
||||||
normalizeUsers = True
|
normalizeUsers = True
|
||||||
@@ -13690,6 +13700,8 @@ def doReport():
|
|||||||
row = flattenJSON(event)
|
row = flattenJSON(event)
|
||||||
row.update(activity_row)
|
row.update(activity_row)
|
||||||
if not countsOnly:
|
if not countsOnly:
|
||||||
|
if addCSVData:
|
||||||
|
row.update(addCSVData)
|
||||||
csvPF.WriteRowTitles(row)
|
csvPF.WriteRowTitles(row)
|
||||||
elif csvPF.CheckRowTitles(row):
|
elif csvPF.CheckRowTitles(row):
|
||||||
if not summary:
|
if not summary:
|
||||||
@@ -13709,22 +13721,48 @@ def doReport():
|
|||||||
eventCounts.setdefault(event['name'], 0)
|
eventCounts.setdefault(event['name'], 0)
|
||||||
eventCounts[event['name']] += 1
|
eventCounts[event['name']] += 1
|
||||||
if not countsOnly:
|
if not countsOnly:
|
||||||
|
if not csvPF.rows and showNoActivities:
|
||||||
|
row = {'name': 'NoActivities'}
|
||||||
|
if addCSVData:
|
||||||
|
row.update(addCSVData)
|
||||||
|
csvPF.WriteRowTitles(row)
|
||||||
csvPF.SetSortTitles(['name'])
|
csvPF.SetSortTitles(['name'])
|
||||||
else:
|
else:
|
||||||
if eventRowFilter:
|
if eventRowFilter:
|
||||||
csvPF.SetRowFilter([], GC.Values[GC.CSV_OUTPUT_ROW_FILTER_MODE])
|
csvPF.SetRowFilter([], GC.Values[GC.CSV_OUTPUT_ROW_FILTER_MODE])
|
||||||
if not summary:
|
if not summary:
|
||||||
csvPF.SetTitles('emailAddress')
|
csvPF.SetTitles('emailAddress')
|
||||||
|
if addCSVData:
|
||||||
|
csvPF.AddTitles(sorted(addCSVData.keys()))
|
||||||
|
if eventCounts:
|
||||||
for actor, events in iter(eventCounts.items()):
|
for actor, events in iter(eventCounts.items()):
|
||||||
row = {'emailAddress': actor}
|
row = {'emailAddress': actor}
|
||||||
for event, count in iter(events.items()):
|
for event, count in iter(events.items()):
|
||||||
row[event] = count
|
row[event] = count
|
||||||
|
if addCSVData:
|
||||||
|
row.update(addCSVData)
|
||||||
csvPF.WriteRowTitles(row)
|
csvPF.WriteRowTitles(row)
|
||||||
|
elif showNoActivities:
|
||||||
|
row = {'emailAddress': 'NoActivities'}
|
||||||
|
if addCSVData:
|
||||||
|
row.update(addCSVData)
|
||||||
|
csvPF.WriteRow(row)
|
||||||
csvPF.SetSortTitles(['emailAddress'])
|
csvPF.SetSortTitles(['emailAddress'])
|
||||||
else:
|
else:
|
||||||
csvPF.SetTitles(['event', 'count'])
|
csvPF.SetTitles(['event', 'count'])
|
||||||
|
if addCSVData:
|
||||||
|
csvPF.AddTitles(sorted(addCSVData.keys()))
|
||||||
|
if eventCounts:
|
||||||
for event in sorted(eventCounts):
|
for event in sorted(eventCounts):
|
||||||
csvPF.WriteRow({'event': event, 'count': eventCounts[event]})
|
row = {'event': event, 'count': eventCounts[event]}
|
||||||
|
if addCSVData:
|
||||||
|
row.update(addCSVData)
|
||||||
|
csvPF.WriteRow(row)
|
||||||
|
elif showNoActivities:
|
||||||
|
row = {'event': 'NoActivities', 'count': 0}
|
||||||
|
if addCSVData:
|
||||||
|
row.update(addCSVData)
|
||||||
|
csvPF.WriteRow(row)
|
||||||
csvPF.writeCSVfile(f'{report.capitalize()} Activity Report')
|
csvPF.writeCSVfile(f'{report.capitalize()} Activity Report')
|
||||||
|
|
||||||
# Substitute for #user#, #email#, #usernamne#
|
# Substitute for #user#, #email#, #usernamne#
|
||||||
|
|||||||
Reference in New Issue
Block a user