Skip to content

Commit 2670528

Browse files
committed
stats: customise update stats view
* code refactoring
1 parent 3358b01 commit 2670528

File tree

2 files changed

+32
-20
lines changed

2 files changed

+32
-20
lines changed

cds/config.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1256,9 +1256,11 @@ def _(x):
12561256
# endpoints for logging user actions
12571257
LOG_USER_ACTIONS_ENDPOINTS = {
12581258
'base_url': None,
1259-
'media_view': '{base_url}media_view?ext=true&recid={recid}&report_number={'
1259+
'media_view': '{base_url}cds_videos_media_view?ext=true&'
1260+
'recid={recid}&report_number={'
12601261
'report_number}&format={format}',
1261-
'media_download': '{base_url}media_download?recid={recid}&report_number={'
1262-
'report_number}&format={format}&quality={quality}',
1263-
'page_view': '{base_url}page_view?recid={recid}&userid={userid}'
1262+
'media_download': '{base_url}cds_videos_media_download?recid={recid}&'
1263+
'report_number={report_number}&'
1264+
'format={format}&quality={quality}',
1265+
'page_view': '{base_url}cds_videos_page_view?recid={recid}&userid={userid}'
12641266
}

cds/modules/stats/views.py

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def _build_subquery(report_number):
6868
{"match": {"file": report_number}},
6969
{"match": {"file": report_number_movie}},
7070
{"match": {"file": report_number_videoclip}},
71-
{"match": {"_type": "events.media_download"}}
71+
{"match": {"_type": "events.cds_videos_media_download"}}
7272
],
7373
"minimum_should_match": 2
7474
}
@@ -81,7 +81,7 @@ def _build_subquery(report_number):
8181
"should": [
8282
{"match": {"file": report_number}},
8383
{"match": {"file": report_number_videorush}},
84-
{"match": {"_type": "events.media_download"}}
84+
{"match": {"_type": "events.cds_videos_media_download"}}
8585
],
8686
"minimum_should_match": 2
8787
}
@@ -91,7 +91,6 @@ def _build_subquery(report_number):
9191
@need_record_permission('read_permission_factory')
9292
def get(self, pid, stat, record, **kwargs):
9393
"""Handle GET request."""
94-
9594
es = Elasticsearch([{
9695
'host': current_app.config['LEGACY_STATS_ELASTIC_HOST'],
9796
'port': current_app.config['LEGACY_STATS_ELASTIC_PORT'],
@@ -112,14 +111,17 @@ def get(self, pid, stat, record, **kwargs):
112111
},
113112
{
114113
"match": {
115-
"_type": "events.pageviews"
114+
"_type": "events.cds_videos_pageviews"
116115
}
117116
}
118117
]
119118
}
120119
}
121120
}
122-
results = es.count(index=ES_INDEX, body=query).get('count', 0)
121+
try:
122+
results = es.count(index=ES_INDEX, body=query).get('count', 0)
123+
except Exception:
124+
return make_response("Error getting statistics.", 400)
123125

124126
# Get timestamp-aggregated downloads for specific CDS record
125127
elif stat == 'downloads':
@@ -150,12 +152,15 @@ def get(self, pid, stat, record, **kwargs):
150152
}
151153
}
152154
}
153-
results = self.transform(
154-
es.search(index=ES_INDEX, body=query),
155-
stat,
156-
key_type)
157-
158-
# Get timestamp-aggregated pageviews for specific CDS record
155+
try:
156+
results = self.transform(
157+
es.search(index=ES_INDEX, body=query),
158+
stat,
159+
key_type)
160+
except Exception:
161+
return make_response("Error getting statistics.", 400)
162+
163+
# Get timestamp-aggregated pageviews for specific CDS record
159164
elif stat == 'pageviews':
160165
key_type = 'date'
161166
query = {
@@ -171,7 +176,8 @@ def get(self, pid, stat, record, **kwargs):
171176
},
172177
{
173178
"match": {
174-
"_type": "events.pageviews"
179+
"_type":
180+
"events.cds_videos_pageviews"
175181
}
176182
}
177183
]
@@ -196,13 +202,17 @@ def get(self, pid, stat, record, **kwargs):
196202
}
197203
}
198204
}
199-
results = self.transform(
200-
es.search(index=ES_INDEX, body=query),
201-
stat,
202-
key_type)
205+
try:
206+
results = self.transform(
207+
es.search(index=ES_INDEX, body=query),
208+
stat,
209+
key_type)
210+
except Exception:
211+
return make_response("Error getting statistics.", 400)
203212

204213
return make_response(jsonify(results), 200)
205214

215+
206216
# Convert retrieved statistics into 'Invenio-Stats' format
207217
def transform(self, response, metric, key_type):
208218
graph_data = {}

0 commit comments

Comments
 (0)