1
- import datetime
1
+ from datetime import datetime , timedelta
2
+ import calendar
2
3
import io
3
4
import csv
4
5
17
18
properties = analytics .properties ()
18
19
19
20
20
- def date_range (days_ago : int ):
21
- today = datetime .date .today ().strftime ("%Y-%m-%d" )
22
- days_ago_strfmt = (
23
- datetime .date .today () - datetime .timedelta (days = days_ago )
24
- ).strftime ("%Y-%m-%d" )
25
- return [{"startDate" : days_ago_strfmt , "endDate" : today }]
21
+ def date_range_last_month ():
22
+ last_month = datetime .today ().replace (day = 1 ) - timedelta (days = 1 )
23
+ last_day = calendar .monthrange (last_month .year , last_month .month )[1 ]
24
+ end_date = datetime (last_month .year , last_month .month , last_day ).strftime (
25
+ "%Y-%m-%d"
26
+ )
27
+ start_date = datetime (last_month .year , last_month .month , 1 ).strftime ("%Y-%m-%d" )
28
+ return [{"startDate" : start_date , "endDate" : end_date }]
26
29
27
30
28
31
def get_org_list ():
@@ -47,7 +50,7 @@ def setup_organization_reports():
47
50
48
51
# report most viewd dataset pages per organization
49
52
org_reports [f"{ org } __page_requests__last30" ] = {
50
- "dateRanges" : date_range ( 30 ),
53
+ "dateRanges" : date_range_last_month ( ),
51
54
"dimensions" : [
52
55
{"name" : "pagePath" },
53
56
{"name" : "customEvent:DATAGOV_dataset_organization" },
@@ -60,7 +63,7 @@ def setup_organization_reports():
60
63
61
64
# report most downloaded files per organization
62
65
org_reports [f"{ org } __download_requests__last30" ] = {
63
- "dateRanges" : date_range ( 30 ),
66
+ "dateRanges" : date_range_last_month ( ),
64
67
"dimensions" : [
65
68
{"name" : "linkUrl" },
66
69
{"name" : "customEvent:DATAGOV_dataset_organization" },
@@ -90,7 +93,7 @@ def setup_organization_reports():
90
93
91
94
# report most clicked outboud links per organization
92
95
org_reports [f"{ org } __link_requests__last30" ] = {
93
- "dateRanges" : date_range ( 30 ),
96
+ "dateRanges" : date_range_last_month ( ),
94
97
"dimensions" : [
95
98
{"name" : "linkUrl" },
96
99
{"name" : "customEvent:DATAGOV_dataset_organization" },
@@ -121,7 +124,7 @@ def setup_global_reports():
121
124
global_reports = {}
122
125
123
126
global_reports ["global__page_requests__last30" ] = {
124
- "dateRanges" : date_range ( 30 ),
127
+ "dateRanges" : date_range_last_month ( ),
125
128
"dimensions" : [{"name" : "pagePath" }],
126
129
# TODO add filter to clean up pages?
127
130
# "dimensionFilter": {},
@@ -130,12 +133,12 @@ def setup_global_reports():
130
133
}
131
134
132
135
global_reports ["global__total_pageviews__last30" ] = {
133
- "dateRanges" : date_range ( 30 ),
136
+ "dateRanges" : date_range_last_month ( ),
134
137
"metrics" : [{"name" : "screenPageViews" }],
135
138
}
136
139
137
140
global_reports ["global__top_search_terms__last30" ] = {
138
- "dateRanges" : date_range ( 30 ),
141
+ "dateRanges" : date_range_last_month ( ),
139
142
"dimensions" : [{"name" : "searchTerm" }],
140
143
"dimensionFilter" : {
141
144
"andGroup" : {
@@ -167,7 +170,7 @@ def setup_global_reports():
167
170
}
168
171
169
172
global_reports ["global__device_category__last30" ] = {
170
- "dateRanges" : date_range ( 30 ),
173
+ "dateRanges" : date_range_last_month ( ),
171
174
"dimensions" : [{"name" : "deviceCategory" }],
172
175
"metrics" : [{"name" : "activeUsers" }],
173
176
"orderBys" : [{"metric" : {"metricName" : "activeUsers" }, "desc" : True }],
0 commit comments