From 0435083239d5c74d0ca36e1c43a84195c834e76b Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Mar 03 2017 15:51:42 +0000 Subject: Allow report to filter for a key multiple times When we had an url with a query such as: ?milestone=none&milestone=1.0.1 We were saving it as: {'milestone': '1.0.1'} therefore loosing half of the information and that due to the code assuming one value per key. With this commit the url query: milestone=none&milestone=1.0.1 is saved as: {'milestone': ['none', '1.0.1']} as desired. Fixes https://pagure.io/pagure/issue/2012 --- diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index 42d1c19..55300e0 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -3715,7 +3715,15 @@ def save_report(session, repo, name, url, username): """ url_obj = urlparse.urlparse(url) url = url_obj.geturl().replace(url_obj.query, '') - query = dict(urlparse.parse_qsl(url_obj.query)) + query = {} + for k, v in urlparse.parse_qsl(url_obj.query): + if k in query: + if isinstance(query[k], list): + query[k].append(v) + else: + query[k] = [query[k], v] + else: + query[k] = v reports = repo.reports reports[name] = query repo.reports = reports