Skip to content

Commit 63a27ad

Browse files
authored
Merge pull request #11 from DevOps-Cloud-Team5/SCRUM-39-profile-page-stuff
Scrum 39 profile page stuff
2 parents 7189e1f + 82b0160 commit 63a27ad

5 files changed

+25
-79
lines changed

api/migrations/0001_initial.py

+13-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
# Generated by Django 5.0.2 on 2024-03-05 12:00
1+
# Generated by Django 5.0.2 on 2024-03-07 22:24
22

33
import django.contrib.auth.models
44
import django.contrib.auth.validators
5+
import django.db.models.deletion
6+
from django.conf import settings
57
from django.db import migrations, models
68

79

@@ -23,7 +25,7 @@ class Migration(migrations.Migration):
2325
('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')),
2426
('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')),
2527
('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')),
26-
('role', models.CharField(choices=[('student', 'Student'), ('teacher', 'Teacher'), ('admin', 'Admin')], default='student', max_length=7)),
28+
('role', models.CharField(choices=[('S', 'Student'), ('T', 'Teacher'), ('A', 'Admin')], default='S', max_length=1)),
2729
],
2830
options={
2931
'abstract': False,
@@ -35,11 +37,17 @@ class Migration(migrations.Migration):
3537
migrations.CreateModel(
3638
name='Course',
3739
fields=[
38-
('course_id', models.CharField(max_length=50, primary_key=True, serialize=False)),
40+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
3941
('course_name', models.CharField(max_length=50)),
4042
('schedule', models.JSONField(default=list)),
41-
('enrolled_students', models.JSONField(default=list)),
42-
('teachers', models.JSONField(default=list)),
43+
],
44+
),
45+
migrations.CreateModel(
46+
name='UserCourse',
47+
fields=[
48+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
49+
('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='course', to='api.course')),
50+
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user', to=settings.AUTH_USER_MODEL)),
4351
],
4452
),
4553
]

api/migrations/0002_user_courses.py api/migrations/0002_user_force_pw_change.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Generated by Django 5.0.2 on 2024-03-05 12:18
1+
# Generated by Django 5.0.2 on 2024-03-07 22:25
22

33
from django.db import migrations, models
44

@@ -12,7 +12,7 @@ class Migration(migrations.Migration):
1212
operations = [
1313
migrations.AddField(
1414
model_name='user',
15-
name='courses',
16-
field=models.JSONField(blank=True, default=list),
15+
name='force_pw_change',
16+
field=models.BooleanField(default=False),
1717
),
1818
]

api/migrations/0003_remove_course_course_id_and_more.py

-65
This file was deleted.

api/models.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class AccountRoles(models.TextChoices):
1919
ADMIN = "A", "Admin"
2020

2121
class User(AbstractBaseUser):
22-
user_id = models.BigAutoField(primary_key=True)
22+
2323
username = models.CharField(
2424
("username"),
2525
max_length=150,
@@ -31,7 +31,7 @@ class User(AbstractBaseUser):
3131
first_name = models.CharField(("first name"), max_length=150, blank=True)
3232
last_name = models.CharField(("last name"), max_length=150, blank=True)
3333
email = models.EmailField(("email address"), blank=True)
34-
force_pw_change = models.BinaryField(("force the user to change password"), default=False)
34+
force_pw_change = models.BooleanField(default=False)
3535

3636
role = models.CharField(
3737
max_length=1,
@@ -50,7 +50,7 @@ def clean(self):
5050
self.email = self.__class__.objects.normalize_email(self.email)
5151

5252
def get_classes(self):
53-
return [uc.course for uc in UserCourse.objects.filter(user__user_id=self.user_id)]
53+
return [uc.course for uc in UserCourse.objects.filter(user__id=self.id)]
5454

5555

5656
class Course(models.Model):

api/views.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@
1313
from drf_spectacular.utils import extend_schema, OpenApiResponse
1414

1515
from .permissions import IsTeacher, IsAdmin, IsStudent
16-
from .models import Course
16+
from .models import Course, AccountRoles
1717
from .serializers import CustomTokenSerializer, CreateUserSerializer, UserSerializer, CourseCreateSerializer, CourseSerializer
1818

19+
import pdb
20+
1921

2022
User = get_user_model()
2123
__ROOT__ = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@@ -39,14 +41,15 @@ def test(request):
3941
# Ideally a better method should be used to create the first admin account, but useful for debugging
4042
def genAdmin(request):
4143
queryset = User.objects.all()
42-
admins = UserSerializer(queryset.filter(role="admin"), many=True)
44+
# pdb.set_trace()
45+
admins = UserSerializer(queryset.filter(role= AccountRoles.ADMIN), many=True)
4346
default_admin = UserSerializer(queryset.filter(username="admin"), many=True)
4447
if len(admins.data) + len(default_admin.data) != 0:
4548
return JsonResponse({"error": "admin account already setup"}, status=status.HTTP_403_FORBIDDEN)
4649

4750
user = User.objects.create(
4851
username='admin',
49-
role='admin'
52+
role=AccountRoles.ADMIN
5053
)
5154
user.set_password('adminadmin')
5255
user.save()

0 commit comments

Comments
 (0)