diff --git a/.flake8 b/.flake8 index ad98539..c68b5ec 100644 --- a/.flake8 +++ b/.flake8 @@ -1,3 +1,3 @@ [flake8] -max-line-length = 100 +max-line-length = 150 extend-ignore = E203 diff --git a/API/API/settings.py b/API/API/settings.py index f3a876e..065f9e5 100644 --- a/API/API/settings.py +++ b/API/API/settings.py @@ -42,6 +42,8 @@ "django.contrib.messages", "django.contrib.staticfiles", "rest_framework", + "back_api", + "user_model", ] MIDDLEWARE = [ @@ -86,6 +88,9 @@ } +# Custom User Class +AUTH_USER_MODEL = "user_model.CustomUserClass" + # Password validation # https://docs.djangoproject.com/en/5.1/ref/settings/#auth-password-validators diff --git a/API/back_api/__init__.py b/API/back_api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/API/back_api/admin.py b/API/back_api/admin.py new file mode 100644 index 0000000..4185d36 --- /dev/null +++ b/API/back_api/admin.py @@ -0,0 +1,3 @@ +# from django.contrib import admin + +# Register your models here. diff --git a/API/back_api/apps.py b/API/back_api/apps.py new file mode 100644 index 0000000..95f9bb4 --- /dev/null +++ b/API/back_api/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class BackApiConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "back_api" diff --git a/API/back_api/migrations/__init__.py b/API/back_api/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/API/back_api/models.py b/API/back_api/models.py new file mode 100644 index 0000000..0b4331b --- /dev/null +++ b/API/back_api/models.py @@ -0,0 +1,3 @@ +# from django.db import models + +# Create your models here. diff --git a/API/back_api/tests.py b/API/back_api/tests.py new file mode 100644 index 0000000..a79ca8b --- /dev/null +++ b/API/back_api/tests.py @@ -0,0 +1,3 @@ +# from django.test import TestCase + +# Create your tests here. diff --git a/API/back_api/views.py b/API/back_api/views.py new file mode 100644 index 0000000..fd0e044 --- /dev/null +++ b/API/back_api/views.py @@ -0,0 +1,3 @@ +# from django.shortcuts import render + +# Create your views here. diff --git a/API/user_model/__init__.py b/API/user_model/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/API/user_model/admin.py b/API/user_model/admin.py new file mode 100644 index 0000000..4185d36 --- /dev/null +++ b/API/user_model/admin.py @@ -0,0 +1,3 @@ +# from django.contrib import admin + +# Register your models here. diff --git a/API/user_model/apps.py b/API/user_model/apps.py new file mode 100644 index 0000000..608e524 --- /dev/null +++ b/API/user_model/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class UserModelConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "user_model" diff --git a/API/user_model/migrations/0001_initial.py b/API/user_model/migrations/0001_initial.py new file mode 100644 index 0000000..0556cac --- /dev/null +++ b/API/user_model/migrations/0001_initial.py @@ -0,0 +1,132 @@ +# Generated by Django 5.2.8 on 2025-11-29 22:49 + +import django.contrib.auth.models +import django.contrib.auth.validators +import django.utils.timezone +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ("auth", "0012_alter_user_first_name_max_length"), + ] + + operations = [ + migrations.CreateModel( + name="CustomUserClass", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("password", models.CharField(max_length=128, verbose_name="password")), + ( + "last_login", + models.DateTimeField( + blank=True, null=True, verbose_name="last login" + ), + ), + ( + "is_superuser", + models.BooleanField( + default=False, + help_text="Designates that this user has all permissions without explicitly assigning them.", + verbose_name="superuser status", + ), + ), + ( + "username", + models.CharField( + error_messages={ + "unique": "A user with that username already exists." + }, + help_text="Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.", + max_length=150, + unique=True, + validators=[ + django.contrib.auth.validators.UnicodeUsernameValidator() + ], + verbose_name="username", + ), + ), + ( + "first_name", + models.CharField( + blank=True, max_length=150, verbose_name="first name" + ), + ), + ( + "last_name", + models.CharField( + blank=True, max_length=150, verbose_name="last name" + ), + ), + ( + "email", + models.EmailField( + blank=True, max_length=254, verbose_name="email address" + ), + ), + ( + "is_staff", + models.BooleanField( + default=False, + help_text="Designates whether the user can log into this admin site.", + verbose_name="staff status", + ), + ), + ( + "is_active", + models.BooleanField( + default=True, + help_text="Designates whether this user should be treated as active. Unselect this instead of deleting accounts.", + verbose_name="active", + ), + ), + ( + "date_joined", + models.DateTimeField( + default=django.utils.timezone.now, verbose_name="date joined" + ), + ), + ( + "groups", + models.ManyToManyField( + blank=True, + help_text="The groups this user belongs to. A user will get all permissions granted to each of their groups.", + related_name="user_set", + related_query_name="user", + to="auth.group", + verbose_name="groups", + ), + ), + ( + "user_permissions", + models.ManyToManyField( + blank=True, + help_text="Specific permissions for this user.", + related_name="user_set", + related_query_name="user", + to="auth.permission", + verbose_name="user permissions", + ), + ), + ], + options={ + "verbose_name": "user", + "verbose_name_plural": "users", + "abstract": False, + }, + managers=[ + ("objects", django.contrib.auth.models.UserManager()), + ], + ), + ] diff --git a/API/user_model/migrations/__init__.py b/API/user_model/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/API/user_model/models.py b/API/user_model/models.py new file mode 100644 index 0000000..eabf944 --- /dev/null +++ b/API/user_model/models.py @@ -0,0 +1,12 @@ +from django.contrib.auth.models import AbstractUser + +# from django.db import models + +# Create your models here. + + +class CustomUserClass(AbstractUser): + pass + + def __str__(self): + return self.username diff --git a/API/user_model/tests.py b/API/user_model/tests.py new file mode 100644 index 0000000..a79ca8b --- /dev/null +++ b/API/user_model/tests.py @@ -0,0 +1,3 @@ +# from django.test import TestCase + +# Create your tests here. diff --git a/API/user_model/views.py b/API/user_model/views.py new file mode 100644 index 0000000..fd0e044 --- /dev/null +++ b/API/user_model/views.py @@ -0,0 +1,3 @@ +# from django.shortcuts import render + +# Create your views here.