Skip to content

Duplicate members #40

@kaj

Description

@kaj

Changing some fields in the finger.json source seems to create duplicate users. I'm not alert enough to find the actual problem at the moment, but we need to investigate this. I think some change is needed here:

# We need to uniqily identify a member in finger.json and map it to Member.
# Use the special key fingerweb_identifier if found in finger.json, if not
# found use the username.
#
# We have members without identifier and usernames, for these use the
# following fallbacks:
# - User provided email address
# - Stacken email adress (will be generated from the username (if it's exists))
# - First and last name
#
# If the above causes conflicts, add and fingerweb_identifier key to the member.
if fields["identifier"]:
member, _ = self.update_or_create(identifier__exact=fields["identifier"], defaults=fields)
else:
user_from_db = User.objects.filter(username__exact=user.get("användarnamn")).first()
if self.is_valid_user(user) and user_from_db:
member, _ = self.update_or_create(id=user_from_db.id, defaults=fields)
elif "@" in fields.get("email", ""):
member, _ = self.update_or_create(email__exact=fields["email"], defaults=fields)
else:
member, _ = self.update_or_create(
first_name__exact=fields["first_name"], last_name__exact=fields["last_name"], defaults=fields
)
# Create and/or update an account for the member
if fields.get("has_signed") and self.is_valid_user(user):
user_fields = {
"member": member,
"date_joined": fields.get("date_joined"),
}
User.objects.update_or_create(username=user.get("användarnamn"), defaults=user_fields)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions