Rename app to
This commit is contained in:
parent
a2c969e3e4
commit
e9e1ae2970
@ -7,7 +7,7 @@ from django.views.generic import CreateView, ListView
|
||||
from django.db.models import Q
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.contrib.auth.forms import PasswordChangeForm
|
||||
from app.models import Session, Semester
|
||||
from core.models import Session, Semester
|
||||
from course.models import Course
|
||||
from result.models import TakenCourse
|
||||
from .decorators import admin_required
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class AppConfig(AppConfig):
|
||||
name = "app"
|
||||
@ -1,45 +0,0 @@
|
||||
# Generated by Django 2.2.3 on 2020-07-29 15:25
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='NewsAndEvents',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('title', models.CharField(max_length=200, null=True)),
|
||||
('summary', models.TextField(blank=True, max_length=200, null=True)),
|
||||
('posted_as', models.CharField(choices=[('News', 'News'), ('Event', 'Event')], max_length=10)),
|
||||
('updated_date', models.DateTimeField(auto_now=True, null=True)),
|
||||
('upload_time', models.DateTimeField(auto_now_add=True, null=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Session',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('session', models.CharField(max_length=200, unique=True)),
|
||||
('is_current_session', models.BooleanField(blank=True, default=False, null=True)),
|
||||
('next_session_begins', models.DateField(blank=True, null=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Semester',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('semester', models.CharField(blank=True, choices=[('First', 'First'), ('Second', 'Second'), ('Third', 'Third')], max_length=10)),
|
||||
('is_current_semester', models.BooleanField(blank=True, default=False, null=True)),
|
||||
('next_semester_begins', models.DateField(blank=True, null=True)),
|
||||
('session', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.Session')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@ -1,18 +0,0 @@
|
||||
# Generated by Django 2.2.3 on 2020-07-30 04:46
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='semester',
|
||||
name='semester',
|
||||
field=models.CharField(blank=True, choices=[('First', 'First'), ('Second', 'Second'), ('Third', 'Third')], max_length=10, unique=True),
|
||||
),
|
||||
]
|
||||
@ -1,18 +0,0 @@
|
||||
# Generated by Django 2.2.3 on 2020-07-30 04:56
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0002_auto_20200730_0746'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='semester',
|
||||
name='semester',
|
||||
field=models.CharField(blank=True, choices=[('First', 'First'), ('Second', 'Second'), ('Third', 'Third')], max_length=10),
|
||||
),
|
||||
]
|
||||
@ -1,28 +0,0 @@
|
||||
# Generated by Django 4.1.6 on 2023-02-01 12:30
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('app', '0003_auto_20200730_0756'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='newsandevents',
|
||||
name='id',
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='semester',
|
||||
name='id',
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='session',
|
||||
name='id',
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
]
|
||||
@ -53,7 +53,7 @@ THIRD_PARTY_APPS = [
|
||||
|
||||
# Custom apps
|
||||
PROJECT_APPS = [
|
||||
"app.apps.AppConfig",
|
||||
"core.apps.CoreConfig",
|
||||
"accounts.apps.AccountsConfig",
|
||||
"course.apps.CourseConfig",
|
||||
"result.apps.ResultConfig",
|
||||
|
||||
@ -11,7 +11,7 @@ urlpatterns = [
|
||||
path(
|
||||
"jet/dashboard/", include("jet.dashboard.urls", "jet-dashboard")
|
||||
), # Django JET dashboard URLS
|
||||
path("", include("app.urls")),
|
||||
path("", include("core.urls")),
|
||||
path("accounts/", include("accounts.urls")),
|
||||
path("programs/", include("course.urls")),
|
||||
path("result/", include("result.urls")),
|
||||
|
||||
5
core/apps.py
Normal file
5
core/apps.py
Normal file
@ -0,0 +1,5 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class CoreConfig(AppConfig):
|
||||
name = "core"
|
||||
97
core/migrations/0001_initial.py
Normal file
97
core/migrations/0001_initial.py
Normal file
@ -0,0 +1,97 @@
|
||||
# Generated by Django 2.2.3 on 2020-07-29 15:25
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
initial = True
|
||||
|
||||
dependencies = []
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="NewsAndEvents",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("title", models.CharField(max_length=200, null=True)),
|
||||
("summary", models.TextField(blank=True, max_length=200, null=True)),
|
||||
(
|
||||
"posted_as",
|
||||
models.CharField(
|
||||
choices=[("News", "News"), ("Event", "Event")], max_length=10
|
||||
),
|
||||
),
|
||||
("updated_date", models.DateTimeField(auto_now=True, null=True)),
|
||||
("upload_time", models.DateTimeField(auto_now_add=True, null=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Session",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("session", models.CharField(max_length=200, unique=True)),
|
||||
(
|
||||
"is_current_session",
|
||||
models.BooleanField(blank=True, default=False, null=True),
|
||||
),
|
||||
("next_session_begins", models.DateField(blank=True, null=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Semester",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"semester",
|
||||
models.CharField(
|
||||
blank=True,
|
||||
choices=[
|
||||
("First", "First"),
|
||||
("Second", "Second"),
|
||||
("Third", "Third"),
|
||||
],
|
||||
max_length=10,
|
||||
),
|
||||
),
|
||||
(
|
||||
"is_current_semester",
|
||||
models.BooleanField(blank=True, default=False, null=True),
|
||||
),
|
||||
("next_semester_begins", models.DateField(blank=True, null=True)),
|
||||
(
|
||||
"session",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="core.Session",
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
]
|
||||
22
core/migrations/0002_auto_20200730_0746.py
Normal file
22
core/migrations/0002_auto_20200730_0746.py
Normal file
@ -0,0 +1,22 @@
|
||||
# Generated by Django 2.2.3 on 2020-07-30 04:46
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("core", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="semester",
|
||||
name="semester",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
choices=[("First", "First"), ("Second", "Second"), ("Third", "Third")],
|
||||
max_length=10,
|
||||
unique=True,
|
||||
),
|
||||
),
|
||||
]
|
||||
21
core/migrations/0003_auto_20200730_0756.py
Normal file
21
core/migrations/0003_auto_20200730_0756.py
Normal file
@ -0,0 +1,21 @@
|
||||
# Generated by Django 2.2.3 on 2020-07-30 04:56
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("core", "0002_auto_20200730_0746"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="semester",
|
||||
name="semester",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
choices=[("First", "First"), ("Second", "Second"), ("Third", "Third")],
|
||||
max_length=10,
|
||||
),
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,33 @@
|
||||
# Generated by Django 4.1.6 on 2023-02-01 12:30
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("core", "0003_auto_20200730_0756"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="newsandevents",
|
||||
name="id",
|
||||
field=models.BigAutoField(
|
||||
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="semester",
|
||||
name="id",
|
||||
field=models.BigAutoField(
|
||||
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="session",
|
||||
name="id",
|
||||
field=models.BigAutoField(
|
||||
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
||||
),
|
||||
),
|
||||
]
|
||||
@ -18,7 +18,7 @@ def home_view(request):
|
||||
"title": "News & Events",
|
||||
"items": items,
|
||||
}
|
||||
return render(request, "app/index.html", context)
|
||||
return render(request, "core/index.html", context)
|
||||
|
||||
|
||||
@login_required
|
||||
@ -37,7 +37,7 @@ def post_add(request):
|
||||
form = NewsAndEventsForm()
|
||||
return render(
|
||||
request,
|
||||
"app/post_add.html",
|
||||
"core/post_add.html",
|
||||
{
|
||||
"title": "Add Post",
|
||||
"form": form,
|
||||
@ -63,7 +63,7 @@ def edit_post(request, pk):
|
||||
form = NewsAndEventsForm(instance=instance)
|
||||
return render(
|
||||
request,
|
||||
"app/post_add.html",
|
||||
"core/post_add.html",
|
||||
{
|
||||
"title": "Edit Post",
|
||||
"form": form,
|
||||
@ -89,7 +89,7 @@ def delete_post(request, pk):
|
||||
def session_list_view(request):
|
||||
"""Show list of all sessions"""
|
||||
sessions = Session.objects.all().order_by("-is_current_session", "-session")
|
||||
return render(request, "app/session_list.html", {"sessions": sessions})
|
||||
return render(request, "core/session_list.html", {"sessions": sessions})
|
||||
|
||||
|
||||
@login_required
|
||||
@ -121,7 +121,7 @@ def session_add_view(request):
|
||||
|
||||
else:
|
||||
form = SessionForm()
|
||||
return render(request, "app/session_update.html", {"form": form})
|
||||
return render(request, "core/session_update.html", {"form": form})
|
||||
|
||||
|
||||
@login_required
|
||||
@ -153,7 +153,7 @@ def session_update_view(request, pk):
|
||||
|
||||
else:
|
||||
form = SessionForm(instance=session)
|
||||
return render(request, "app/session_update.html", {"form": form})
|
||||
return render(request, "core/session_update.html", {"form": form})
|
||||
|
||||
|
||||
@login_required
|
||||
@ -182,7 +182,7 @@ def semester_list_view(request):
|
||||
semesters = Semester.objects.all().order_by("-is_current_semester", "-semester")
|
||||
return render(
|
||||
request,
|
||||
"app/semester_list.html",
|
||||
"core/semester_list.html",
|
||||
{
|
||||
"semesters": semesters,
|
||||
},
|
||||
@ -244,7 +244,7 @@ def semester_add_view(request):
|
||||
return redirect("semester_list")
|
||||
else:
|
||||
form = SemesterForm()
|
||||
return render(request, "app/semester_update.html", {"form": form})
|
||||
return render(request, "core/semester_update.html", {"form": form})
|
||||
|
||||
|
||||
@login_required
|
||||
@ -278,7 +278,7 @@ def semester_update_view(request, pk):
|
||||
|
||||
else:
|
||||
form = SemesterForm(instance=semester)
|
||||
return render(request, "app/semester_update.html", {"form": form})
|
||||
return render(request, "core/semester_update.html", {"form": form})
|
||||
|
||||
|
||||
@login_required
|
||||
@ -297,4 +297,4 @@ def semester_delete_view(request, pk):
|
||||
@login_required
|
||||
@admin_required
|
||||
def dashboard_view(request):
|
||||
return render(request, "app/dashboard.html")
|
||||
return render(request, "core/dashboard.html")
|
||||
@ -7,61 +7,177 @@ import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('app', '0001_initial'),
|
||||
("core", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Course',
|
||||
name="Course",
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('slug', models.SlugField(blank=True, unique=True)),
|
||||
('title', models.CharField(max_length=200, null=True)),
|
||||
('code', models.CharField(max_length=200, null=True, unique=True)),
|
||||
('credit', models.IntegerField(default=0, null=True)),
|
||||
('summary', models.TextField(blank=True, max_length=200, null=True)),
|
||||
('level', models.CharField(choices=[('Level course', 'Level course'), ('Bachloar', 'Bachloar'), ('Master', 'Master')], max_length=25, null=True)),
|
||||
('year', models.IntegerField(choices=[(1, '1'), (2, '2'), (3, '3'), (4, '4'), (4, '5'), (4, '6')], default=0)),
|
||||
('semester', models.CharField(choices=[('First', 'First'), ('Second', 'Second'), ('Third', 'Third')], max_length=200)),
|
||||
('is_elective', models.BooleanField(blank=True, default=False, null=True)),
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("slug", models.SlugField(blank=True, unique=True)),
|
||||
("title", models.CharField(max_length=200, null=True)),
|
||||
("code", models.CharField(max_length=200, null=True, unique=True)),
|
||||
("credit", models.IntegerField(default=0, null=True)),
|
||||
("summary", models.TextField(blank=True, max_length=200, null=True)),
|
||||
(
|
||||
"level",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("Level course", "Level course"),
|
||||
("Bachloar", "Bachloar"),
|
||||
("Master", "Master"),
|
||||
],
|
||||
max_length=25,
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"year",
|
||||
models.IntegerField(
|
||||
choices=[
|
||||
(1, "1"),
|
||||
(2, "2"),
|
||||
(3, "3"),
|
||||
(4, "4"),
|
||||
(4, "5"),
|
||||
(4, "6"),
|
||||
],
|
||||
default=0,
|
||||
),
|
||||
),
|
||||
(
|
||||
"semester",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("First", "First"),
|
||||
("Second", "Second"),
|
||||
("Third", "Third"),
|
||||
],
|
||||
max_length=200,
|
||||
),
|
||||
),
|
||||
(
|
||||
"is_elective",
|
||||
models.BooleanField(blank=True, default=False, null=True),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Program',
|
||||
name="Program",
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('title', models.CharField(max_length=150, unique=True)),
|
||||
('summary', models.TextField(blank=True, null=True)),
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("title", models.CharField(max_length=150, unique=True)),
|
||||
("summary", models.TextField(blank=True, null=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Upload',
|
||||
name="Upload",
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('title', models.CharField(max_length=100)),
|
||||
('file', models.FileField(upload_to='course_files/', validators=[django.core.validators.FileExtensionValidator(['pdf', 'docx', 'doc', 'xls', 'xlsx', 'ppt', 'pptx', 'zip', 'rar', '7zip'])])),
|
||||
('updated_date', models.DateTimeField(auto_now=True, null=True)),
|
||||
('upload_time', models.DateTimeField(auto_now_add=True, null=True)),
|
||||
('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.Course')),
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("title", models.CharField(max_length=100)),
|
||||
(
|
||||
"file",
|
||||
models.FileField(
|
||||
upload_to="course_files/",
|
||||
validators=[
|
||||
django.core.validators.FileExtensionValidator(
|
||||
[
|
||||
"pdf",
|
||||
"docx",
|
||||
"doc",
|
||||
"xls",
|
||||
"xlsx",
|
||||
"ppt",
|
||||
"pptx",
|
||||
"zip",
|
||||
"rar",
|
||||
"7zip",
|
||||
]
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
("updated_date", models.DateTimeField(auto_now=True, null=True)),
|
||||
("upload_time", models.DateTimeField(auto_now_add=True, null=True)),
|
||||
(
|
||||
"course",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE, to="course.Course"
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CourseAllocation',
|
||||
name="CourseAllocation",
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('courses', models.ManyToManyField(related_name='allocated_course', to='course.Course')),
|
||||
('lecturer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='allocated_lecturer', to=settings.AUTH_USER_MODEL)),
|
||||
('session', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.Session')),
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"courses",
|
||||
models.ManyToManyField(
|
||||
related_name="allocated_course", to="course.Course"
|
||||
),
|
||||
),
|
||||
(
|
||||
"lecturer",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="allocated_lecturer",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
(
|
||||
"session",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="core.Session",
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='course',
|
||||
name='program',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.Program'),
|
||||
model_name="course",
|
||||
name="program",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE, to="course.Program"
|
||||
),
|
||||
),
|
||||
]
|
||||
|
||||
@ -8,7 +8,6 @@ from django.db.models import Q
|
||||
# project import
|
||||
from .utils import *
|
||||
|
||||
|
||||
YEARS = (
|
||||
(1, "1"),
|
||||
(2, "2"),
|
||||
@ -101,7 +100,7 @@ class Course(models.Model):
|
||||
|
||||
@property
|
||||
def is_current_semester(self):
|
||||
from app.models import Semester
|
||||
from core.models import Semester
|
||||
|
||||
current_semester = Semester.objects.get(is_current_semester=True)
|
||||
|
||||
@ -127,7 +126,7 @@ class CourseAllocation(models.Model):
|
||||
)
|
||||
courses = models.ManyToManyField(Course, related_name="allocated_course")
|
||||
session = models.ForeignKey(
|
||||
"app.Session", on_delete=models.CASCADE, blank=True, null=True
|
||||
"core.Session", on_delete=models.CASCADE, blank=True, null=True
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
|
||||
@ -9,7 +9,7 @@ from django.utils.decorators import method_decorator
|
||||
from django.views.generic import ListView
|
||||
|
||||
from accounts.models import User, Student
|
||||
from app.models import Session, Semester
|
||||
from core.models import Session, Semester
|
||||
from result.models import TakenCourse
|
||||
from accounts.decorators import lecturer_required, student_required
|
||||
from .forms import (
|
||||
|
||||
@ -5,43 +5,154 @@ import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('accounts', '0001_initial'),
|
||||
('course', '0001_initial'),
|
||||
('app', '0001_initial'),
|
||||
("accounts", "0001_initial"),
|
||||
("course", "0001_initial"),
|
||||
("core", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='TakenCourse',
|
||||
name="TakenCourse",
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('assignment', models.DecimalField(decimal_places=2, default=0.0, max_digits=5)),
|
||||
('mid_exam', models.DecimalField(decimal_places=2, default=0.0, max_digits=5)),
|
||||
('quiz', models.DecimalField(decimal_places=2, default=0.0, max_digits=5)),
|
||||
('attendance', models.DecimalField(decimal_places=2, default=0.0, max_digits=5)),
|
||||
('final_exam', models.DecimalField(decimal_places=2, default=0.0, max_digits=5)),
|
||||
('total', models.DecimalField(decimal_places=2, default=0.0, max_digits=5)),
|
||||
('grade', models.CharField(blank=True, choices=[('A+', 'A+'), ('A', 'A'), ('A-', 'A-'), ('B+', 'B+'), ('B', 'B'), ('B-', 'B-'), ('C+', 'C+'), ('C', 'C'), ('C-', 'C-'), ('D', 'D'), ('F', 'F'), ('NG', 'NG')], max_length=1)),
|
||||
('point', models.DecimalField(decimal_places=2, default=0.0, max_digits=5)),
|
||||
('comment', models.CharField(blank=True, choices=[('PASS', 'PASS'), ('FAIL', 'FAIL')], max_length=200)),
|
||||
('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='taken_courses', to='course.Course')),
|
||||
('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='accounts.Student')),
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"assignment",
|
||||
models.DecimalField(decimal_places=2, default=0.0, max_digits=5),
|
||||
),
|
||||
(
|
||||
"mid_exam",
|
||||
models.DecimalField(decimal_places=2, default=0.0, max_digits=5),
|
||||
),
|
||||
(
|
||||
"quiz",
|
||||
models.DecimalField(decimal_places=2, default=0.0, max_digits=5),
|
||||
),
|
||||
(
|
||||
"attendance",
|
||||
models.DecimalField(decimal_places=2, default=0.0, max_digits=5),
|
||||
),
|
||||
(
|
||||
"final_exam",
|
||||
models.DecimalField(decimal_places=2, default=0.0, max_digits=5),
|
||||
),
|
||||
(
|
||||
"total",
|
||||
models.DecimalField(decimal_places=2, default=0.0, max_digits=5),
|
||||
),
|
||||
(
|
||||
"grade",
|
||||
models.CharField(
|
||||
blank=True,
|
||||
choices=[
|
||||
("A+", "A+"),
|
||||
("A", "A"),
|
||||
("A-", "A-"),
|
||||
("B+", "B+"),
|
||||
("B", "B"),
|
||||
("B-", "B-"),
|
||||
("C+", "C+"),
|
||||
("C", "C"),
|
||||
("C-", "C-"),
|
||||
("D", "D"),
|
||||
("F", "F"),
|
||||
("NG", "NG"),
|
||||
],
|
||||
max_length=1,
|
||||
),
|
||||
),
|
||||
(
|
||||
"point",
|
||||
models.DecimalField(decimal_places=2, default=0.0, max_digits=5),
|
||||
),
|
||||
(
|
||||
"comment",
|
||||
models.CharField(
|
||||
blank=True,
|
||||
choices=[("PASS", "PASS"), ("FAIL", "FAIL")],
|
||||
max_length=200,
|
||||
),
|
||||
),
|
||||
(
|
||||
"course",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="taken_courses",
|
||||
to="course.Course",
|
||||
),
|
||||
),
|
||||
(
|
||||
"student",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="accounts.Student",
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Result',
|
||||
name="Result",
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('gpa', models.FloatField(null=True)),
|
||||
('cgpa', models.FloatField(null=True)),
|
||||
('semester', models.CharField(choices=[('First', 'First'), ('Second', 'Second'), ('Third', 'Third')], max_length=100)),
|
||||
('level', models.CharField(choices=[('Level course', 'Level course'), ('Bachloar', 'Bachloar'), ('Master', 'Master')], max_length=25, null=True)),
|
||||
('session', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.Session')),
|
||||
('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='accounts.Student')),
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("gpa", models.FloatField(null=True)),
|
||||
("cgpa", models.FloatField(null=True)),
|
||||
(
|
||||
"semester",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("First", "First"),
|
||||
("Second", "Second"),
|
||||
("Third", "Third"),
|
||||
],
|
||||
max_length=100,
|
||||
),
|
||||
),
|
||||
(
|
||||
"level",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("Level course", "Level course"),
|
||||
("Bachloar", "Bachloar"),
|
||||
("Master", "Master"),
|
||||
],
|
||||
max_length=25,
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"session",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="core.Session",
|
||||
),
|
||||
),
|
||||
(
|
||||
"student",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="accounts.Student",
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
]
|
||||
|
||||
@ -2,7 +2,7 @@ from django.db import models
|
||||
from django.urls import reverse
|
||||
|
||||
from accounts.models import Student
|
||||
from app.models import Semester
|
||||
from core.models import Semester
|
||||
from course.models import Course
|
||||
|
||||
YEARS = (
|
||||
|
||||
@ -22,7 +22,7 @@ from reportlab.lib.units import inch
|
||||
from reportlab.lib import colors
|
||||
|
||||
from accounts.models import Student
|
||||
from app.models import Session, Semester
|
||||
from core.models import Session, Semester
|
||||
from course.models import Course
|
||||
from accounts.decorators import lecturer_required, student_required
|
||||
from .models import TakenCourse, Result, FIRST, SECOND
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
from itertools import chain
|
||||
from django.views.generic import ListView
|
||||
from app.models import NewsAndEvents
|
||||
from core.models import NewsAndEvents
|
||||
from course.models import Program, Course
|
||||
from quiz.models import Quiz
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user