From 1487504318d19244754d0ed9aafaf6eb2b6cd102 Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Sat, 20 Jun 2026 01:10:34 -0400 Subject: [PATCH] [discgolf] Fix bug in creating people --- PROJECT.org | 6 +++++- vrobbler/apps/discgolf/utils.py | 13 ++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/PROJECT.org b/PROJECT.org index cf2ce02..0834e9b 100644 --- a/PROJECT.org +++ b/PROJECT.org @@ -88,7 +88,7 @@ fetching and simple saving. *** Metadata sources **** Scraper -* Backlog [0/22] :vrobbler:project:personal: +* Backlog [1/23] :vrobbler:project:personal: ** TODO [#C] Create small utility to clean up tracks scrobbled with wonky playback times :bug:music:scrobbles: :PROPERTIES: :ID: 702462cf-d54b-48c6-8a7c-78b8de751deb @@ -604,6 +604,10 @@ independent of the email flow it was originally creatdd for ** TODO [#B] Is there way to create unique slugs for media instances :media_types: +** DONE [#A] Fix bug in creating people when importing course plays :discgolf:bug: +:PROPERTIES: +:ID: 255e9886-098b-39ae-1077-25e43223660e +:END: * Version 56.1 [1/1] ** DONE [#A] Add tests to discgolf app :discgolf:tests: :PROPERTIES: diff --git a/vrobbler/apps/discgolf/utils.py b/vrobbler/apps/discgolf/utils.py index 11a4172..4972310 100644 --- a/vrobbler/apps/discgolf/utils.py +++ b/vrobbler/apps/discgolf/utils.py @@ -15,9 +15,12 @@ def _parse_udisc_datetime(raw: str) -> datetime: return parse_datetime(raw) -def _resolve_player(name: str) -> Person: - person, _ = Person.objects.get_or_create(name=name.strip()) - return person +def _resolve_player(name: str, user_id: int) -> Person: + name = name.strip() + existing = Person.objects.filter(name=name, created_by_id=user_id).first() + if existing: + return existing + return Person.objects.create(name=name, created_by_id=user_id) def import_udisc_csv( @@ -95,10 +98,10 @@ def import_udisc_csv( if is_teams: people = player_name.split("+") - person_ids = [_resolve_player(p.strip()).id for p in people] + person_ids = [_resolve_player(p.strip(), user_id).id for p in people] hole_scores["person_ids"] = person_ids else: - person = _resolve_player(player_name) + person = _resolve_player(player_name, user_id) hole_scores["person_id"] = person.id scores[player_name] = hole_scores