From 333854c1399cc4dba2720edba4eafd27aaf15abf Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Nov 05 2016 22:01:01 +0000 Subject: [PATCH 1/6] Include project's custom fields in the JSON representation of a project Fixes https://pagure.io/pagure/issue/1508 --- diff --git a/pagure/lib/model.py b/pagure/lib/model.py index 34fda86..28e683d 100644 --- a/pagure/lib/model.py +++ b/pagure/lib/model.py @@ -565,6 +565,9 @@ class Project(BASE): def to_json(self, public=False, api=False): ''' Return a representation of the project as JSON. ''' + custom_keys = [ + [key.name, key.key_type] for key in self.issue_keys + ] output = { 'id': self.id, @@ -577,6 +580,7 @@ class Project(BASE): 'user': self.user.to_json(public=public), 'tags': self.tags_text, 'priorities': self.priorities, + 'custom_keys': custom_keys, } if not api: output['settings'] = self.settings From 02256431110e0ada13b50153d9f880f08bb312f6 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Nov 05 2016 22:01:01 +0000 Subject: [PATCH 2/6] Adjust unit-tests for the presence of custom_keys in the JSON of projects --- diff --git a/tests/test_pagure_flask_api_fork.py b/tests/test_pagure_flask_api_fork.py index 9e0ddcd..e023f5e 100644 --- a/tests/test_pagure_flask_api_fork.py +++ b/tests/test_pagure_flask_api_fork.py @@ -115,6 +115,7 @@ class PagureFlaskApiForktests(tests.Modeltests): "id": 1, "initial_comment": None, "project": { + "custom_keys": [], "date_created": "1431414800", "description": "test project #1", "id": 1, @@ -130,6 +131,7 @@ class PagureFlaskApiForktests(tests.Modeltests): }, "remote_git": None, "repo_from": { + "custom_keys": [], "date_created": "1431414800", "description": "test project #1", "id": 1, @@ -243,6 +245,7 @@ class PagureFlaskApiForktests(tests.Modeltests): "id": 1, "initial_comment": None, "project": { + "custom_keys": [], "date_created": "1431414800", "description": "test project #1", "id": 1, @@ -258,6 +261,7 @@ class PagureFlaskApiForktests(tests.Modeltests): }, "remote_git": None, "repo_from": { + "custom_keys": [], "date_created": "1431414800", "description": "test project #1", "id": 1, diff --git a/tests/test_pagure_flask_api_project.py b/tests/test_pagure_flask_api_project.py index dd3afe1..b31c8cd 100644 --- a/tests/test_pagure_flask_api_project.py +++ b/tests/test_pagure_flask_api_project.py @@ -149,6 +149,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): "total_projects": 1, "projects": [ { + "custom_keys": [], "date_created": "1436527638", "description": "test project #1", "id": 1, @@ -176,6 +177,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): "total_projects": 2, "projects": [ { + "custom_keys": [], "date_created": "1436527638", "description": "test project #1", "id": 1, @@ -190,6 +192,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): } }, { + "custom_keys": [], "date_created": "1436527638", "description": "test project #2", "id": 2, @@ -216,6 +219,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): "total_projects": 1, "projects": [ { + "custom_keys": [], "date_created": "1436527638", "description": "test project #1", "id": 1, diff --git a/tests/test_pagure_lib_git.py b/tests/test_pagure_lib_git.py index 099c73e..03ae716 100644 --- a/tests/test_pagure_lib_git.py +++ b/tests/test_pagure_lib_git.py @@ -484,6 +484,7 @@ index 0000000..60f7480 + "closed_at": null, + "comments": [], + "content": "We should work on this", ++ "custom_fields": [], + "date_created": null, + "depends": [], + "id": 1, @@ -714,7 +715,7 @@ new file mode 100644 index 0000000..60f7480 --- /dev/null +++ b/456 -@@ -0,0 +1,89 @@ +@@ -0,0 +1,91 @@ +{ + "assignee": null, + "branch": "master", @@ -728,6 +729,7 @@ index 0000000..60f7480 + "id": 1, + "initial_comment": null, + "project": { ++ "custom_keys": [], + "date_created": null, + "description": "test project for ticket", + "id": 1, @@ -760,6 +762,7 @@ index 0000000..60f7480 + }, + "remote_git": null, + "repo_from": { ++ "custom_keys": [], + "date_created": null, + "description": "test project for ticket", + "id": 1, @@ -975,6 +978,7 @@ index 0000000..60f7480 "status": True, "uid": "d4182a2ac2d541d884742d3037c26e56", "project": { + "custom_keys": [], "parent": None, "settings": { "issue_tracker": True, @@ -1059,6 +1063,7 @@ index 0000000..60f7480 "commit_start": "788efeaaf86bde8618f594a8181abb402e1dd904", "repo_from": { "parent": { + "custom_keys": [], "parent": None, "name": "test", "date_created": "1426500194", @@ -1086,6 +1091,7 @@ index 0000000..60f7480 }, "name": "test", "date_created": "1426843440", + "custom_keys": [], "tags": [], "user": { "fullname": "fake user", @@ -1145,6 +1151,7 @@ index 0000000..60f7480 "project": { "parent": None, "name": "test", + "custom_keys": [], "date_created": "1426500194", "tags": [], "user": { @@ -1179,6 +1186,7 @@ index 0000000..60f7480 "parent": { "parent": None, "name": "test", + "custom_keys": [], "date_created": "1426500194", "tags": [], "user": { @@ -1204,6 +1212,7 @@ index 0000000..60f7480 }, "name": "test", "date_created": "1426843440", + "custom_keys": [], "tags": [], "user": { "fullname": "fake user", From 8001d4e5cdf92b6da259a0216d13a51d29632df5 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Nov 05 2016 22:01:01 +0000 Subject: [PATCH 3/6] Include the issue's custom fields values in the JSON representation of an issue Fixes https://pagure.io/pagure/issue/1506 --- diff --git a/pagure/lib/model.py b/pagure/lib/model.py index 28e683d..93cef0b 100644 --- a/pagure/lib/model.py +++ b/pagure/lib/model.py @@ -732,6 +732,15 @@ class Issue(BASE): ''' Returns a dictionary representation of the issue. ''' + custom_fields = [ + dict( + name=field.key.name, + key_type=field.key.key_type, + value=field.value, + ) + for field in self.other_fields + ] + output = { 'id': self.id, 'title': self.title, @@ -750,6 +759,7 @@ class Issue(BASE): public=public) if self.assignee else None, 'priority': self.priority, 'milestone': self.milestone, + 'custom_fields': custom_fields, } comments = [] From e5e9eb474aab4074c4bda243b7c12125300dbd62 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Nov 05 2016 22:01:01 +0000 Subject: [PATCH 4/6] Adjust unit-tests for the presence of custom_fields in the JSON of issues --- diff --git a/tests/test_pagure_flask_api_issue.py b/tests/test_pagure_flask_api_issue.py index 4832be7..85f1c72 100644 --- a/tests/test_pagure_flask_api_issue.py +++ b/tests/test_pagure_flask_api_issue.py @@ -155,6 +155,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): "blocks": [], "comments": [], "content": "This issue needs attention", + "custom_fields": [], "date_created": "1431414800", "close_status": None, "closed_at": None, @@ -210,6 +211,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): "blocks": [], "comments": [], "content": "This issue needs attention", + "custom_fields": [], "date_created": "1431414800", "close_status": None, "closed_at": None, @@ -268,6 +270,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): "blocks": [], "comments": [], "content": "This issue needs attention", + "custom_fields": [], "date_created": "1431414800", "close_status": None, "closed_at": None, @@ -312,6 +315,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): "blocks": [], "comments": [], "content": "We should work on this", + "custom_fields": [], "date_created": "1431414800", "close_status": None, "closed_at": None, @@ -333,6 +337,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): "blocks": [], "comments": [], "content": "This issue needs attention", + "custom_fields": [], "date_created": "1431414800", "close_status": None, "closed_at": None, @@ -411,6 +416,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): "blocks": [], "comments": [], "content": "We should work on this", + "custom_fields": [], "date_created": "1431414800", "close_status": None, "closed_at": None, @@ -432,6 +438,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): "blocks": [], "comments": [], "content": "This issue needs attention", + "custom_fields": [], "date_created": "1431414800", "close_status": None, "closed_at": None, @@ -492,6 +499,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): "blocks": [], "comments": [], "content": "This issue needs attention", + "custom_fields": [], "date_created": "1431414800", "close_status": None, "closed_at": None, @@ -585,6 +593,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): "blocks": [], "comments": [], "content": "We should work on this", + "custom_fields": [], "date_created": "1431414800", "close_status": None, "closed_at": None, @@ -615,6 +624,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): "blocks": [], "comments": [], "content": "We should work on this", + "custom_fields": [], "date_created": "1431414800", "close_status": None, "closed_at": None, diff --git a/tests/test_pagure_lib_git.py b/tests/test_pagure_lib_git.py index 03ae716..d216eab 100644 --- a/tests/test_pagure_lib_git.py +++ b/tests/test_pagure_lib_git.py @@ -476,7 +476,7 @@ new file mode 100644 index 0000000..60f7480 --- /dev/null +++ b/456 -@@ -0,0 +1,26 @@ +@@ -0,0 +1,27 @@ +{ + "assignee": null, + "blocks": [], @@ -588,8 +588,8 @@ index 458821a..77674a8 + } + ], "content": "We should work on this", + "custom_fields": [], "date_created": null, - "depends": [], """ npatch = [] From 57a98af5a84feca59a651898817192b378b32e21 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Nov 05 2016 22:01:01 +0000 Subject: [PATCH 5/6] Include the list of close_status and the milestones in the JSON of a project Fixes https://pagure.io/pagure/issue/1508 --- diff --git a/pagure/lib/model.py b/pagure/lib/model.py index 93cef0b..d69f215 100644 --- a/pagure/lib/model.py +++ b/pagure/lib/model.py @@ -581,6 +581,8 @@ class Project(BASE): 'tags': self.tags_text, 'priorities': self.priorities, 'custom_keys': custom_keys, + 'close_status': self.close_status, + 'milestones': self.milestones, } if not api: output['settings'] = self.settings From f254bf1a12d51d8fcc4380a89c91119cfc04c3c9 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Nov 05 2016 22:01:01 +0000 Subject: [PATCH 6/6] Adjust unit-tests for close_status and milestones in the JSON of projects --- diff --git a/tests/test_pagure_flask_api_fork.py b/tests/test_pagure_flask_api_fork.py index e023f5e..291a986 100644 --- a/tests/test_pagure_flask_api_fork.py +++ b/tests/test_pagure_flask_api_fork.py @@ -115,10 +115,17 @@ class PagureFlaskApiForktests(tests.Modeltests): "id": 1, "initial_comment": None, "project": { + "close_status": [ + "Invalid", + "Insufficient data", + "Fixed", + "Duplicate" + ], "custom_keys": [], "date_created": "1431414800", "description": "test project #1", "id": 1, + "milestones": {}, "name": "test", "namespace": None, "parent": None, @@ -131,10 +138,17 @@ class PagureFlaskApiForktests(tests.Modeltests): }, "remote_git": None, "repo_from": { + "close_status": [ + "Invalid", + "Insufficient data", + "Fixed", + "Duplicate" + ], "custom_keys": [], "date_created": "1431414800", "description": "test project #1", "id": 1, + "milestones": {}, "name": "test", "namespace": None, "parent": None, @@ -245,10 +259,17 @@ class PagureFlaskApiForktests(tests.Modeltests): "id": 1, "initial_comment": None, "project": { + "close_status": [ + "Invalid", + "Insufficient data", + "Fixed", + "Duplicate" + ], "custom_keys": [], "date_created": "1431414800", "description": "test project #1", "id": 1, + "milestones": {}, "name": "test", "namespace": None, "parent": None, @@ -261,10 +282,17 @@ class PagureFlaskApiForktests(tests.Modeltests): }, "remote_git": None, "repo_from": { + "close_status": [ + "Invalid", + "Insufficient data", + "Fixed", + "Duplicate" + ], "custom_keys": [], "date_created": "1431414800", "description": "test project #1", "id": 1, + "milestones": {}, "name": "test", "namespace": None, "parent": None, diff --git a/tests/test_pagure_flask_api_project.py b/tests/test_pagure_flask_api_project.py index b31c8cd..2604813 100644 --- a/tests/test_pagure_flask_api_project.py +++ b/tests/test_pagure_flask_api_project.py @@ -149,10 +149,17 @@ class PagureFlaskApiProjecttests(tests.Modeltests): "total_projects": 1, "projects": [ { + "close_status": [ + "Invalid", + "Insufficient data", + "Fixed", + "Duplicate" + ], "custom_keys": [], "date_created": "1436527638", "description": "test project #1", "id": 1, + "milestones": {}, "name": "test", "namespace": None, "parent": None, @@ -177,10 +184,17 @@ class PagureFlaskApiProjecttests(tests.Modeltests): "total_projects": 2, "projects": [ { + "close_status": [ + "Invalid", + "Insufficient data", + "Fixed", + "Duplicate" + ], "custom_keys": [], "date_created": "1436527638", "description": "test project #1", "id": 1, + "milestones": {}, "name": "test", "namespace": None, "parent": None, @@ -192,10 +206,17 @@ class PagureFlaskApiProjecttests(tests.Modeltests): } }, { + "close_status": [ + "Invalid", + "Insufficient data", + "Fixed", + "Duplicate" + ], "custom_keys": [], "date_created": "1436527638", "description": "test project #2", "id": 2, + "milestones": {}, "name": "test2", "namespace": None, "parent": None, @@ -219,10 +240,17 @@ class PagureFlaskApiProjecttests(tests.Modeltests): "total_projects": 1, "projects": [ { + "close_status": [ + "Invalid", + "Insufficient data", + "Fixed", + "Duplicate" + ], "custom_keys": [], "date_created": "1436527638", "description": "test project #1", "id": 1, + "milestones": {}, "name": "test", "namespace": None, "parent": None, diff --git a/tests/test_pagure_lib_git.py b/tests/test_pagure_lib_git.py index d216eab..2005554 100644 --- a/tests/test_pagure_lib_git.py +++ b/tests/test_pagure_lib_git.py @@ -715,7 +715,7 @@ new file mode 100644 index 0000000..60f7480 --- /dev/null +++ b/456 -@@ -0,0 +1,91 @@ +@@ -0,0 +1,95 @@ +{ + "assignee": null, + "branch": "master", @@ -729,10 +729,12 @@ index 0000000..60f7480 + "id": 1, + "initial_comment": null, + "project": { ++ "close_status": [], + "custom_keys": [], + "date_created": null, + "description": "test project for ticket", + "id": 1, ++ "milestones": {}, + "name": "test_ticket_repo", + "namespace": null, + "parent": null, @@ -762,10 +764,12 @@ index 0000000..60f7480 + }, + "remote_git": null, + "repo_from": { ++ "close_status": [], + "custom_keys": [], + "date_created": null, + "description": "test project for ticket", + "id": 1, ++ "milestones": {}, + "name": "test_ticket_repo", + "namespace": null, + "parent": null,