From 51405ed3d9a71dd4c718b1cb8bb974c7d0b5ce24 Mon Sep 17 00:00:00 2001 From: Adrian Moennich Date: Tue, 20 Aug 2019 12:26:01 +0200 Subject: [PATCH] URSH: Include indico user id in metadata At least for custom shortcuts, since those are only available to event managers and it may be useful to know who created such a shortcut, e.g. in case of very inappropriate shortcuts. --- ursh/indico_ursh/controllers.py | 6 +++--- ursh/indico_ursh/util.py | 13 +++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/ursh/indico_ursh/controllers.py b/ursh/indico_ursh/controllers.py index e1c013d..e11cf67 100644 --- a/ursh/indico_ursh/controllers.py +++ b/ursh/indico_ursh/controllers.py @@ -9,7 +9,7 @@ from __future__ import unicode_literals import posixpath -from flask import jsonify, request +from flask import jsonify, request, session from flask_pluginengine import render_plugin_template from werkzeug.exceptions import BadRequest from werkzeug.urls import url_parse @@ -17,7 +17,7 @@ from werkzeug.urls import url_parse from indico.core.config import config from indico.modules.events.management.controllers import RHManageEventBase from indico.web.rh import RH -from indico.web.util import jsonify, jsonify_template +from indico.web.util import jsonify_template from indico_ursh import _ from indico_ursh.util import register_shortcut, request_short_url, strip_end @@ -84,7 +84,7 @@ class RHCustomShortURLPage(RHManageEventBase): def _process_POST(self): original_url = self._make_absolute_url(request.args['original_url']) shortcut = request.form['shortcut'].strip() - result = register_shortcut(original_url, shortcut) + result = register_shortcut(original_url, shortcut, session.user) if result.get('error'): kwargs = {'success': False, 'msg': self._get_error_msg(result)} diff --git a/ursh/indico_ursh/util.py b/ursh/indico_ursh/util.py index 46c2c60..a86ccdd 100644 --- a/ursh/indico_ursh/util.py +++ b/ursh/indico_ursh/util.py @@ -7,6 +7,7 @@ from __future__ import unicode_literals +import json import posixpath import requests @@ -26,21 +27,21 @@ def _get_settings(): def request_short_url(original_url): api_key, api_host = _get_settings() - headers = {'Authorization': 'Bearer {api_key}'.format(api_key=api_key)} + headers = {'Authorization': 'Bearer {api_key}'.format(api_key=api_key), 'Content-Type': 'application/json'} url = posixpath.join(api_host, 'api/urls/') - response = requests.post(url, data={'url': original_url, 'allow_reuse': True}, headers=headers) + response = requests.post(url, data=json.dumps({'url': original_url, 'allow_reuse': True}), headers=headers) response.raise_for_status() data = response.json() return data['short_url'] -def register_shortcut(original_url, shortcut): +def register_shortcut(original_url, shortcut, user): api_key, api_host = _get_settings() - headers = {'Authorization': 'Bearer {api_key}'.format(api_key=api_key)} + headers = {'Authorization': 'Bearer {api_key}'.format(api_key=api_key), 'Content-Type': 'application/json'} url = posixpath.join(api_host, 'api/urls', shortcut) - - response = requests.put(url, data={'url': original_url, 'allow_reuse': True}, headers=headers) + data = {'url': original_url, 'allow_reuse': True, 'metadata': {'indico.user': user.id}} + response = requests.put(url, data=json.dumps(data), headers=headers) if not (400 <= response.status_code < 500): response.raise_for_status()