From d91e794eec7a6b4cb58b18c2a29a7fcc2f70e781 Mon Sep 17 00:00:00 2001 From: Damillora Date: Wed, 16 Dec 2020 14:29:08 +0700 Subject: [PATCH] Modify some more --- artists/migrations/0004_auto_20201216_0724.py | 23 +++++++++++++++++++ artists/models.py | 21 +++++++++++++++-- .../migrations/0004_auto_20201216_0724.py | 17 ++++++++++++++ categories/models.py | 17 ++++++++++++++ songs/admin.py | 3 ++- 5 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 artists/migrations/0004_auto_20201216_0724.py create mode 100644 categories/migrations/0004_auto_20201216_0724.py diff --git a/artists/migrations/0004_auto_20201216_0724.py b/artists/migrations/0004_auto_20201216_0724.py new file mode 100644 index 0000000..6eaabbd --- /dev/null +++ b/artists/migrations/0004_auto_20201216_0724.py @@ -0,0 +1,23 @@ +# Generated by Django 3.1.4 on 2020-12-16 07:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('artists', '0003_auto_20201215_2107'), + ] + + operations = [ + migrations.AlterField( + model_name='artist', + name='name', + field=models.CharField(blank=True, max_length=255), + ), + migrations.AlterField( + model_name='artist', + name='romanized_name', + field=models.CharField(blank=True, max_length=255), + ), + ] diff --git a/artists/models.py b/artists/models.py index 4683227..f1bc124 100644 --- a/artists/models.py +++ b/artists/models.py @@ -2,14 +2,31 @@ from django.db import models from django.apps import apps # Create your models here. +class ArtistManager(models.Manager): + def create_or_new(self, romanized_name): + romanized_name = romanized_name.strip() + qs = self.get_queryset().filter(romanized_name__iexact=romanized_name) + if qs.exists(): + return qs.first(), False + return Artist.objects.create(romanized_name=romanized_name), True + + def comma_to_qs(self, artists_str): + final_ids = [] + for artist in artists_str.split(','): + obj, created = self.create_or_new(artist) + final_ids.append(obj.id) + qs = self.get_queryset().filter(id__in=final_ids).distinct() + return qs class Artist(models.Model): - name = models.CharField(max_length=255) - romanized_name = models.CharField(max_length=255) + name = models.CharField(max_length=255,blank=True) + romanized_name = models.CharField(max_length=255,blank=True) aliases = models.ManyToManyField("self",blank=True) category = models.ManyToManyField("categories.Category",blank=True) about_composer = models.TextField(blank=True) about_music = models.TextField(blank=True) + + objects = ArtistManager() def __str__(self): return self.romanized_name diff --git a/categories/migrations/0004_auto_20201216_0724.py b/categories/migrations/0004_auto_20201216_0724.py new file mode 100644 index 0000000..8a959e4 --- /dev/null +++ b/categories/migrations/0004_auto_20201216_0724.py @@ -0,0 +1,17 @@ +# Generated by Django 3.1.4 on 2020-12-16 07:24 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('categories', '0003_auto_20201215_2107'), + ] + + operations = [ + migrations.AlterModelOptions( + name='category', + options={'verbose_name_plural': 'Categories'}, + ), + ] diff --git a/categories/models.py b/categories/models.py index 4ebb0f1..e4f8bf6 100644 --- a/categories/models.py +++ b/categories/models.py @@ -1,11 +1,28 @@ from django.db import models # Create your models here. +class CategoryManager(models.Manager): + def create_or_new(self, name): + name = name.strip() + qs = self.get_queryset().filter(name__iexact=name) + if qs.exists(): + return qs.first(), False + return Category.objects.create(name=name), True + + def comma_to_qs(self, categorys_str): + final_ids = [] + for category in categories_str.split(','): + obj, created = self.create_or_new(category) + final_ids.append(obj.id) + qs = self.get_queryset().filter(id__in=final_ids).distinct() + return qs class Category(models.Model): name = models.CharField(max_length=255) description = models.TextField(blank=True) + objects = CategoryManager() + class Meta: verbose_name_plural = "Categories" diff --git a/songs/admin.py b/songs/admin.py index 4ea6271..f8cca7c 100644 --- a/songs/admin.py +++ b/songs/admin.py @@ -1,5 +1,6 @@ from django.contrib import admin from . import models -# Register your models here. + admin.site.register(models.Song) +admin.site.register(models.OutsideSong)