Added study_groups

This commit is contained in:
Keannu Bernasol 2023-06-27 21:12:03 +08:00
parent c4bca9777c
commit 701dc55e31
16 changed files with 140 additions and 63 deletions

View file

@ -1,9 +1,10 @@
# Generated by Django 4.2.2 on 2023-06-27 09:44 # Generated by Django 4.2.2 on 2023-06-27 13:08
import accounts.models import accounts.models
import django.contrib.auth.models import django.contrib.auth.models
import django.contrib.auth.validators import django.contrib.auth.validators
from django.db import migrations, models from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone import django.utils.timezone
@ -12,6 +13,10 @@ class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
('courses', '0002_initial'),
('semesters', '0001_initial'),
('year_levels', '0001_initial'),
] ]
operations = [ operations = [
@ -34,6 +39,11 @@ class Migration(migrations.Migration):
('is_banned', models.BooleanField(default=False)), ('is_banned', models.BooleanField(default=False)),
('student_id_number', models.CharField(max_length=16, validators=[accounts.models.validate_student_id])), ('student_id_number', models.CharField(max_length=16, validators=[accounts.models.validate_student_id])),
('avatar', models.ImageField(null=True, upload_to=accounts.models.CustomUser._get_upload_to)), ('avatar', models.ImageField(null=True, upload_to=accounts.models.CustomUser._get_upload_to)),
('course', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.course')),
('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')),
('semester', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='semesters.semester')),
('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')),
('year_level', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='year_levels.year_level')),
], ],
options={ options={
'verbose_name': 'user', 'verbose_name': 'user',

View file

@ -1,45 +0,0 @@
# Generated by Django 4.2.2 on 2023-06-27 09:44
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
('year_levels', '0001_initial'),
('semesters', '0001_initial'),
('accounts', '0001_initial'),
('courses', '0002_initial'),
]
operations = [
migrations.AddField(
model_name='customuser',
name='course',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.course'),
),
migrations.AddField(
model_name='customuser',
name='groups',
field=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'),
),
migrations.AddField(
model_name='customuser',
name='semester',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='semesters.semester'),
),
migrations.AddField(
model_name='customuser',
name='user_permissions',
field=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'),
),
migrations.AddField(
model_name='customuser',
name='year_level',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='year_levels.year_level'),
),
]

View file

@ -1,15 +1,13 @@
import time
from django.contrib.auth.models import AbstractUser from django.contrib.auth.models import AbstractUser
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.utils.text import slugify from django.utils.text import slugify
from django.db import models from django.db import models
import os
from courses.models import Course from courses.models import Course
from year_levels.models import Year_Level from year_levels.models import Year_Level
from semesters.models import Semester from semesters.models import Semester
from django.db.models.signals import post_migrate from django.db.models.signals import post_migrate
from django.dispatch import receiver from django.dispatch import receiver
from dotenv import load_dotenv import os
def validate_student_id(value): def validate_student_id(value):

View file

@ -67,6 +67,7 @@ INSTALLED_APPS = [
'year_levels', 'year_levels',
'semesters', 'semesters',
'subjects', 'subjects',
'study_groups',
] ]
MIDDLEWARE = [ MIDDLEWARE = [

View file

@ -1,4 +1,4 @@
# Generated by Django 4.2.2 on 2023-06-27 09:44 # Generated by Django 4.2.2 on 2023-06-27 13:08
from django.conf import settings from django.conf import settings
from django.db import migrations, models from django.db import migrations, models

View file

@ -0,0 +1,22 @@
# Generated by Django 4.2.2 on 2023-06-27 13:08
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('study_groups', '0001_initial'),
('student_status', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='studentstatus',
name='study_group',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='study_groups.studygroup'),
),
]

View file

@ -0,0 +1,20 @@
# Generated by Django 4.2.2 on 2023-06-27 13:10
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('subjects', '0001_initial'),
('student_status', '0002_initial'),
]
operations = [
migrations.AlterField(
model_name='studentstatus',
name='subject',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='subjects.subject'),
),
]

View file

@ -1,26 +1,18 @@
from django.db import models from django.db import models
from accounts.models import CustomUser from accounts.models import CustomUser
from study_groups.models import StudyGroup
# Create your models here. # Create your models here.
class StudentStatus(models.Model): class StudentStatus(models.Model):
YEAR_LEVELS = (
('1st', '1st year'),
('2nd', '2nd year'),
('3rd', '3rd year'),
('4th', '4th year'),
('5th', '5th Year'),
('Irreg', 'Irregular'),
)
SEMESTERS = (
('1st', '1st semester'),
('2nd', '2nd semester'),
)
user = models.OneToOneField( user = models.OneToOneField(
CustomUser, on_delete=models.CASCADE, primary_key=True) CustomUser, on_delete=models.CASCADE, primary_key=True)
x = models.FloatField(null=True) x = models.FloatField(null=True)
y = models.FloatField(null=True) y = models.FloatField(null=True)
subject = models.CharField(max_length=100, null=True) subject = models.ForeignKey(
'subjects.Subject', on_delete=models.CASCADE, null=True)
active = models.BooleanField(default=False) active = models.BooleanField(default=False)
timestamp = models.DateField(auto_now_add=True) timestamp = models.DateField(auto_now_add=True)
study_group = models.ForeignKey(
StudyGroup, on_delete=models.SET_NULL, null=True)

View file

View file

@ -0,0 +1,6 @@
from django.contrib import admin
from .models import StudyGroup, StudyGroupMembership
admin.site.register(StudyGroup)
admin.site.register(StudyGroupMembership)

View file

@ -0,0 +1,6 @@
from django.apps import AppConfig
class StudyGroupsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'study_groups'

View file

@ -0,0 +1,41 @@
# Generated by Django 4.2.2 on 2023-06-27 13:08
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('student_status', '0001_initial'),
('subjects', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='StudyGroup',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('x', models.FloatField(null=True)),
('y', models.FloatField(null=True)),
('active', models.BooleanField(default=False)),
('timestamp', models.DateField(auto_now_add=True)),
('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='subjects.subject')),
],
),
migrations.CreateModel(
name='StudyGroupMembership',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('study_group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='study_groups.studygroup')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='student_status.studentstatus')),
],
),
migrations.AddField(
model_name='studygroup',
name='users',
field=models.ManyToManyField(through='study_groups.StudyGroupMembership', to='student_status.studentstatus'),
),
]

View file

@ -0,0 +1,20 @@
from django.db import models
from subjects.models import Subject
# Create your models here.
class StudyGroup(models.Model):
users = models.ManyToManyField(
'student_status.StudentStatus', through='StudyGroupMembership')
x = models.FloatField(null=True)
y = models.FloatField(null=True)
subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
active = models.BooleanField(default=False)
timestamp = models.DateField(auto_now_add=True)
class StudyGroupMembership(models.Model):
user = models.ForeignKey(
'student_status.StudentStatus', on_delete=models.CASCADE)
study_group = models.ForeignKey(
'study_groups.StudyGroup', on_delete=models.CASCADE)

View file

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

View file

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.