diff --git a/pagure/hooks/__init__.py b/pagure/hooks/__init__.py index 5f37913..a58f6b8 100644 --- a/pagure/hooks/__init__.py +++ b/pagure/hooks/__init__.py @@ -38,7 +38,16 @@ class RequiredIf(wtforms.validators.Required): raise Exception( 'no field named "%s" in form' % fieldname) if bool(nfield.data): - super(RequiredIf, self).__call__(form, field) + if not field.data \ + or isinstance(field.data, six.string_types) \ + and not field.data.strip(): + if self.message is None: + message = field.gettext('This field is required.') + else: + message = self.message + + field.errors[:] = [] + raise wtforms.validators.StopValidation(message) class BaseHook(object): diff --git a/pagure/hooks/pagure_ci.py b/pagure/hooks/pagure_ci.py index 3749987..0febfdd 100644 --- a/pagure/hooks/pagure_ci.py +++ b/pagure/hooks/pagure_ci.py @@ -98,7 +98,7 @@ class PagureCiForm(FlaskForm): ''' Form to configure the CI hook. ''' ci_type = wtforms.SelectField( 'Type of CI service', - [RequiredIf('active')], + [RequiredIf(['active_commit', 'active_pr'])], choices=[] ) diff --git a/tests/test_pagure_flask_ui_plugins_pagure_ci.py b/tests/test_pagure_flask_ui_plugins_pagure_ci.py index b35f5b0..7481ebf 100644 --- a/tests/test_pagure_flask_ui_plugins_pagure_ci.py +++ b/tests/test_pagure_flask_ui_plugins_pagure_ci.py @@ -171,7 +171,7 @@ class PagureFlaskPluginPagureCItests(tests.SimplePagureTest): self.assertEqual(output.status_code, 200) output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', + 'Settings Pagure CI - test - Pagure', output_text) self.assertNotIn( '\n Hook Pagure CI activated',