Add constants.USER_ID_CHARACTERS and show that when raising invalid.

This commit is contained in:
voussoir 2020-09-19 03:51:55 -07:00
parent b223691107
commit 2db1f12bfb
3 changed files with 8 additions and 3 deletions

View file

@ -222,6 +222,8 @@ FILENAME_BADCHARS = '\\/:*?<>|"'
TRUTHYSTRING_TRUE = {s.lower() for s in ('1', 'true', 't', 'yes', 'y', 'on')} TRUTHYSTRING_TRUE = {s.lower() for s in ('1', 'true', 't', 'yes', 'y', 'on')}
TRUTHYSTRING_NONE = {s.lower() for s in ('null', 'none')} TRUTHYSTRING_NONE = {s.lower() for s in ('null', 'none')}
USER_ID_CHARACTERS = string.digits + string.ascii_uppercase
ADDITIONAL_MIMETYPES = { ADDITIONAL_MIMETYPES = {
'7z': 'archive', '7z': 'archive',
'gz': 'archive', 'gz': 'archive',

View file

@ -53,12 +53,15 @@ class ObjectBase:
return None return None
if not isinstance(author_id, str): if not isinstance(author_id, str):
raise TypeError(f'Author ID must be string, not {type(author_id)}.') raise TypeError(f'Author ID must be {str}, not {type(author_id)}.')
author_id = author_id.strip() author_id = author_id.strip()
if author_id == '': if author_id == '':
return None return None
if not all(c in constants.USER_ID_CHARACTERS for c in author_id):
raise ValueError(f'Author ID must consist only of {constants.USER_ID_CHARACTERS}.')
return author_id return author_id
def get_author(self): def get_author(self):

View file

@ -1235,9 +1235,9 @@ class PDBUserMixin:
User IDs are randomized instead of integers like the other objects, User IDs are randomized instead of integers like the other objects,
so they get their own method. so they get their own method.
''' '''
possible = string.digits + string.ascii_uppercase length = self.config['id_length']
for retry in range(20): for retry in range(20):
user_id = [random.choice(possible) for x in range(self.config['id_length'])] user_id = (random.choice(constants.USER_ID_CHARACTERS) for x in range(length))
user_id = ''.join(user_id) user_id = ''.join(user_id)
user_exists = self.sql_select_one('SELECT 1 FROM users WHERE id == ?', [user_id]) user_exists = self.sql_select_one('SELECT 1 FROM users WHERE id == ?', [user_id])