From 68dfc1515579358968626e0d81a05e17e72b7895 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jun 05 2015 07:22:43 +0000 Subject: [PATCH 1/4] Add an `api` argument to the to_json method of Project Some API endpoint are not interested in knowing the settings of a project so make the output easier to digest by the consumers. --- diff --git a/pagure/lib/model.py b/pagure/lib/model.py index 536c698..afa3075 100644 --- a/pagure/lib/model.py +++ b/pagure/lib/model.py @@ -337,7 +337,7 @@ class Project(BASE): ''' Ensures the settings are properly saved. ''' self._settings = json.dumps(settings) - def to_json(self, public=False): + def to_json(self, public=False, api=False): ''' Return a representation of the project as JSON. ''' @@ -345,12 +345,13 @@ class Project(BASE): 'id': self.id, 'name': self.name, 'description': self.description, - 'parent': self.parent.to_json(public=public) + 'parent': self.parent.to_json(public=public, api=api) if self.parent else None, - 'settings': self.settings, 'date_created': self.date_created.strftime('%s'), 'user': self.user.to_json(public=public), } + if not api: + output['settings'] = self.settings return output From 04a14ea8c97bb6ada69bb568c5f8f5c8e2bb9976 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jun 05 2015 07:22:43 +0000 Subject: [PATCH 2/4] Add an `api` argument to the to_json method of PullRequest The JSON representation of the PullRequest objects do not necessarily need to contain the settings info of the projects, so allow removing it. --- diff --git a/pagure/lib/model.py b/pagure/lib/model.py index afa3075..b9a35d0 100644 --- a/pagure/lib/model.py +++ b/pagure/lib/model.py @@ -734,7 +734,7 @@ class PullRequest(BASE): return len(positive) - len(negative) - def to_json(self, public=False): + def to_json(self, public=False, api=False): ''' Returns a dictionnary representation of the pull-request. ''' @@ -743,9 +743,9 @@ class PullRequest(BASE): 'uid': self.uid, 'title': self.title, 'branch': self.branch, - 'project': self.project.to_json(public=public), + 'project': self.project.to_json(public=public, api=api), 'branch_from': self.branch_from, - 'repo_from': self.project_from.to_json(public=public), + 'repo_from': self.project_from.to_json(public=public, api=api), 'date_created': self.date_created.strftime('%s'), 'user': self.user.to_json(public=public), 'assignee': self.assignee.to_json(public=public) From 87d805c9caa88da06df4b2e80cb39b3350482dbd Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jun 05 2015 07:22:43 +0000 Subject: [PATCH 3/4] Drop the project's settings from the JSON returned about pull-requests --- diff --git a/pagure/api/fork.py b/pagure/api/fork.py index d1ea3c1..e8caa41 100644 --- a/pagure/api/fork.py +++ b/pagure/api/fork.py @@ -72,14 +72,6 @@ def api_pull_request_views(repo, username=None): "id": 1, "name": "test", "parent": null, - "settings": { - "Minimum_score_to_merge_pull-request": -1, - "Only_assignee_can_merge_pull-request": false, - "Web-hooks": None, - "issue_tracker": true, - "project_documentation": true, - "pull_requests": true - }, "user": { "fullname": "PY C", "name": "pingou" @@ -91,14 +83,6 @@ def api_pull_request_views(repo, username=None): "id": 1, "name": "test", "parent": null, - "settings": { - "Minimum_score_to_merge_pull-request": -1, - "Only_assignee_can_merge_pull-request": false, - "Web-hooks": null, - "issue_tracker": true, - "project_documentation": true, - "pull_requests": true - }, "user": { "fullname": "PY C", "name": "pingou" @@ -148,7 +132,9 @@ def api_pull_request_views(repo, username=None): status=status) jsonout = flask.jsonify({ - 'requests': [request.to_json(public=True) for request in requests], + 'requests': [ + request.to_json(public=True, api=True) + for request in requests], 'args': { 'status': status, 'assignee': assignee, @@ -195,14 +181,6 @@ def api_pull_request_view(repo, requestid, username=None): "id": 1, "name": "test", "parent": null, - "settings": { - "Minimum_score_to_merge_pull-request": -1, - "Only_assignee_can_merge_pull-request": false, - "Web-hooks": null, - "issue_tracker": true, - "project_documentation": true, - "pull_requests": true - }, "user": { "fullname": "PY C", "name": "pingou" @@ -214,14 +192,6 @@ def api_pull_request_view(repo, requestid, username=None): "id": 1, "name": "test", "parent": null, - "settings": { - "Minimum_score_to_merge_pull-request": -1, - "Only_assignee_can_merge_pull-request": false, - "Web-hooks": null, - "issue_tracker": true, - "project_documentation": true, - "pull_requests": true - }, "user": { "fullname": "PY C", "name": "pingou" @@ -254,7 +224,7 @@ def api_pull_request_view(repo, requestid, username=None): if not request: raise pagure.exceptions.APIError(404, error_code=APIERROR.ENOREQ) - jsonout = flask.jsonify(request.to_json(public=True)) + jsonout = flask.jsonify(request.to_json(public=True, api=True)) return jsonout From cf8a9ee7c6eeaec0f8756e4e0f00e2f8a02f3ce1 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jun 05 2015 07:22:43 +0000 Subject: [PATCH 4/4] Adjust the unit-tests for the change in the JSON returned about PR --- diff --git a/tests/test_progit_flask_api_fork.py b/tests/test_progit_flask_api_fork.py index 41ea5b9..96fc3bf 100644 --- a/tests/test_progit_flask_api_fork.py +++ b/tests/test_progit_flask_api_fork.py @@ -112,14 +112,6 @@ class PagureFlaskApiForktests(tests.Modeltests): "id": 1, "name": "test", "parent": None, - "settings": { - "Minimum_score_to_merge_pull-request": -1, - "Only_assignee_can_merge_pull-request": False, - "Web-hooks": None, - "issue_tracker": True, - "project_documentation": True, - "pull_requests": True - }, "user": { "fullname": "PY C", "name": "pingou" @@ -131,14 +123,6 @@ class PagureFlaskApiForktests(tests.Modeltests): "id": 1, "name": "test", "parent": None, - "settings": { - "Minimum_score_to_merge_pull-request": -1, - "Only_assignee_can_merge_pull-request": False, - "Web-hooks": None, - "issue_tracker": True, - "project_documentation": True, - "pull_requests": True - }, "user": { "fullname": "PY C", "name": "pingou" @@ -241,14 +225,6 @@ class PagureFlaskApiForktests(tests.Modeltests): "id": 1, "name": "test", "parent": None, - "settings": { - "Minimum_score_to_merge_pull-request": -1, - "Only_assignee_can_merge_pull-request": False, - "Web-hooks": None, - "issue_tracker": True, - "project_documentation": True, - "pull_requests": True - }, "user": { "fullname": "PY C", "name": "pingou" @@ -260,14 +236,6 @@ class PagureFlaskApiForktests(tests.Modeltests): "id": 1, "name": "test", "parent": None, - "settings": { - "Minimum_score_to_merge_pull-request": -1, - "Only_assignee_can_merge_pull-request": False, - "Web-hooks": None, - "issue_tracker": True, - "project_documentation": True, - "pull_requests": True - }, "user": { "fullname": "PY C", "name": "pingou"