diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index f1b46c3..ce72e8a 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -1725,25 +1725,33 @@ def update_project_settings(session, repo, settings, user): new_settings = repo.settings for key in new_settings: if key in settings: + if key == 'Minimum_score_to_merge_pull-request': + try: + settings[key] = int(settings[key]) \ + if settings[key] else -1 + except (ValueError, TypeError): + raise pagure.exceptions.PagureException( + "Please enter a numeric value for the 'minimum " + "score to merge pull request' field.") + elif key == 'Web-hooks': + settings[key] = settings[key] or None + else: + # All the remaining keys are boolean, so True is provided + # as 'y' by the html, let's convert it back + settings[key] = settings[key] in ['y', True] + if new_settings[key] != settings[key]: update.append(key) - if key == 'Minimum_score_to_merge_pull-request': - try: - settings[key] = int(settings[key]) \ - if settings[key] else -1 - except (ValueError, TypeError): - raise pagure.exceptions.PagureException( - "Please enter a numeric value for the 'minimum " - "score to merge pull request' field.") - elif key == 'Web-hooks': - settings[key] = settings[key] or None new_settings[key] = settings[key] else: - update.append(key) val = False if key == 'Web-hooks': val = None - new_settings[key] = val + + # Ensure the default value is different from what is stored. + if new_settings[key] != val: + update.append(key) + new_settings[key] = val if not update: return 'No settings to change' diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py index 8f0f52d..a38dc5d 100644 --- a/tests/test_pagure_lib.py +++ b/tests/test_pagure_lib.py @@ -1405,7 +1405,7 @@ class PagureLibtests(tests.Modeltests): 'pull_requests': False, 'Only_assignee_can_merge_pull-request': None, 'Minimum_score_to_merge_pull-request': None, - 'Web-hooks': '', + 'Web-hooks': 'https://pagure.io/foobar', 'Enforce_signed-off_commits_in_pull-request': False, 'issues_default_to_private': False, 'fedmsg_notifications': True,