model.base: fix id_short validation
This commit backports 445b1d8f from fix/id_short_validation (!78 (merged)).
In RegEx, the $
asserts the end of a string or line. When used in
re.match() it asserts the end of the string by default, unless the last
character is a newline symbol (\n
). Then it asserts the end of the string
before the newline. Thus the first regex check doesn't filter valid
id_shorts ending in a newline, which it should.
See https://docs.python.org/3.9/library/re.html#index-2
Using re.fullmatch() instead fixes this issue, making the ^
and $
unnecessary as well.
Next to adding a test for this behaviour this commit also simplifies the check for an alphabetical character at the start of the id_short. And although both checks could also be merged into one, they are left separate to be able to report more accurate errors.