Skip to content

Commit

Permalink
Use abstract user instead of Person
Browse files Browse the repository at this point in the history
  • Loading branch information
axellorreyne committed Mar 1, 2024
1 parent d3dc622 commit 140c726
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 11 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Generated by Django 5.0.2 on 2024-03-01 17:24

import django.contrib.auth.models
import django.contrib.auth.validators
import django.db.models.deletion
import django.utils.timezone
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
('users', '0003_student_project'),
]

operations = [
migrations.CreateModel(
name='User',
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',
'db_table': 'auth_user',
'abstract': False,
},
managers=[
('objects', django.contrib.auth.models.UserManager()),
],
),
migrations.AlterField(
model_name='student',
name='id',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='teacher',
name='id',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL),
),
migrations.DeleteModel(
name='Person',
),
]
17 changes: 8 additions & 9 deletions backend/pigeonhole/apps/users/models.py
Original file line number Diff line number Diff line change
@@ -1,29 +1,28 @@
from django.contrib.auth.models import AbstractUser
from django.db import models
from rest_framework import serializers

from backend.pigeonhole.apps.courses.models import Course
from backend.pigeonhole.apps.projects.models import Project


class Person(models.Model):
person_id = models.BigAutoField(primary_key=True)
e_mail = models.CharField(max_length=256)
first_name = models.CharField(max_length=64)
last_name = models.CharField(max_length=64)
class User(AbstractUser):
class Meta(AbstractUser.Meta):
db_table = "auth_user"

@property
def name(self):
return f"{self.first_name.strip()} {self.last_name.strip()}"


class PersonSerializer(serializers.ModelSerializer):
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = Person
model = User
fields = ['id', 'e_mail', 'first_name', 'last_name']


class Student(models.Model):
id = models.ForeignKey(Person, on_delete=models.CASCADE, primary_key=True)
id = models.ForeignKey(User, on_delete=models.CASCADE, primary_key=True)
number = models.IntegerField()
project = models.ManyToManyField(Project)
course = models.ManyToManyField(Course)
Expand All @@ -36,7 +35,7 @@ class Meta:


class Teacher(models.Model):
id = models.ForeignKey(Person, on_delete=models.CASCADE, primary_key=True)
id = models.ForeignKey(User, on_delete=models.CASCADE, primary_key=True)
course = models.ManyToManyField(Course)
is_admin = models.BooleanField(default=False)
is_assistent = models.BooleanField(default=False)
Expand Down
2 changes: 2 additions & 0 deletions backend/pigeonhole/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@
CORS_ORIGIN_ALLOW_ALL = True # For now
CORS_ALLOW_CREDENTIALS = True

AUTH_USER_MODEL = "users.User"

ROOT_URLCONF = 'backend.pigeonhole.urls'

TEMPLATES = [
Expand Down
5 changes: 4 additions & 1 deletion backend/testapi/serializers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
from django.contrib.auth.models import Group, User
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from rest_framework import serializers

User = get_user_model()


class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
Expand Down
5 changes: 4 additions & 1 deletion backend/testapi/views.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
from django.contrib.auth.models import Group, User
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from rest_framework import permissions, viewsets

from backend.testapi.serializers import UserSerializer, GroupSerializer

User = get_user_model()


class UserViewSet(viewsets.ModelViewSet):
"""
Expand Down

0 comments on commit 140c726

Please sign in to comment.