diff --git a/accounts/views.py b/accounts/views.py index 1281d1a..3c4aa18 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -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 diff --git a/app/apps.py b/app/apps.py deleted file mode 100644 index 200c598..0000000 --- a/app/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class AppConfig(AppConfig): - name = "app" diff --git a/app/migrations/0001_initial.py b/app/migrations/0001_initial.py deleted file mode 100644 index 49f5410..0000000 --- a/app/migrations/0001_initial.py +++ /dev/null @@ -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')), - ], - ), - ] diff --git a/app/migrations/0002_auto_20200730_0746.py b/app/migrations/0002_auto_20200730_0746.py deleted file mode 100644 index 1aaa8c1..0000000 --- a/app/migrations/0002_auto_20200730_0746.py +++ /dev/null @@ -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), - ), - ] diff --git a/app/migrations/0003_auto_20200730_0756.py b/app/migrations/0003_auto_20200730_0756.py deleted file mode 100644 index 612a245..0000000 --- a/app/migrations/0003_auto_20200730_0756.py +++ /dev/null @@ -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), - ), - ] diff --git a/app/migrations/0004_alter_newsandevents_id_alter_semester_id_and_more.py b/app/migrations/0004_alter_newsandevents_id_alter_semester_id_and_more.py deleted file mode 100644 index 2a9e504..0000000 --- a/app/migrations/0004_alter_newsandevents_id_alter_semester_id_and_more.py +++ /dev/null @@ -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'), - ), - ] diff --git a/config/settings.py b/config/settings.py index 39a151b..809e68d 100644 --- a/config/settings.py +++ b/config/settings.py @@ -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", diff --git a/config/urls.py b/config/urls.py index fbf2baa..344edf2 100644 --- a/config/urls.py +++ b/config/urls.py @@ -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")), diff --git a/app/__init__.py b/core/__init__.py similarity index 100% rename from app/__init__.py rename to core/__init__.py diff --git a/app/admin.py b/core/admin.py similarity index 100% rename from app/admin.py rename to core/admin.py diff --git a/app/api/__init__.py b/core/api/__init__.py similarity index 100% rename from app/api/__init__.py rename to core/api/__init__.py diff --git a/app/api/permissions.py b/core/api/permissions.py similarity index 100% rename from app/api/permissions.py rename to core/api/permissions.py diff --git a/app/api/serializers.py b/core/api/serializers.py similarity index 100% rename from app/api/serializers.py rename to core/api/serializers.py diff --git a/app/api/urls.py b/core/api/urls.py similarity index 100% rename from app/api/urls.py rename to core/api/urls.py diff --git a/app/api/views.py b/core/api/views.py similarity index 100% rename from app/api/views.py rename to core/api/views.py diff --git a/core/apps.py b/core/apps.py new file mode 100644 index 0000000..5ef1d60 --- /dev/null +++ b/core/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class CoreConfig(AppConfig): + name = "core" diff --git a/app/forms.py b/core/forms.py similarity index 100% rename from app/forms.py rename to core/forms.py diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py new file mode 100644 index 0000000..bc657b7 --- /dev/null +++ b/core/migrations/0001_initial.py @@ -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", + ), + ), + ], + ), + ] diff --git a/core/migrations/0002_auto_20200730_0746.py b/core/migrations/0002_auto_20200730_0746.py new file mode 100644 index 0000000..9200d37 --- /dev/null +++ b/core/migrations/0002_auto_20200730_0746.py @@ -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, + ), + ), + ] diff --git a/core/migrations/0003_auto_20200730_0756.py b/core/migrations/0003_auto_20200730_0756.py new file mode 100644 index 0000000..7e89eb9 --- /dev/null +++ b/core/migrations/0003_auto_20200730_0756.py @@ -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, + ), + ), + ] diff --git a/core/migrations/0004_alter_newsandevents_id_alter_semester_id_and_more.py b/core/migrations/0004_alter_newsandevents_id_alter_semester_id_and_more.py new file mode 100644 index 0000000..4f8f4aa --- /dev/null +++ b/core/migrations/0004_alter_newsandevents_id_alter_semester_id_and_more.py @@ -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" + ), + ), + ] diff --git a/app/migrations/__init__.py b/core/migrations/__init__.py similarity index 100% rename from app/migrations/__init__.py rename to core/migrations/__init__.py diff --git a/app/models.py b/core/models.py similarity index 100% rename from app/models.py rename to core/models.py diff --git a/app/tests.py b/core/tests.py similarity index 100% rename from app/tests.py rename to core/tests.py diff --git a/app/urls.py b/core/urls.py similarity index 100% rename from app/urls.py rename to core/urls.py diff --git a/app/views.py b/core/views.py similarity index 94% rename from app/views.py rename to core/views.py index db89485..0ce1803 100644 --- a/app/views.py +++ b/core/views.py @@ -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") diff --git a/course/migrations/0001_initial.py b/course/migrations/0001_initial.py index bd6002e..7d813e2 100644 --- a/course/migrations/0001_initial.py +++ b/course/migrations/0001_initial.py @@ -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" + ), ), ] diff --git a/course/models.py b/course/models.py index cfeafa3..1337169 100644 --- a/course/models.py +++ b/course/models.py @@ -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): diff --git a/course/views.py b/course/views.py index c1e9d85..2bce8e0 100644 --- a/course/views.py +++ b/course/views.py @@ -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 ( diff --git a/result/migrations/0001_initial.py b/result/migrations/0001_initial.py index e5483aa..ed80896 100644 --- a/result/migrations/0001_initial.py +++ b/result/migrations/0001_initial.py @@ -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", + ), + ), ], ), ] diff --git a/result/models.py b/result/models.py index a88bfd3..e857c4c 100644 --- a/result/models.py +++ b/result/models.py @@ -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 = ( diff --git a/result/views.py b/result/views.py index a55d839..8ff5109 100644 --- a/result/views.py +++ b/result/views.py @@ -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 diff --git a/search/views.py b/search/views.py index eb863eb..eae2e07 100644 --- a/search/views.py +++ b/search/views.py @@ -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 diff --git a/templates/app/dashboard.html b/templates/core/dashboard.html similarity index 100% rename from templates/app/dashboard.html rename to templates/core/dashboard.html diff --git a/templates/app/index.html b/templates/core/index.html similarity index 100% rename from templates/app/index.html rename to templates/core/index.html diff --git a/templates/app/post_add.html b/templates/core/post_add.html similarity index 100% rename from templates/app/post_add.html rename to templates/core/post_add.html diff --git a/templates/app/semester_list.html b/templates/core/semester_list.html similarity index 100% rename from templates/app/semester_list.html rename to templates/core/semester_list.html diff --git a/templates/app/semester_update.html b/templates/core/semester_update.html similarity index 100% rename from templates/app/semester_update.html rename to templates/core/semester_update.html diff --git a/templates/app/session_list.html b/templates/core/session_list.html similarity index 100% rename from templates/app/session_list.html rename to templates/core/session_list.html diff --git a/templates/app/session_update.html b/templates/core/session_update.html similarity index 100% rename from templates/app/session_update.html rename to templates/core/session_update.html