fix for LDAPServerFieldURI error if number present in top-level-domain #4774
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
SUMMARY
related to #3646
LDAP server URI field does not validate if top-level-domain contains a number, throwing a generic 400 error to the user.
The URI field is passed to a built-in django validator that does a regex match to check for validity.
This URI validator can take in a custom regex. My solution sets up a custom regex in the LDAPServerURIField class and passes it to the URLValidator that is appended in the parent class init.
For the custom regex, I simply grabbed the default URLValidator regex defined here,
https://github.com/django/django/blob/55b68de643b5c2d5f0a8ea7587ab3b2966021ccc/django/core/validators.py#L89
and added number capabilities,
r'(?:[a-z' + URLValidator.ul + r'0-9' + '-]{2,63}' # domain label
ISSUE TYPE
COMPONENT NAME
AWX VERSION
ADDITIONAL INFORMATION