diff --git a/SMS/settings.py b/SMS/settings.py index 6af7820..ece1ed6 100644 --- a/SMS/settings.py +++ b/SMS/settings.py @@ -12,11 +12,13 @@ https://docs.djangoproject.com/en/2.2/ref/settings/ import os import posixpath +import environ + +env = environ.Env() # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/ @@ -103,9 +105,6 @@ ASGI_APPLICATION = "SMS.asgi.application" # Database # https://docs.djangoproject.com/en/2.2/ref/settings/#databases -# ----------------------------- -# Uncomment this if you want to use sqlite db - # DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', @@ -113,18 +112,22 @@ ASGI_APPLICATION = "SMS.asgi.application" # } # } -# postgresql db configuration +# ----------------------------- +# Some model fields may not work on sqlite db, so configure your postgresql DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': '[db_name]', - 'USER': '[username]', - 'PASSWORD': '[password]', - 'HOST': 'localhost', - 'POST': '', + 'NAME': env('DB_NAME'), + 'USER': env('DB_USER'), + 'PASSWORD': env('DB_PASSWORD'), + 'HOST': env('DB_HOST'), + 'PORT': env('DB_PORT'), } } +# https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-DEFAULT_AUTO_FIELD +DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" + # Password validation # https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators diff --git a/SMS/urls.py b/SMS/urls.py index c26fb12..ef48e80 100644 --- a/SMS/urls.py +++ b/SMS/urls.py @@ -1,5 +1,4 @@ from django.contrib import admin -from django.conf.urls import url from django.urls import path, include from django.conf.urls import handler404, handler500, handler400 from django.conf import settings @@ -7,18 +6,18 @@ from django.conf.urls.static import static urlpatterns = [ - url(r'^', include('app.urls')), - url(r'^accounts/', include('accounts.urls')), - url(r'^programs/', include('course.urls')), - url(r'^result/', include('result.urls')), - url(r'^search/', include('search.urls')), - url(r'^quiz/', include('quiz.urls')), + path('', include('app.urls')), + path('accounts/', include('accounts.urls')), + path('programs/', include('course.urls')), + path('result/', include('result.urls')), + path('search/', include('search.urls')), + path('quiz/', include('quiz.urls')), - url(r'^payments/', include('payments.urls')), + path('payments/', include('payments.urls')), - url('accounts/api/', include('accounts.api.urls', namespace='accounts-api')), + path('accounts/api/', include('accounts.api.urls', namespace='accounts-api')), - url(r'^admin/', admin.site.urls), + path('admin/', admin.site.urls), ] if settings.DEBUG: diff --git a/accounts/migrations/0013_alter_departmenthead_id_alter_parent_id_and_more.py b/accounts/migrations/0013_alter_departmenthead_id_alter_parent_id_and_more.py new file mode 100644 index 0000000..16f4fba --- /dev/null +++ b/accounts/migrations/0013_alter_departmenthead_id_alter_parent_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 = [ + ('accounts', '0012_auto_20230112_2238'), + ] + + operations = [ + migrations.AlterField( + model_name='departmenthead', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='parent', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='student', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='user', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + ] diff --git a/accounts/urls.py b/accounts/urls.py index 90cc6de..4e2cee4 100644 --- a/accounts/urls.py +++ b/accounts/urls.py @@ -1,4 +1,3 @@ -from django.conf.urls import url from django.urls import path, include from django.contrib.auth.views import ( PasswordResetView, PasswordResetDoneView, PasswordResetConfirmView, @@ -18,55 +17,55 @@ from .forms import EmailValidationOnForgotPassword urlpatterns = [ path('', include('django.contrib.auth.urls')), - url(r'^admin_panel/$', admin_panel, name='admin_panel'), + path('admin_panel/', admin_panel, name='admin_panel'), - url(r'^profile/$', profile, name='profile'), - url(r'^profile/(?P\d+)/detail/$', profile_single, name='profile_single'), - url(r'^setting/$', profile_update, name='edit_profile'), - url(r'^change_password/$', change_password, name='change_password'), + path('profile/', profile, name='profile'), + path('profile//detail/', profile_single, name='profile_single'), + path('setting/', profile_update, name='edit_profile'), + path('change_password/', change_password, name='change_password'), - url(r'^lecturers/$', LecturerListView.as_view(), name='lecturer_list'), - url(r'^lecturer/add/$', staff_add_view, name='add_lecturer'), - url(r'^staff/(?P\d+)/edit/$', edit_staff, name='staff_edit'), - url(r'^lecturers/(?P\d+)/delete/$', delete_staff, name='lecturer_delete'), + path('lecturers/', LecturerListView.as_view(), name='lecturer_list'), + path('lecturer/add/', staff_add_view, name='add_lecturer'), + path('staff//edit/', edit_staff, name='staff_edit'), + path('lecturers//delete/', delete_staff, name='lecturer_delete'), - url(r'^students/$', StudentListView.as_view(), name='student_list'), - url(r'^student/add/$', student_add_view, name='add_student'), - url(r'^student/(?P\d+)/edit/$', edit_student, name='student_edit'), - url(r'^students/(?P\d+)/delete/$', delete_student, name='student_delete'), + path('students/', StudentListView.as_view(), name='student_list'), + path('student/add/', student_add_view, name='add_student'), + path('student//edit/', edit_student, name='student_edit'), + path('students//delete/', delete_student, name='student_delete'), - url(r'^parents/add/$', ParentAdd.as_view(), name='add_parent'), + path('parents/add/', ParentAdd.as_view(), name='add_parent'), - url(r'^ajax/validate-username/$', validate_username, name='validate_username'), + path('ajax/validate-username/', validate_username, name='validate_username'), - url(r'^register/$', register, name='register'), + path('register/', register, name='register'), - # url(r'^add-student/$', StudentAddView.as_view(), name='add_student'), + # path('add-student/', StudentAddView.as_view(), name='add_student'), - # url(r'^programs/course/delete/(?P\d+)/$', course_delete, name='delete_course'), + # path('programs/course/delete//', course_delete, name='delete_course'), # Setting urls - # url(r'^profile/(?P\d+)/edit/$', profileUpdateView, name='edit_profile'), - # url(r'^profile/(?P\d+)/change-password/$', changePasswordView, name='change_password'), + # path('profile//edit/', profileUpdateView, name='edit_profile'), + # path('profile//change-password/', changePasswordView, name='change_password'), # ################################################################ - # url(r'^login/$', LoginView.as_view(), name='login'), - # url(r'^logout/$', LogoutView.as_view(), name='logout', kwargs={'next_page': '/'}), + # path('login/', LoginView.as_view(), name='login'), + # path('logout/', LogoutView.as_view(), name='logout', kwargs={'next_page': '/'}), - # url(r'^password-reset/$', PasswordResetView.as_view( + # path('password-reset/', PasswordResetView.as_view( # form_class=EmailValidationOnForgotPassword, # template_name='registration/password_reset.html' # ), # name='password_reset'), - # url(r'^password-reset/done/$', PasswordResetDoneView.as_view( + # path('password-reset/done/', PasswordResetDoneView.as_view( # template_name='registration/password_reset_done.html' # ), # name='password_reset_done'), - # url(r'^password-reset-confirm///$', PasswordResetConfirmView.as_view( + # path('password-reset-confirm///', PasswordResetConfirmView.as_view( # template_name='registration/password_reset_confirm.html' # ), # name='password_reset_confirm'), - # url(r'^password-reset-complete/$', PasswordResetCompleteView.as_view( + # path('password-reset-complete/', PasswordResetCompleteView.as_view( # template_name='registration/password_reset_complete.html' # ), # name='password_reset_complete') 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 new file mode 100644 index 0000000..2a9e504 --- /dev/null +++ b/app/migrations/0004_alter_newsandevents_id_alter_semester_id_and_more.py @@ -0,0 +1,28 @@ +# 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/app/urls.py b/app/urls.py index 7548e9b..1bce599 100644 --- a/app/urls.py +++ b/app/urls.py @@ -1,4 +1,3 @@ -from django.conf.urls import url from django.urls import path from .views import ( @@ -11,20 +10,20 @@ from .views import ( urlpatterns = [ # Accounts url - url(r'^$', home_view, name='home'), - url(r'^add_item/$', post_add, name='add_item'), - url(r'^item/(?P\d+)/edit/$', edit_post, name='edit_post'), - url(r'^item/(?P\d+)/delete/$', delete_post, name='delete_post'), + path('', home_view, name='home'), + path('add_item/', post_add, name='add_item'), + path('item//edit/', edit_post, name='edit_post'), + path('item//delete/', delete_post, name='delete_post'), - url(r'^session/$', session_list_view, name="session_list"), - url(r'^session/add/$', session_add_view, name="add_session"), - url(r'^session/(?P\d+)/edit/$', session_update_view, name="edit_session"), - url(r'^session/(?P\d+)/delete/$', session_delete_view, name="delete_session"), + path('session/', session_list_view, name="session_list"), + path('session/add/', session_add_view, name="add_session"), + path('session//edit/', session_update_view, name="edit_session"), + path('session//delete/', session_delete_view, name="delete_session"), - url(r'^semester/$', semester_list_view, name="semester_list"), - url(r'^semester/add/$', semester_add_view, name="add_semester"), - url(r'^semester/(?P\d+)/edit/$', semester_update_view, name="edit_semester"), - url(r'^semester/(?P\d+)/delete/$', semester_delete_view, name="delete_semester"), + path('semester/', semester_list_view, name="semester_list"), + path('semester/add/', semester_add_view, name="add_semester"), + path('semester//edit/', semester_update_view, name="edit_semester"), + path('semester//delete/', semester_delete_view, name="delete_semester"), - url(r'^dashboard/$', dashboard_view, name="dashboard"), + path('dashboard/', dashboard_view, name="dashboard"), ] diff --git a/course/migrations/0005_alter_course_id_alter_courseallocation_id_and_more.py b/course/migrations/0005_alter_course_id_alter_courseallocation_id_and_more.py new file mode 100644 index 0000000..cda518b --- /dev/null +++ b/course/migrations/0005_alter_course_id_alter_courseallocation_id_and_more.py @@ -0,0 +1,38 @@ +# Generated by Django 4.1.6 on 2023-02-01 12:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('course', '0004_auto_20200822_2238'), + ] + + operations = [ + migrations.AlterField( + model_name='course', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='courseallocation', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='program', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='upload', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='uploadvideo', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + ] diff --git a/course/urls.py b/course/urls.py index 5fe28e1..1ccccad 100644 --- a/course/urls.py +++ b/course/urls.py @@ -1,53 +1,41 @@ -from django.conf.urls import url from django.urls import path -from django.contrib.auth.views import ( - PasswordResetView, PasswordResetDoneView, PasswordResetConfirmView, - PasswordResetCompleteView, LoginView, LogoutView -) -# from .views import ( -# program_view, program_detail, program_add, program_edit, program_delete, -# course_single, course_add, course_edit, course_delete, -# CourseAllocationFormView, course_allocation_view, edit_allocated_course, deallocate_course, -# handle_file_upload, handle_file_edit, handle_file_delete, -# course_registration, course_drop, user_course_list -# ) from .views import * urlpatterns = [ # Program urls - url(r'^$', program_view, name='programs'), - url(r'^(?P\d+)/detail/$', program_detail, name='program_detail'), - url(r'^add/$', program_add, name='add_program'), - url(r'^(?P\d+)/edit/$', program_edit, name='edit_program'), - url(r'^(?P\d+)/delete/$', program_delete, name='program_delete'), + path('', program_view, name='programs'), + path('/detail/', program_detail, name='program_detail'), + path('add/', program_add, name='add_program'), + path('/edit/', program_edit, name='edit_program'), + path('/delete/', program_delete, name='program_delete'), # Course urls - url(r'^course/(?P[\w-]+)/detail/$', course_single, name='course_detail'), - url(r'^(?P\d+)/course/add/$', course_add, name='course_add'), - url(r'^course/(?P[\w-]+)/edit/$', course_edit, name='edit_course'), - url(r'^course/delete/(?P[\w-]+)/$', course_delete, name='delete_course'), + path('course//detail/', course_single, name='course_detail'), + path('/course/add/', course_add, name='course_add'), + path('course//edit/', course_edit, name='edit_course'), + path('course/delete//', course_delete, name='delete_course'), # CourseAllocation urls - url(r'^course/assign/$', CourseAllocationFormView.as_view(), name='course_allocation'), - url(r'^course/allocated/$', course_allocation_view, name='course_allocation_view'), - url(r'^allocated_course/(?P\d+)/edit/$', edit_allocated_course, name='edit_allocated_course'), - url(r'^course/(?P\d+)/deallocate/$', deallocate_course, name='course_deallocate'), + path('course/assign/', CourseAllocationFormView.as_view(), name='course_allocation'), + path('course/allocated/', course_allocation_view, name='course_allocation_view'), + path('allocated_course//edit/', edit_allocated_course, name='edit_allocated_course'), + path('course//deallocate/', deallocate_course, name='course_deallocate'), # File uploads urls - url(r'^course/(?P[\w-]+)/documentations/upload/$', handle_file_upload, name='upload_file_view'), - url(r'^course/(?P[\w-]+)/documentations/(?P\d+)/edit/$', handle_file_edit, name='upload_file_edit'), - url(r'^course/(?P[\w-]+)/documentations/(?P\d+)/delete/$', handle_file_delete, name='upload_file_delete'), + path('course//documentations/upload/', handle_file_upload, name='upload_file_view'), + path('course//documentations//edit/', handle_file_edit, name='upload_file_edit'), + path('course//documentations//delete/', handle_file_delete, name='upload_file_delete'), # Video uploads urls - url(r'^course/(?P[\w-]+)/video_tutorials/upload/$', handle_video_upload, name='upload_video'), - url(r'^course/(?P[\w-]+)/video_tutorials/(?P[\w-]+)/detail/$', handle_video_single, name='video_single'), - url(r'^course/(?P[\w-]+)/video_tutorials/(?P[\w-]+)/edit/$', handle_video_edit, name='upload_video_edit'), - url(r'^course/(?P[\w-]+)/video_tutorials/(?P[\w-]+)/delete/$', handle_video_delete, name='upload_video_delete'), + path('course//video_tutorials/upload/', handle_video_upload, name='upload_video'), + path('course//video_tutorials//detail/', handle_video_single, name='video_single'), + path('course//video_tutorials//edit/', handle_video_edit, name='upload_video_edit'), + path('course//video_tutorials//delete/', handle_video_delete, name='upload_video_delete'), # course registration - url(r'^course/registration/$', course_registration, name='course_registration'), - url(r'^course/drop/$', course_drop, name='course_drop'), + path('course/registration/', course_registration, name='course_registration'), + path('course/drop/', course_drop, name='course_drop'), - url(r'^my_courses/$', user_course_list, name="user_course_list"), + path('my_courses/', user_course_list, name="user_course_list"), ] diff --git a/coursemanagement/migrations/0003_alter_courseoffer_id_alter_coursesetting_id.py b/coursemanagement/migrations/0003_alter_courseoffer_id_alter_coursesetting_id.py new file mode 100644 index 0000000..7b94b1f --- /dev/null +++ b/coursemanagement/migrations/0003_alter_courseoffer_id_alter_coursesetting_id.py @@ -0,0 +1,23 @@ +# Generated by Django 4.1.6 on 2023-02-01 12:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('coursemanagement', '0002_coursesetting'), + ] + + operations = [ + migrations.AlterField( + model_name='courseoffer', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='coursesetting', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + ] diff --git a/manage.py b/manage.py index be3c524..98279bb 100644 --- a/manage.py +++ b/manage.py @@ -2,7 +2,7 @@ """Django's command-line utility for administrative tasks.""" import os import sys - +import environ def main(): os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'SMS.settings') @@ -18,4 +18,6 @@ def main(): if __name__ == '__main__': + # OS environment variables take precedence over variables from .env + environ.Env.read_env() main() diff --git a/payments/migrations/0004_alter_invoice_id.py b/payments/migrations/0004_alter_invoice_id.py new file mode 100644 index 0000000..27c3646 --- /dev/null +++ b/payments/migrations/0004_alter_invoice_id.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.6 on 2023-02-01 12:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('payments', '0003_delete_testclass'), + ] + + operations = [ + migrations.AlterField( + model_name='invoice', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + ] diff --git a/quiz/admin.py b/quiz/admin.py index ee1ddcc..a0b684b 100644 --- a/quiz/admin.py +++ b/quiz/admin.py @@ -1,7 +1,7 @@ from django import forms from django.contrib import admin from django.contrib.admin.widgets import FilteredSelectMultiple -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .models import Quiz, Progress, Question, MCQuestion, Choice, Essay_Question, Sitting diff --git a/quiz/forms.py b/quiz/forms.py index 8f23e6f..0f4b6ab 100644 --- a/quiz/forms.py +++ b/quiz/forms.py @@ -1,7 +1,7 @@ from django import forms from django.forms.widgets import RadioSelect, Textarea from django.contrib.admin.widgets import FilteredSelectMultiple -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.db import transaction from django.forms.models import inlineformset_factory diff --git a/quiz/migrations/0002_alter_choice_id_alter_progress_id_alter_question_id_and_more.py b/quiz/migrations/0002_alter_choice_id_alter_progress_id_alter_question_id_and_more.py new file mode 100644 index 0000000..714888e --- /dev/null +++ b/quiz/migrations/0002_alter_choice_id_alter_progress_id_alter_question_id_and_more.py @@ -0,0 +1,38 @@ +# Generated by Django 4.1.6 on 2023-02-01 12:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('quiz', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='choice', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='progress', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='question', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='quiz', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='sitting', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + ] diff --git a/quiz/models.py b/quiz/models.py index 5671849..2b83970 100644 --- a/quiz/models.py +++ b/quiz/models.py @@ -5,7 +5,7 @@ from django.db import models from django.urls import reverse from django.core.exceptions import ValidationError, ImproperlyConfigured from django.core.validators import (MaxValueValidator, validate_comma_separated_integer_list,) -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.utils.timezone import now from django.conf import settings from django.db.models.signals import pre_save diff --git a/quiz/urls.py b/quiz/urls.py index 5bf34ef..3f20b2b 100644 --- a/quiz/urls.py +++ b/quiz/urls.py @@ -1,23 +1,22 @@ -from django.conf.urls import url - +from django.urls import path from .views import * urlpatterns = [ - url(r'^(?P[\w-]+)/quizzes/$', quiz_list, name='quiz_index'), + path('/quizzes/', quiz_list, name='quiz_index'), - url(r'^progress/$', view=QuizUserProgressView.as_view(), name='quiz_progress'), + path('progress/', view=QuizUserProgressView.as_view(), name='quiz_progress'), - # url(r'^marking/(?P[\d.]+)/$', view=QuizMarkingList.as_view(), name='quiz_marking'), - url(r'^marking_list/$', view=QuizMarkingList.as_view(), name='quiz_marking'), + # path('marking//', view=QuizMarkingList.as_view(), name='quiz_marking'), + path('marking_list/', view=QuizMarkingList.as_view(), name='quiz_marking'), - url(r'^marking/(?P[\d.]+)/$', view=QuizMarkingDetail.as_view(), name='quiz_marking_detail'), + path('marking//', view=QuizMarkingDetail.as_view(), name='quiz_marking_detail'), - url(r'^(?P[\d.]+)/(?P[\w-]+)/take/$', view=QuizTake.as_view(), name='quiz_take'), + path('//take/', view=QuizTake.as_view(), name='quiz_take'), - url(r'^(?P[\w-]+)/quiz_add/$', QuizCreateView.as_view(), name='quiz_create'), - url(r'^(?P[\w-]+)/(?P[\d.]+)/add/$', QuizUpdateView.as_view(), name='quiz_update'), - url(r'^(?P[\w-]+)/(?P[\d.]+)/delete/$', quiz_delete, name='quiz_delete'), - url(r'^mc-question/add/(?P[\w-]+)/(?P[\d.]+)/$', MCQuestionCreate.as_view(), name='mc_create'), - # url(r'^mc-question/add/(?P[\d.]+)/(?P[\d.]+)/$', MCQuestionCreate.as_view(), name='mc_create'), + path('/quiz_add/', QuizCreateView.as_view(), name='quiz_create'), + path('//add/', QuizUpdateView.as_view(), name='quiz_update'), + path('//delete/', quiz_delete, name='quiz_delete'), + path('mc-question/add///', MCQuestionCreate.as_view(), name='mc_create'), + # path('mc-question/add///', MCQuestionCreate.as_view(), name='mc_create'), ] diff --git a/requirements.txt b/requirements.txt index e7dab03..91a0aca 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,40 +1,82 @@ -asgiref==3.3.1 -attrs==21.2.0 -autobahn==21.3.1 -Automat==20.2.0 -certifi==2020.12.5 -cffi==1.14.5 -channels==3.0.3 -chardet==4.0.0 +alabaster==0.7.13 +arrow==1.2.3 +asgiref==3.6.0 +attrs==22.2.0 +autobahn==23.1.1 +Automat==22.10.0 +Babel==2.11.0 +binaryornot==0.4.4 +black==22.10.0 +certifi==2022.12.7 +cffi==1.15.1 +channels==4.0.0 +chardet==5.1.0 +charset-normalizer==2.1.1 +click==8.1.3 +colorama==0.4.6 constantly==15.1.0 -cryptography==3.4.7 -daphne==3.0.2 -Deprecated==1.2.12 -Django==3.1.3 -django-cleanup==5.1.0 -django-crispy-forms==1.9.2 -django-model-utils==4.1.1 -djangorestframework==3.12.4 -gopay==1.2.5 +cookiecutter==2.1.1 +cryptography==39.0.0 +daphne==4.0.0 +Deprecated==1.2.13 +Django==4.1.6 +django-cleanup==6.0.0 +django-crispy-forms==1.14.0 +django-environ==0.9.0 +django-model-utils==4.3.1 +djangorestframework==3.14.0 +docutils==0.19 +ghp-import==2.1.0 +gopay==1.3.0 hyperlink==21.0.0 -idna==2.10 -incremental==21.3.0 -Pillow==8.1.2 -psycopg2==2.8.6 +idna==3.4 +imagesize==1.4.1 +incremental==22.10.0 +Jinja2==3.1.2 +jinja2-time==0.2.0 +Markdown==3.3.7 +MarkupSafe==2.1.1 +mergedeep==1.3.4 +mkdocs==1.4.2 +mypy-extensions==0.4.3 +packaging==21.3 +pathspec==0.10.2 +Pillow==9.4.0 +platformdirs==2.5.4 +psycopg2==2.9.5 pyasn1==0.4.8 pyasn1-modules==0.2.8 -pycparser==2.20 -pyOpenSSL==20.0.1 -pytz==2021.1 -reportlab==3.5.56 -requests==2.25.1 +pycparser==2.21 +Pygments==2.14.0 +pyOpenSSL==23.0.0 +pyparsing==3.0.9 +python-dateutil==2.8.2 +python-slugify==7.0.0 +pytz==2022.7.1 +PyYAML==6.0 +pyyaml_env_tag==0.1 +reportlab==3.6.12 +requests==2.28.1 service-identity==21.1.0 six==1.16.0 -sqlparse==0.4.1 -stripe==2.56.0 -Twisted==21.2.0 -twisted-iocpsupport==1.0.1 -txaio==21.2.1 -urllib3==1.26.4 -wrapt==1.12.1 -zope.interface==5.4.0 +snowballstemmer==2.2.0 +Sphinx==6.1.3 +sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-htmlhelp==2.0.0 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-serializinghtml==1.1.5 +sphinxcontrib.applehelp==1.0.3 +sqlparse==0.4.3 +stripe==5.0.0 +text-unidecode==1.3 +tomli==2.0.1 +Twisted==22.10.0 +twisted-iocpsupport==1.0.2 +txaio==23.1.1 +typing_extensions==4.4.0 +tzdata==2022.7 +urllib3==1.26.13 +watchdog==2.1.9 +wrapt==1.14.1 +zope.interface==5.5.2 diff --git a/result/migrations/0005_alter_result_id_alter_takencourse_id.py b/result/migrations/0005_alter_result_id_alter_takencourse_id.py new file mode 100644 index 0000000..54d2b10 --- /dev/null +++ b/result/migrations/0005_alter_result_id_alter_takencourse_id.py @@ -0,0 +1,23 @@ +# Generated by Django 4.1.6 on 2023-02-01 12:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('result', '0004_auto_20200825_1248'), + ] + + operations = [ + migrations.AlterField( + model_name='result', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='takencourse', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + ] diff --git a/result/urls.py b/result/urls.py index 58f8eae..4659aed 100644 --- a/result/urls.py +++ b/result/urls.py @@ -1,4 +1,3 @@ -from django.conf.urls import url from django.urls import path from .views import ( add_score, add_score_for, grade_result, assessment_result, @@ -7,12 +6,12 @@ from .views import ( urlpatterns = [ - url(r'^manage-score/$', add_score, name='add_score'), - url(r'^manage-score/(?P\d+)/$', add_score_for, name='add_score_for'), + path('manage-score/', add_score, name='add_score'), + path('manage-score//', add_score_for, name='add_score_for'), - url(r'^grade/$', grade_result, name="grade_results"), - url(r'^assessment/$', assessment_result, name="ass_results"), + path('grade/', grade_result, name="grade_results"), + path('assessment/', assessment_result, name="ass_results"), - url(r'^result/print/(?P\d+)/$', result_sheet_pdf_view, name='result_sheet_pdf_view'), - url(r'^registration/form/$', course_registration_form, name='course_registration_form'), + path('result/print//', result_sheet_pdf_view, name='result_sheet_pdf_view'), + path('registration/form/', course_registration_form, name='course_registration_form'), ] diff --git a/search/urls.py b/search/urls.py index 6fd1b6b..0a05833 100644 --- a/search/urls.py +++ b/search/urls.py @@ -1,8 +1,6 @@ -from django.conf.urls import url - +from django.urls import path from .views import SearchView urlpatterns = [ - url(r'^$', SearchView.as_view(), name='query'), + path('', SearchView.as_view(), name='query'), ] -