feat: Group admin form accepts acronyms starting with numbers for SDO groups (#7051)

* feat: Group admin form accepts acronyms starting with numbers for SDO groups (#6825)

* fix: Acronym can't start with hyphen

* fix: Restore some tests
This commit is contained in:
Paul Selkirk 2024-02-20 17:38:11 -05:00 committed by GitHub
parent 74ceac7aea
commit 65cf001ecf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 17 additions and 2 deletions

View file

@ -1,4 +1,4 @@
# Copyright The IETF Trust 2010-2020, All Rights Reserved # Copyright The IETF Trust 2010-2024, All Rights Reserved
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re import re
@ -72,6 +72,12 @@ class GroupForm(forms.ModelForm):
'Acronym is invalid. For groups that create documents, the acronym must be at least ' 'Acronym is invalid. For groups that create documents, the acronym must be at least '
'two characters and only contain lowercase letters and numbers starting with a letter.' 'two characters and only contain lowercase letters and numbers starting with a letter.'
) )
elif self.cleaned_data['type'].pk == 'sdo':
valid_re = r'^[a-z0-9][a-z0-9-]*[a-z0-9]$'
error_msg = (
'Acronym is invalid. It must be at least two characters and only contain lowercase '
'letters and numbers. It may contain hyphens, but that is discouraged.'
)
else: else:
valid_re = r'^[a-z][a-z0-9-]*[a-z0-9]$' valid_re = r'^[a-z][a-z0-9-]*[a-z0-9]$'
error_msg = ( error_msg = (

View file

@ -1,4 +1,4 @@
# Copyright The IETF Trust 2009-2023, All Rights Reserved # Copyright The IETF Trust 2009-2024, All Rights Reserved
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
@ -2044,8 +2044,17 @@ class AcronymValidationTests(TestCase):
self.assertTrue(form.is_valid()) self.assertTrue(form.is_valid())
form = AdminGroupForm({'acronym':'shouldfail-','name':'should fail','type':'wg','state':'active','used_roles':'[]','time':now}) form = AdminGroupForm({'acronym':'shouldfail-','name':'should fail','type':'wg','state':'active','used_roles':'[]','time':now})
self.assertIn('acronym',form.errors) self.assertIn('acronym',form.errors)
form = AdminGroupForm({'acronym':'shouldfail-','name':'should fail','type':'sdo','state':'active','used_roles':'[]','time':now})
self.assertIn('acronym',form.errors)
form = AdminGroupForm({'acronym':'-shouldfail','name':'should fail','type':'wg','state':'active','used_roles':'[]','time':now}) form = AdminGroupForm({'acronym':'-shouldfail','name':'should fail','type':'wg','state':'active','used_roles':'[]','time':now})
self.assertIn('acronym',form.errors) self.assertIn('acronym',form.errors)
form = AdminGroupForm({'acronym':'-shouldfail','name':'should fail','type':'sdo','state':'active','used_roles':'[]','time':now})
self.assertIn('acronym',form.errors)
# SDO groups (and only SDO groups) can have a leading number
form = AdminGroupForm({'acronym':'3gpp-should-pass','name':'should pass','type':'sdo','state':'active','used_roles':'[]','time':now})
self.assertTrue(form.is_valid())
form = AdminGroupForm({'acronym':'123shouldfail','name':'should fail','type':'wg','state':'active','used_roles':'[]','time':now})
self.assertIn('acronym',form.errors)
wg = GroupFactory(acronym='bad-idea', type_id='wg') # There are some existing wg and programs with hyphens in their acronyms. wg = GroupFactory(acronym='bad-idea', type_id='wg') # There are some existing wg and programs with hyphens in their acronyms.
form = AdminGroupForm({'acronym':wg.acronym,'name':wg.name,'type':wg.type_id,'state':wg.state_id,'used_roles':str(wg.used_roles),'time':now},instance=wg) form = AdminGroupForm({'acronym':wg.acronym,'name':wg.name,'type':wg.type_id,'state':wg.state_id,'used_roles':str(wg.used_roles),'time':now},instance=wg)