From b72ebe6e8cf90c5ed3149da02422592ee1481f29 Mon Sep 17 00:00:00 2001 From: sanspie Date: Tue, 3 Dec 2024 00:53:26 +0300 Subject: [PATCH] fixed song process --- akarpov/music/services/db.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/akarpov/music/services/db.py b/akarpov/music/services/db.py index 4cd3ba1..99454f4 100644 --- a/akarpov/music/services/db.py +++ b/akarpov/music/services/db.py @@ -22,13 +22,30 @@ def get_or_create_author(author_name): + """Get or create author with unique slug.""" with transaction.atomic(): author = Author.objects.filter(name__iexact=author_name).order_by("id").first() if author is None: - author = Author.objects.create(name=author_name) + author = Author.objects.create( + name=author_name, slug=generate_readable_slug(author_name, Author) + ) return author +def get_or_create_album(album_name): + """Get or create album with unique slug.""" + if not album_name: + return None + + with transaction.atomic(): + album = Album.objects.filter(name__iexact=album_name).order_by("id").first() + if album is None: + album = Album.objects.create( + name=album_name, slug=generate_readable_slug(album_name, Album) + ) + return album + + def process_track_name(track_name: str) -> str: # Split the track name by dash and parentheses parts = track_name.split(" - ") @@ -109,9 +126,7 @@ def load_track( else: album_name = None if album_name: - album, created = Album.objects.get_or_create( - name__iexact=album_name, defaults={"name": album_name} - ) + album = get_or_create_album(album_name) processed_authors = [] if authors: