From d724e03c3caca7d1104bbf010e0ae595889f4a99 Mon Sep 17 00:00:00 2001 From: Disco DeDisco Date: Fri, 30 Jan 2026 15:04:47 -0500 Subject: [PATCH] custom user model that maintains id as pk --- src/apps/lyric/apps.py | 2 +- src/apps/lyric/migrations/0001_initial.py | 21 +++++++++++++++++++++ src/apps/lyric/models.py | 9 ++++++++- src/apps/lyric/tests.py | 3 --- src/apps/lyric/tests/__init__.py | 0 src/apps/lyric/tests/test_models.py | 15 +++++++++++++++ src/core/settings.py | 3 +++ 7 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 src/apps/lyric/migrations/0001_initial.py delete mode 100644 src/apps/lyric/tests.py create mode 100644 src/apps/lyric/tests/__init__.py create mode 100644 src/apps/lyric/tests/test_models.py diff --git a/src/apps/lyric/apps.py b/src/apps/lyric/apps.py index 618476d..6ddce13 100644 --- a/src/apps/lyric/apps.py +++ b/src/apps/lyric/apps.py @@ -2,4 +2,4 @@ from django.apps import AppConfig class LyricConfig(AppConfig): - name = 'lyric' + name = 'apps.lyric' diff --git a/src/apps/lyric/migrations/0001_initial.py b/src/apps/lyric/migrations/0001_initial.py new file mode 100644 index 0000000..8225462 --- /dev/null +++ b/src/apps/lyric/migrations/0001_initial.py @@ -0,0 +1,21 @@ +# Generated by Django 6.0 on 2026-01-30 20:02 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('email', models.EmailField(max_length=254, unique=True)), + ], + ), + ] diff --git a/src/apps/lyric/models.py b/src/apps/lyric/models.py index 71a8362..a629e80 100644 --- a/src/apps/lyric/models.py +++ b/src/apps/lyric/models.py @@ -1,3 +1,10 @@ from django.db import models -# Create your models here. +class User(models.Model): + # email = models.EmailField(primary_key=True) + email = models.EmailField(unique=True) + + REQUIRED_FIELDS = [] + USERNAME_FIELD = "email" + is_anonymous = False + is_authenticated = True diff --git a/src/apps/lyric/tests.py b/src/apps/lyric/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/src/apps/lyric/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/src/apps/lyric/tests/__init__.py b/src/apps/lyric/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/apps/lyric/tests/test_models.py b/src/apps/lyric/tests/test_models.py new file mode 100644 index 0000000..19ccd9e --- /dev/null +++ b/src/apps/lyric/tests/test_models.py @@ -0,0 +1,15 @@ +from django.contrib import auth +from django.test import TestCase +from ..models import User + +class UserModelTest(TestCase): + def test_model_is_configured_for_django_auth(self): + self.assertEqual(auth.get_user_model(), User) + + def test_user_is_valid_with_email_only(self): + user = User(email="a@b.cde") + user.full_clean() # should not raise + + def test_id_is_primary_key(self): + user = User(id="123") + self.assertEqual(user.pk, "123") diff --git a/src/core/settings.py b/src/core/settings.py index f8249df..e0f2038 100644 --- a/src/core/settings.py +++ b/src/core/settings.py @@ -47,6 +47,7 @@ INSTALLED_APPS = [ 'django.contrib.staticfiles', # Custom apps 'apps.dashboard', + 'apps.lyric', # Depend apps ] @@ -110,6 +111,8 @@ AUTH_PASSWORD_VALIDATORS = [ }, ] +AUTH_USER_MODEL = "lyric.User" + # Internationalization # https://docs.djangoproject.com/en/6.0/topics/i18n/