diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index dbbe5c8..8de7e57 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -2657,7 +2657,7 @@ def get_group_types(session, group_type=None): return query.all() -def search_groups(session, pattern=None, group_name=None, group_type=None): +def search_groups(session, pattern=None, group_name=None, group_type=None, display_name=None): ''' Return the groups based on the criteria specified. ''' @@ -2681,6 +2681,11 @@ def search_groups(session, pattern=None, group_name=None, group_type=None): model.PagureGroup.group_name == group_name ) + if display_name: + query = query.filter( + model.PagureGroup.display_name == display_name + ) + if group_type: query = query.filter( model.PagureGroup.group_type == group_type @@ -2849,6 +2854,11 @@ def add_group( raise pagure.exceptions.PagureException( 'There is already a group named %s' % group_name) + display = search_groups(session, display_name=display_name) + if display: + raise pagure.exceptions.PagureException( + 'There is already a group with display name `%s` created.' % display_name) + grp = pagure.lib.model.PagureGroup( group_name=group_name, display_name=display_name, diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py index b7ad650..cdfd9c5 100644 --- a/tests/test_pagure_lib.py +++ b/tests/test_pagure_lib.py @@ -2201,6 +2201,20 @@ class PagureLibtests(tests.Modeltests): blacklist=[], ) + # Group with this display name already exists + self.assertRaises( + pagure.exceptions.PagureException, + pagure.lib.add_group, + self.session, + group_name='foo1', + display_name='foo group', + description=None, + group_type='bar', + user='pingou', + is_admin=False, + blacklist=[], + ) + # Group with a blacklisted prefix self.assertRaises( pagure.exceptions.PagureException,