mirror of
				https://github.com/Alexander-D-Karpov/akarpov
				synced 2025-11-04 10:17:24 +03:00 
			
		
		
		
	updated author creation
This commit is contained in:
		
							parent
							
								
									75d787f460
								
							
						
					
					
						commit
						79e865bf37
					
				| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
# Generated by Django 4.2.8 on 2023-12-18 11:44
 | 
			
		||||
 | 
			
		||||
from django.db import migrations, models
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
    dependencies = [
 | 
			
		||||
        ("music", "0012_album_meta_author_albums_author_meta"),
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    operations = [
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name="author",
 | 
			
		||||
            name="albums",
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name="album",
 | 
			
		||||
            name="authors",
 | 
			
		||||
            field=models.ManyToManyField(related_name="albums", to="music.album"),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AlterField(
 | 
			
		||||
            model_name="album",
 | 
			
		||||
            name="name",
 | 
			
		||||
            field=models.CharField(max_length=200, unique=True),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AlterField(
 | 
			
		||||
            model_name="author",
 | 
			
		||||
            name="name",
 | 
			
		||||
            field=models.CharField(max_length=200, unique=True),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
| 
						 | 
				
			
			@ -8,10 +8,9 @@
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
class Author(BaseImageModel, ShortLinkModel):
 | 
			
		||||
    name = models.CharField(max_length=200)
 | 
			
		||||
    name = models.CharField(max_length=200, unique=True)
 | 
			
		||||
    link = models.URLField(blank=True)
 | 
			
		||||
    meta = models.JSONField(blank=True, null=True)
 | 
			
		||||
    albums = models.ManyToManyField("Album", related_name="authors")
 | 
			
		||||
 | 
			
		||||
    def get_absolute_url(self):
 | 
			
		||||
        return reverse("music:author", kwargs={"slug": self.slug})
 | 
			
		||||
| 
						 | 
				
			
			@ -21,9 +20,10 @@ def __str__(self):
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
class Album(BaseImageModel, ShortLinkModel):
 | 
			
		||||
    name = models.CharField(max_length=200)
 | 
			
		||||
    name = models.CharField(max_length=200, unique=True)
 | 
			
		||||
    link = models.URLField(blank=True)
 | 
			
		||||
    meta = models.JSONField(blank=True, null=True)
 | 
			
		||||
    authors = models.ManyToManyField("Album", related_name="albums")
 | 
			
		||||
 | 
			
		||||
    def get_absolute_url(self):
 | 
			
		||||
        return reverse("music:album", kwargs={"slug": self.slug})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,16 +27,28 @@ def load_track(
 | 
			
		|||
    if album and type(album) is str and album.startswith("['"):
 | 
			
		||||
        album = album.replace("['", "").replace("']", "")
 | 
			
		||||
 | 
			
		||||
    re_authors = []
 | 
			
		||||
    if authors:
 | 
			
		||||
        authors = [Author.objects.get_or_create(name=x)[0] for x in authors if authors]
 | 
			
		||||
    else:
 | 
			
		||||
        authors = []
 | 
			
		||||
        for x in authors:
 | 
			
		||||
            try:
 | 
			
		||||
                re_authors.append(Author.objects.get(name=x))
 | 
			
		||||
            except Author.DoesNotExist:
 | 
			
		||||
                re_authors.append(Author.objects.create(name=x))
 | 
			
		||||
    authors = re_authors
 | 
			
		||||
    album_name = None
 | 
			
		||||
    if album:
 | 
			
		||||
        if type(album) is str:
 | 
			
		||||
            album = Album.objects.get_or_create(name=album)[0]
 | 
			
		||||
            album_name = album
 | 
			
		||||
        elif type(album) is list:
 | 
			
		||||
            album = Album.objects.get_or_create(name=album[0])[0]
 | 
			
		||||
            album_name = album[0]
 | 
			
		||||
        else:
 | 
			
		||||
            album_name = None
 | 
			
		||||
        if album_name:
 | 
			
		||||
            try:
 | 
			
		||||
                album = Album.objects.get(name=album_name)
 | 
			
		||||
            except Album.DoesNotExist:
 | 
			
		||||
                album = Album.objects.create(name=album_name)
 | 
			
		||||
    if not album_name:
 | 
			
		||||
        album = None
 | 
			
		||||
 | 
			
		||||
    if sng := Song.objects.filter(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -130,9 +130,9 @@ def update_album_info(album: AlbumModel) -> None:
 | 
			
		|||
        if search_album.artists:
 | 
			
		||||
            for x in search_album.artists:
 | 
			
		||||
                try:
 | 
			
		||||
                    authors.append(Author.objects.get_or_create(name=x.name)[0])
 | 
			
		||||
                except Author.MultipleObjectsReturned:
 | 
			
		||||
                    authors.append(Author.objects.filter(name=x.name).first())
 | 
			
		||||
                    authors.append(Author.objects.get(name=x.name))
 | 
			
		||||
                except Author.DoesNotExist:
 | 
			
		||||
                    authors.append(Author.objects.create(name=x.name))
 | 
			
		||||
        album.authors.set(authors)
 | 
			
		||||
        album.meta = data
 | 
			
		||||
        image_path = str(settings.MEDIA_ROOT + f"/_{str(randint(10000, 99999))}.png")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user