1
0
Fork 0

Added failsafes by comparing lowercased usernames/names/emails only and using provided fullname if username is not found.

This commit is contained in:
jochan 2017-11-10 10:01:40 -08:00
parent e1e58926b8
commit 9863ea816f
1 changed files with 11 additions and 8 deletions

View File

@ -25,19 +25,19 @@ with open(os.path.dirname(os.path.abspath(__file__)) + "/users.csv", "r") as use
users = [{"name": user[0], "username": user[1], "email": user[2]} for user in users_reader] users = [{"name": user[0], "username": user[1], "email": user[2]} for user in users_reader]
def email_from_fullname(author): def email_from_fullname(author):
return next((user["email"] for user in users if user["name"] == author), "") return next((user["email"] for user in users if user["name"].lower() == author.lower()), "")
def email_from_username(author): def email_from_username(author):
return next((user["email"] for user in users if user["username"] == author), "") return next((user["email"] for user in users if user["username"].lower() == author.lower()), "")
def username_from_email(author): def username_from_email(author):
return next((user["username"] for user in users if user["email"] == author), "") return next((user["username"] for user in users if user["email"].lower() == author.lower()), "")
def username_from_fullname(author): def username_from_fullname(author):
return next((user["username"] for user in users if user["name"] == author), "") return next((user["username"] for user in users if user["name"].lower() == author.lower()), "")
def username_from_firstname_lastname(author): def username_from_firstname_lastname(author):
return next((user["username"] for user in users if user["name"].casefold() == author.replace(".", " ").casefold()), "") return next((user["username"] for user in users if user["name"].lower() == author.replace(".", " ").lower()), "")
def replace_author(author): def replace_author(author):
if failed_pattern.match(author): if failed_pattern.match(author):
@ -48,12 +48,15 @@ def replace_author(author):
return replace_author(author[7:]) return replace_author(author[7:])
if full_name_with_email.match(author): if full_name_with_email.match(author):
fullname = author.split("<")[0].strip() fullname = author.split("<")[0].strip()
return username_from_fullname(fullname) + " <{}>".format(email_from_fullname(fullname)) email = author.split("<")[1].split(">")[0].strip()
username = username_from_email(email)
return (username if username else fullname) + " <{}>".format(email)
if full_name_null_email.match(author): if full_name_null_email.match(author):
fullname = author.strip()[:-2].strip() fullname = author.strip()[:-2].strip()
return username_from_fullname(fullname) + " <{}>".format(email_from_fullname(fullname)) return username_from_fullname(fullname) + " <{}>".format(email_from_fullname(fullname))
if full_name_no_email.match(author): if full_name_no_email.match(author):
return username_from_fullname(author.strip()) + " <{}>".format(email_from_fullname(author.strip())) username = username_from_fullname(author.strip())
return (username if username else author.strip()) + " <{}>".format(email_from_fullname(author.strip()))
if username_with_email.match(author): if username_with_email.match(author):
return author return author
if username_null_email.match(author): if username_null_email.match(author):
@ -71,7 +74,7 @@ def replace_author(author):
return username + " <{}>".format(email_from_username(username)) return username + " <{}>".format(email_from_username(username))
if first_last_name.match(author): if first_last_name.match(author):
username = username_from_firstname_lastname(author) username = username_from_firstname_lastname(author)
return username + " <{}>".format(email_from_username(username)) return (username if username else author.strip()) + " <{}>".format(email_from_username(username))
if any_any.match(author): if any_any.match(author):
return author return author
if null_any.match(author): if null_any.match(author):