Migrate to django==4.1.6
Project migrated to latest django version==4.1.6
This commit is contained in:
parent
4161b8b87d
commit
78cbd76047
@ -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
|
||||
|
||||
|
||||
19
SMS/urls.py
19
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:
|
||||
|
||||
@ -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'),
|
||||
),
|
||||
]
|
||||
@ -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<id>\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/<int:id>/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<pk>\d+)/edit/$', edit_staff, name='staff_edit'),
|
||||
url(r'^lecturers/(?P<pk>\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/<int:pk>/edit/', edit_staff, name='staff_edit'),
|
||||
path('lecturers/<int:pk>/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<pk>\d+)/edit/$', edit_student, name='student_edit'),
|
||||
url(r'^students/(?P<pk>\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/<int:pk>/edit/', edit_student, name='student_edit'),
|
||||
path('students/<int:pk>/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<pk>\d+)/$', course_delete, name='delete_course'),
|
||||
# path('programs/course/delete/<int:pk>/', course_delete, name='delete_course'),
|
||||
|
||||
# Setting urls
|
||||
# url(r'^profile/(?P<pk>\d+)/edit/$', profileUpdateView, name='edit_profile'),
|
||||
# url(r'^profile/(?P<pk>\d+)/change-password/$', changePasswordView, name='change_password'),
|
||||
# path('profile/<int:pk>/edit/', profileUpdateView, name='edit_profile'),
|
||||
# path('profile/<int:pk>/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/<uidb64>/<token>/$', PasswordResetConfirmView.as_view(
|
||||
# path('password-reset-confirm/<uidb64>/<token>/', 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')
|
||||
|
||||
@ -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'),
|
||||
),
|
||||
]
|
||||
27
app/urls.py
27
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<pk>\d+)/edit/$', edit_post, name='edit_post'),
|
||||
url(r'^item/(?P<pk>\d+)/delete/$', delete_post, name='delete_post'),
|
||||
path('', home_view, name='home'),
|
||||
path('add_item/', post_add, name='add_item'),
|
||||
path('item/<int:pk>/edit/', edit_post, name='edit_post'),
|
||||
path('item/<int:pk>/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<pk>\d+)/edit/$', session_update_view, name="edit_session"),
|
||||
url(r'^session/(?P<pk>\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/<int:pk>/edit/', session_update_view, name="edit_session"),
|
||||
path('session/<int:pk>/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<pk>\d+)/edit/$', semester_update_view, name="edit_semester"),
|
||||
url(r'^semester/(?P<pk>\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/<int:pk>/edit/', semester_update_view, name="edit_semester"),
|
||||
path('semester/<int:pk>/delete/', semester_delete_view, name="delete_semester"),
|
||||
|
||||
url(r'^dashboard/$', dashboard_view, name="dashboard"),
|
||||
path('dashboard/', dashboard_view, name="dashboard"),
|
||||
]
|
||||
|
||||
@ -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'),
|
||||
),
|
||||
]
|
||||
@ -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<pk>\d+)/detail/$', program_detail, name='program_detail'),
|
||||
url(r'^add/$', program_add, name='add_program'),
|
||||
url(r'^(?P<pk>\d+)/edit/$', program_edit, name='edit_program'),
|
||||
url(r'^(?P<pk>\d+)/delete/$', program_delete, name='program_delete'),
|
||||
path('', program_view, name='programs'),
|
||||
path('<int:pk>/detail/', program_detail, name='program_detail'),
|
||||
path('add/', program_add, name='add_program'),
|
||||
path('<int:pk>/edit/', program_edit, name='edit_program'),
|
||||
path('<int:pk>/delete/', program_delete, name='program_delete'),
|
||||
|
||||
# Course urls
|
||||
url(r'^course/(?P<slug>[\w-]+)/detail/$', course_single, name='course_detail'),
|
||||
url(r'^(?P<pk>\d+)/course/add/$', course_add, name='course_add'),
|
||||
url(r'^course/(?P<slug>[\w-]+)/edit/$', course_edit, name='edit_course'),
|
||||
url(r'^course/delete/(?P<slug>[\w-]+)/$', course_delete, name='delete_course'),
|
||||
path('course/<slug>/detail/', course_single, name='course_detail'),
|
||||
path('<int:pk>/course/add/', course_add, name='course_add'),
|
||||
path('course/<slug>/edit/', course_edit, name='edit_course'),
|
||||
path('course/delete/<slug>/', 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<pk>\d+)/edit/$', edit_allocated_course, name='edit_allocated_course'),
|
||||
url(r'^course/(?P<pk>\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/<int:pk>/edit/', edit_allocated_course, name='edit_allocated_course'),
|
||||
path('course/<int:pk>/deallocate/', deallocate_course, name='course_deallocate'),
|
||||
|
||||
# File uploads urls
|
||||
url(r'^course/(?P<slug>[\w-]+)/documentations/upload/$', handle_file_upload, name='upload_file_view'),
|
||||
url(r'^course/(?P<slug>[\w-]+)/documentations/(?P<file_id>\d+)/edit/$', handle_file_edit, name='upload_file_edit'),
|
||||
url(r'^course/(?P<slug>[\w-]+)/documentations/(?P<file_id>\d+)/delete/$', handle_file_delete, name='upload_file_delete'),
|
||||
path('course/<slug>/documentations/upload/', handle_file_upload, name='upload_file_view'),
|
||||
path('course/<slug>/documentations/<int:file_id>/edit/', handle_file_edit, name='upload_file_edit'),
|
||||
path('course/<slug>/documentations/<int:file_id>/delete/', handle_file_delete, name='upload_file_delete'),
|
||||
|
||||
# Video uploads urls
|
||||
url(r'^course/(?P<slug>[\w-]+)/video_tutorials/upload/$', handle_video_upload, name='upload_video'),
|
||||
url(r'^course/(?P<slug>[\w-]+)/video_tutorials/(?P<video_slug>[\w-]+)/detail/$', handle_video_single, name='video_single'),
|
||||
url(r'^course/(?P<slug>[\w-]+)/video_tutorials/(?P<video_slug>[\w-]+)/edit/$', handle_video_edit, name='upload_video_edit'),
|
||||
url(r'^course/(?P<slug>[\w-]+)/video_tutorials/(?P<video_slug>[\w-]+)/delete/$', handle_video_delete, name='upload_video_delete'),
|
||||
path('course/<slug>/video_tutorials/upload/', handle_video_upload, name='upload_video'),
|
||||
path('course/<slug>/video_tutorials/<video_slug>/detail/', handle_video_single, name='video_single'),
|
||||
path('course/<slug>/video_tutorials/<video_slug>/edit/', handle_video_edit, name='upload_video_edit'),
|
||||
path('course/<slug>/video_tutorials/<video_slug>/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"),
|
||||
]
|
||||
|
||||
@ -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'),
|
||||
),
|
||||
]
|
||||
@ -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()
|
||||
|
||||
18
payments/migrations/0004_alter_invoice_id.py
Normal file
18
payments/migrations/0004_alter_invoice_id.py
Normal file
@ -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'),
|
||||
),
|
||||
]
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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'),
|
||||
),
|
||||
]
|
||||
@ -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
|
||||
|
||||
25
quiz/urls.py
25
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<slug>[\w-]+)/quizzes/$', quiz_list, name='quiz_index'),
|
||||
path('<slug>/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<pk>[\d.]+)/$', view=QuizMarkingList.as_view(), name='quiz_marking'),
|
||||
url(r'^marking_list/$', view=QuizMarkingList.as_view(), name='quiz_marking'),
|
||||
# path('marking/<int:pk>/', view=QuizMarkingList.as_view(), name='quiz_marking'),
|
||||
path('marking_list/', view=QuizMarkingList.as_view(), name='quiz_marking'),
|
||||
|
||||
url(r'^marking/(?P<pk>[\d.]+)/$', view=QuizMarkingDetail.as_view(), name='quiz_marking_detail'),
|
||||
path('marking/<int:pk>/', view=QuizMarkingDetail.as_view(), name='quiz_marking_detail'),
|
||||
|
||||
url(r'^(?P<pk>[\d.]+)/(?P<slug>[\w-]+)/take/$', view=QuizTake.as_view(), name='quiz_take'),
|
||||
path('<int:pk>/<slug>/take/', view=QuizTake.as_view(), name='quiz_take'),
|
||||
|
||||
url(r'^(?P<slug>[\w-]+)/quiz_add/$', QuizCreateView.as_view(), name='quiz_create'),
|
||||
url(r'^(?P<slug>[\w-]+)/(?P<pk>[\d.]+)/add/$', QuizUpdateView.as_view(), name='quiz_update'),
|
||||
url(r'^(?P<slug>[\w-]+)/(?P<pk>[\d.]+)/delete/$', quiz_delete, name='quiz_delete'),
|
||||
url(r'^mc-question/add/(?P<slug>[\w-]+)/(?P<quiz_id>[\d.]+)/$', MCQuestionCreate.as_view(), name='mc_create'),
|
||||
# url(r'^mc-question/add/(?P<pk>[\d.]+)/(?P<quiz_pk>[\d.]+)/$', MCQuestionCreate.as_view(), name='mc_create'),
|
||||
path('<slug>/quiz_add/', QuizCreateView.as_view(), name='quiz_create'),
|
||||
path('<slug>/<int:pk>/add/', QuizUpdateView.as_view(), name='quiz_update'),
|
||||
path('<slug>/<int:pk>/delete/', quiz_delete, name='quiz_delete'),
|
||||
path('mc-question/add/<slug>/<int:quiz_id>/', MCQuestionCreate.as_view(), name='mc_create'),
|
||||
# path('mc-question/add/<int:pk>/<quiz_pk>/', MCQuestionCreate.as_view(), name='mc_create'),
|
||||
]
|
||||
|
||||
110
requirements.txt
110
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
|
||||
|
||||
@ -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'),
|
||||
),
|
||||
]
|
||||
@ -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<id>\d+)/$', add_score_for, name='add_score_for'),
|
||||
path('manage-score/', add_score, name='add_score'),
|
||||
path('manage-score/<int:id>/', 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<id>\d+)/$', result_sheet_pdf_view, name='result_sheet_pdf_view'),
|
||||
url(r'^registration/form/$', course_registration_form, name='course_registration_form'),
|
||||
path('result/print/<int:id>/', result_sheet_pdf_view, name='result_sheet_pdf_view'),
|
||||
path('registration/form/', course_registration_form, name='course_registration_form'),
|
||||
]
|
||||
|
||||
@ -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'),
|
||||
]
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user