Skip to content

Commit

Permalink
Make name dedupe logic case-insensitive & prefer longer names (#556)
Browse files Browse the repository at this point in the history
* Make name dedupe logic case-insensitive & prefer longer names

* Fix uuid convention
  • Loading branch information
Andrew-Dickinson authored Sep 23, 2024
1 parent 9575cb7 commit 4ffee77
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions src/meshdb/utils/spreadsheet_import/parse_member.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import logging
import operator
import re
import uuid
from functools import reduce
from typing import Callable, List, Optional, Tuple

Expand Down Expand Up @@ -51,6 +52,7 @@ def merge_member_objects(members_and_installs: List[Tuple[Member, List[int]]]) -
return members_and_installs[0][0]

merged_member = Member(
id=uuid.uuid4(),
name=None,
primary_email_address=None,
stripe_email_address=None,
Expand All @@ -70,10 +72,20 @@ def merge_member_objects(members_and_installs: List[Tuple[Member, List[int]]]) -
if merged_member.name is None:
merged_member.name = member.name
else:
if merged_member.name != member.name and member.name:
if merged_member.name.lower() in member.name.lower() and len(merged_member.name) < len(member.name):
# If they gave us a longer name on a successive submission, and the earlier submission
# they gave us is entirely contained within the later, they probably spelled out
# their whole name in the successive submission, let's take that as truth instead
logging.info(
f"Dropping shorter name {repr(merged_member.name)} in favor of {repr(member.name)} "
f"for member id {str(merged_member.id)} (install number(s) {', '.join(f'#{i}' for i in install_numbers)}"
)
name_change_note = f"Dropped shortened name: {merged_member.name}"
merged_member.name = member.name
elif member.name and merged_member.name.lower() != member.name.lower():
logging.info(
f"Dropping name change {repr(merged_member.name)} -> {repr(member.name)} "
f"for member id {members_and_installs[0][0].id} (install number(s) {', '.join(f'#{i}' for i in install_numbers)}"
f"for member id {str(merged_member.id)} (install number(s) {', '.join(f'#{i}' for i in install_numbers)}"
)
name_change_note = f"Dropped name change: {member.name}"

Expand Down

0 comments on commit 4ffee77

Please sign in to comment.