From 52ed347a4928aa5328bfefcf9aeab521240b522f Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Oct 01 2016 08:01:31 +0000 Subject: [PATCH 1/5] Check if there is something in form.milestone before retrieving it Fixes https://pagure.io/pagure/issue/1336 --- diff --git a/pagure/ui/issues.py b/pagure/ui/issues.py index 6217af6..cebb76a 100644 --- a/pagure/ui/issues.py +++ b/pagure/ui/issues.py @@ -174,7 +174,8 @@ def update_issue(repo, issueid, username=None, namespace=None): new_milestone = None try: - new_milestone = form.milestone.data.strip() or None + if form.milestone.raw_data: + new_milestone = form.milestone.data.strip() or None except: pass From 586cb19b1a8aa96a493f0246489d287a7db62d5e Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Oct 01 2016 08:01:31 +0000 Subject: [PATCH 2/5] Use the raw_data check instead of checking if the returned namespace is 'None' --- diff --git a/pagure/api/project.py b/pagure/api/project.py index 3ff92dc..493da21 100644 --- a/pagure/api/project.py +++ b/pagure/api/project.py @@ -333,8 +333,9 @@ def api_fork_project(): if form.validate_on_submit(): repo = form.repo.data username = form.username.data or None - namespace = form.namespace.data.strip() or None - if namespace == 'None': + if form.namespace.raw_data: + namespace = form.namespace.data.strip() or None + else: namespace = None repo = pagure.lib.get_project( From 2c43bb1947ba131231b09fca2d184658ebd2d6ac Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Oct 01 2016 08:01:31 +0000 Subject: [PATCH 3/5] Add unit-tests about forking a non-existing repo with a namespace --- diff --git a/tests/test_pagure_flask_api_project.py b/tests/test_pagure_flask_api_project.py index 039becf..f061b04 100644 --- a/tests/test_pagure_flask_api_project.py +++ b/tests/test_pagure_flask_api_project.py @@ -421,6 +421,24 @@ class PagureFlaskApiProjecttests(tests.Modeltests): } ) + data = { + 'repo': 'test', + 'namespace': 'pingou', + } + + # Repo does not exists + output = self.app.post( + '/api/0/fork/', data=data, headers=headers) + self.assertEqual(output.status_code, 404) + data = json.loads(output.data) + self.assertDictEqual( + data, + { + "error": "Project not found", + "error_code": "ENOPROJECT" + } + ) + if __name__ == '__main__': SUITE = unittest.TestLoader().loadTestsFromTestCase( PagureFlaskApiProjecttests) From c254a771082869f838c988bac2da846ed6219a2d Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Oct 01 2016 08:01:31 +0000 Subject: [PATCH 4/5] Fix removing all the milestones of a project --- diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index d25229e..4d19889 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -1172,7 +1172,6 @@ def update_milestones(repo, username=None, namespace=None): if form.validate_on_submit(): milestones = [ w.strip() for w in flask.request.form.getlist('milestones') - if w.strip() ] milestone_dates = [ @@ -1186,7 +1185,7 @@ def update_milestones(repo, username=None, namespace=None): error = True for milestone in milestones: - if milestones.count(milestone) != 1: + if milestone.strip() and milestones.count(milestone) != 1: flask.flash( 'Milestone %s is present %s times' % ( milestone, milestones.count(milestone) @@ -1196,7 +1195,7 @@ def update_milestones(repo, username=None, namespace=None): break for milestone_date in milestone_dates: - if milestone_date and milestone_dates.count(milestone_date) != 1: + if milestone_date.strip() and milestone_dates.count(milestone_date) != 1: flask.flash( 'Date %s is present %s times' % ( milestone_date, milestone_dates.count(milestone_date) @@ -1208,7 +1207,8 @@ def update_milestones(repo, username=None, namespace=None): if not error: miles = {} for cnt in range(len(milestones)): - miles[milestones[cnt]] = milestone_dates[cnt] + if milestones[cnt].strip(): + miles[milestones[cnt]] = milestone_dates[cnt] try: repo.milestones = miles SESSION.add(repo) From 09637563ede4b045ff188adb6a8a4579f41b32c3 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Oct 03 2016 08:36:27 +0000 Subject: [PATCH 5/5] Drop the use of form..raw_data since it now seems to work without it --- diff --git a/pagure/api/project.py b/pagure/api/project.py index 493da21..cab5fb3 100644 --- a/pagure/api/project.py +++ b/pagure/api/project.py @@ -333,10 +333,7 @@ def api_fork_project(): if form.validate_on_submit(): repo = form.repo.data username = form.username.data or None - if form.namespace.raw_data: - namespace = form.namespace.data.strip() or None - else: - namespace = None + namespace = form.namespace.data.strip() or None repo = pagure.lib.get_project( SESSION, repo, user=username, namespace=namespace) diff --git a/pagure/ui/issues.py b/pagure/ui/issues.py index cebb76a..6217af6 100644 --- a/pagure/ui/issues.py +++ b/pagure/ui/issues.py @@ -174,8 +174,7 @@ def update_issue(repo, issueid, username=None, namespace=None): new_milestone = None try: - if form.milestone.raw_data: - new_milestone = form.milestone.data.strip() or None + new_milestone = form.milestone.data.strip() or None except: pass