Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
ba91cf0
Merge branch 'main' into test-temp
akshatnema Feb 18, 2023
5c61a54
GAD-5: Fix responsiveness (#1125)
Lawful2002 Feb 23, 2023
9a4fc4d
Merge branch 'main' into gad-5
akshatnema Mar 15, 2023
b295d7f
Merge branch 'main' into gad-5
akshatnema Mar 15, 2023
72e34e7
Merge branch 'main' into gad-5
akshatnema Mar 18, 2023
721ee82
Merge branch 'main' into gad-5
akshatnema Mar 19, 2023
91ef4e9
Merge branch 'main' into gad-5
akshatnema Mar 23, 2023
da49572
Merge branch 'main' into gad-5
akshatnema Mar 26, 2023
c1359b7
Added pylint (#1302)
hardiksharma11 Mar 11, 2024
ed210c1
Revert "Added pylint (#1302)" (#1324)
ChaudharyRaman Mar 11, 2024
6cf67c5
Added JSON APIs for get_next_sem_courses , add_course_to_slot , remov…
Divyanshu-iiitdmj Mar 11, 2024
47af12c
GAD -5 Dashboard Changes (#1325)
BlackHAWK2001 Mar 11, 2024
ed642ee
dashboard and usercard updated (#1329)
Arpittak Mar 12, 2024
6de59f0
changes in programme_cuuriculam,adding version to models (#1330)
anudeeps0306 Mar 12, 2024
d9411b1
initial commit
TilteD24 Mar 15, 2024
0dfa721
new features for making pre registration automated
Divyanshu-iiitdmj Mar 15, 2024
908baca
Merge pull request #1 from TilteD24/courseRegistration
Divyanshusir Mar 15, 2024
96427f8
Revert "Replace course functionality added"
Divyanshusir Mar 15, 2024
8afd48c
Merge pull request #2 from Divyanshusir/revert-1-courseRegistration
Divyanshusir Mar 15, 2024
9683d71
Merge branch 'courseRegistration' of https://github.com/divyanshuSir/…
Divyanshu-iiitdmj Mar 15, 2024
0d31b98
useless commit
TilteD24 Mar 15, 2024
b3b7ae3
Merge branch 'FusionIIIT:main' into courseRegistration
Divyanshusir Mar 15, 2024
81a4568
Merge branch 'courseRegistration' of https://github.com/TilteD24/Fusi…
TilteD24 Mar 15, 2024
c4a25ca
changes in code - for verification of student by admin after final r…
Divyanshu-iiitdmj Mar 16, 2024
da97f79
Merge branch 'gad-5' into courseRegistration
Divyanshu-iiitdmj Mar 16, 2024
ae4dacb
replace functionality added
TilteD24 Mar 16, 2024
0e54f77
Merge pull request #1 from TilteD24/gad-5
TilteD24 Mar 16, 2024
ff0f846
Merge pull request #3 from TilteD24/courseRegistration
Divyanshusir Mar 16, 2024
e20bab0
check for if seats available during replace course and pre reg, solve…
Divyanshu-iiitdmj Mar 16, 2024
d40e94d
Fixing ui bugs (#1335)
SukulSarve Mar 17, 2024
e674d70
added swayam functionality and resolved some other issues
Divyanshu-iiitdmj Mar 19, 2024
bc4cfad
fixed dropcourse option issue in acad admin view
Divyanshu-iiitdmj Mar 19, 2024
b82f8ab
ais/profile conflict
Divyanshu-iiitdmj Mar 20, 2024
fcc7d02
old modules.html
Divyanshu-iiitdmj Mar 20, 2024
af3aba4
check modules.html conflict
Divyanshu-iiitdmj Mar 20, 2024
711a0ea
check modules.html conflict 2
Divyanshu-iiitdmj Mar 20, 2024
554d5f7
Merge branch 'gad-5' into courseRegistration
Divyanshu-iiitdmj Mar 20, 2024
1628184
Merge branch 'ac-2' into courseRegistration
Divyanshu-iiitdmj Mar 20, 2024
9146d03
resolving conflict
Divyanshu-iiitdmj Mar 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,8 @@ docker-entrypoint.sh

FusionIIIT/applications/eis/migrations/

postgres_data
postgres_data

# sample files from media/Adminstrator
!media/Administrator/academic_procedures/sample_courses_allotment.xls
!media/Administrator/academic_procedures/sample_student_profile.xlsx
5 changes: 5 additions & 0 deletions FusionIIIT/Fusion/context_processors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
def global_vars(request):
return {
'global_var': request.session.get('currentDesignationSelected', 'default_value'),
'global_var2': request.session.get('allDesignations', 'default_value2'),
}
48 changes: 48 additions & 0 deletions FusionIIIT/Fusion/middleware/custom_middleware.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# custom_middleware.py
from django.contrib.auth.signals import user_logged_in
from django.dispatch import receiver
from applications.globals.models import (ExtraInfo, Feedback, HoldsDesignation,
Issue, IssueImage, DepartmentInfo)
from django.shortcuts import get_object_or_404, redirect, render

def user_logged_in_middleware(get_response):
@receiver(user_logged_in)
def user_logged_in_handler(sender, user, request, **kwargs):
if 'function_executed' not in request.session:
# Run the function only if the flag is not set
# Assuming user is a model with the desired data field, retrieve the data
# For example, if your User model has a field named 'custom_field', you can access it like:
if user.is_authenticated:
desig = list(HoldsDesignation.objects.select_related('user','working','designation').all().filter(working = request.user).values_list('designation'))
print(desig)
b = [i for sub in desig for i in sub]
design = HoldsDesignation.objects.select_related('user','designation').filter(working=request.user)

designation=[]

designation.append(str(user.extrainfo.user_type))
for i in design:
if str(i.designation) != str(user.extrainfo.user_type):
print('-------')
print(i.designation)
print(user.extrainfo.user_type)
print('')
designation.append(str(i.designation))

for i in designation:
print(i)

request.session['currentDesignationSelected'] = designation[0]
request.session['allDesignations'] = designation
print("logged iN")

# Set the flag in the session to indicate that the function has bee+n executed
request.session['function_executed'] = True

def middleware(request):
if request.user.is_authenticated:
user_logged_in_handler(request.user, request.user, request)
response = get_response(request)
return response

return middleware
2 changes: 2 additions & 0 deletions FusionIIIT/Fusion/settings/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'Fusion.middleware.custom_middleware.user_logged_in_middleware',
]

ROOT_URLCONF = 'Fusion.urls'
Expand All @@ -178,6 +179,7 @@
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'Fusion.context_processors.global_vars',
],
},
},
Expand Down
32 changes: 19 additions & 13 deletions FusionIIIT/applications/academic_information/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -841,14 +841,16 @@ def generatexlsheet(request):
"""
if user_check(request):
return HttpResponseRedirect('/academic-procedures/')

# print(request.POST)
try:
batch = request.POST['batch']
# print('-------------------------------------------------------------------------------------' , request.POST['course'])
course_name = Course.objects.get(id = request.POST['course']).course_name
course = Courses.objects.get(name = course_name )
batch = request.POST['batch']#batch hai year wala (2020 , 21)
course_id = int(request.POST['course']) # id of course in integer
course = course = Courses.objects.get(id=course_id)

# print(course.name)
obj = course_registration.objects.all().filter(course_id = course)
except Exception as e:
print(str(e))
batch=""
course=""
curr_key=""
Expand Down Expand Up @@ -2074,14 +2076,15 @@ def view_all_student_data(request):
"specailization": student.specialization,
"gender" : student.id.sex,
"category": student.category,
"pwd_status": student.pwd_status,
# "pwd_status": student.pwd_status,
"pwd_status": False,
"Mobile": student.id.phone_no,
"dob" : student.id.date_of_birth,
"emailid" : student.id.user.email,
"father_name": student.father_name,
"father_mobile_no": student.father_mobile_no,
# "father_mobile_no": student.father_mobile_no,
"mother_name": student.mother_name,
"mother_mobile_no": student.mother_mobile_no,
# "mother_mobile_no": student.mother_mobile_no,
"address": student.id.address
}
data.append(obj)
Expand Down Expand Up @@ -2151,9 +2154,9 @@ def generatestudentxlsheet(request):
data = None
else:
if(request_rollno != ""):
students = Student.objects.select_related('batch_id', 'id__user', 'batch_id__discipline', 'id').filter(id = request_rollno).only('batch', 'id__id', 'id__user', 'programme','pwd_status', 'father_mobile_no', 'mother_mobile_no', 'batch_id__discipline__acronym', 'specialization', 'id__sex', 'category', 'id__phone_no', 'id__date_of_birth', 'id__user__first_name', 'id__user__last_name', 'id__user__email', 'father_name', 'mother_name', 'id__address')
students = Student.objects.select_related('batch_id', 'id__user', 'batch_id__discipline', 'id').filter(id = request_rollno).only('batch', 'id__id', 'id__user', 'programme', 'batch_id__discipline__acronym', 'specialization', 'id__sex', 'category', 'id__phone_no', 'id__date_of_birth', 'id__user__first_name', 'id__user__last_name', 'id__user__email', 'father_name', 'mother_name', 'id__address')
else:
students = Student.objects.select_related('batch_id', 'id__user', 'batch_id__discipline', 'id').filter(**filter_names).order_by('id').all().only('batch', 'id__id', 'id__user', 'programme','pwd_status', 'father_mobile_no', 'mother_mobile_no', 'batch_id__discipline__acronym', 'specialization', 'id__sex', 'category', 'id__phone_no', 'id__date_of_birth', 'id__user__first_name', 'id__user__last_name', 'id__user__email', 'father_name', 'mother_name', 'id__address')
students = Student.objects.select_related('batch_id', 'id__user', 'batch_id__discipline', 'id').filter(**filter_names).order_by('id').all().only('batch', 'id__id', 'id__user', 'programme', 'batch_id__discipline__acronym', 'specialization', 'id__sex', 'category', 'id__phone_no', 'id__date_of_birth', 'id__user__first_name', 'id__user__last_name', 'id__user__email', 'father_name', 'mother_name', 'id__address')
for i in students:
obj = []
obj.append(i.batch)
Expand All @@ -2164,14 +2167,17 @@ def generatestudentxlsheet(request):
obj.append(i.specialization)
obj.append(i.id.sex)
obj.append(i.category)
obj.append(i.pwd_status)
#obj.append(i.pwd_status)
obj.append(None)
obj.append(i.id.phone_no)
obj.append(i.id.date_of_birth)
obj.append(i.id.user.email)
obj.append(i.father_name)
obj.append(i.father_mobile_no)
#obj.append(i.father_mobile_no)
obj.append(None)
obj.append(i.mother_name)
obj.append(i.mother_mobile_no)
# obj.append(i.mother_mobile_no)
obj.append(None)
obj.append(i.id.address)
data.append(obj)
data.sort()
Expand Down
4 changes: 3 additions & 1 deletion FusionIIIT/applications/academic_procedures/api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@
url(r'^acad/get_course_list' , views.get_course_list , name = 'get_course_list' ),
url(r'^acad/configure_pre_registration' , views.configure_pre_registration_date , name = 'configure_pre_registration'),
url(r'^acad/configure_final_registration' , views.configure_final_registration_date , name = 'configure_final_registration'),

url(r'^acad/add_course_to_slot' , views.add_course_to_slot , name = 'add_course_to_slot'),
url(r'^acad/remove_course_from_slot' , views.remove_course_from_slot , name = 'remove_course_from_slot'),
url(r'^get_next_sem_courses' , views.get_next_sem_courses , name= 'get_next_sem_courses'),


url(r'^fac/view_assigned_courses' , views.faculty_assigned_courses , name = 'faculty_assigned_courses'),
Expand Down
52 changes: 51 additions & 1 deletion FusionIIIT/applications/academic_procedures/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from django.shortcuts import get_object_or_404, redirect
from django.db import transaction

from django.http import JsonResponse
from rest_framework.permissions import IsAuthenticated
from rest_framework.authentication import TokenAuthentication
from rest_framework import status
Expand All @@ -29,6 +30,7 @@
get_pre_registration_eligibility,
get_final_registration_eligibility,
get_add_or_drop_course_date_eligibility,
get_detailed_sem_courses,
InitialRegistration)

from . import serializers
Expand Down Expand Up @@ -641,7 +643,38 @@ def configure_final_registration_date(request):
return Response(data = {"message" : "Physical Reporting at the Institute will be opened from " + str(from_date) + " to " + str(to_date) + ". " , } , status= status.HTTP_200_OK)
except Exception as e:
return Response(data = {"error " : str(e)} , status= status.HTTP_500_INTERNAL_SERVER_ERROR)


# with this api request acad person can add any courses in a specific slot
@api_view(['POST'])
def add_course_to_slot(request):
course_code = request.data.get('course_code')
course_slot_name = request.data.get('course_slot_name')
try:
course_slot = CourseSlot.objects.get(name=course_slot_name)
course = Courses.objects.get(code=course_code)
course_slot.courses.add(course)

return JsonResponse({'message': f'Course {course_code} added to slot {course_slot_name} successfully.'}, status=200)
except CourseSlot.DoesNotExist:
return JsonResponse({'error': 'Course slot does not exist.'}, status=400)
except Course.DoesNotExist:
return JsonResponse({'error': 'Course does not exist.'}, status=400)

# with this api request acad person can remove any course from a specific slot
@api_view(['POST'])
def remove_course_from_slot(request):
course_code = request.data.get('course_code')
course_slot_name = request.data.get('course_slot_name')
try:
course_slot = CourseSlot.objects.get(name=course_slot_name)
course = Courses.objects.get(code=course_code)
course_slot.courses.remove(course)
return JsonResponse({'message': f'Course {course_code} removed from slot {course_slot_name} successfully.'}, status=200)
except CourseSlot.DoesNotExist:
return JsonResponse({'error': 'Course slot does not exist.'}, status=400)
except Course.DoesNotExist:
return JsonResponse({'error': 'Course does not exist.'}, status=400)



#--------------------------------------- APIs of faculty----------------------------------------------------------
Expand All @@ -663,8 +696,25 @@ def faculty_assigned_courses(request):
return Response(data = {"error" : str(e)} , status= status.HTTP_500_INTERNAL_SERVER_ERROR)


@api_view(['POST'])
def get_next_sem_courses(request):
try:
next_sem = request.data.get('next_sem')
branch = request.data.get('branch')
programme = request.data.get('programme')
batch = request.data.get('batch')

# we go to student table and apply filters and get batch_id of the students with these filter
batch_id = Student.objects.filter(programme = programme , batch = batch , specialization = branch)[0].batch_id

curr_id = batch_id.curriculum
next_sem_id = Semester.objects.get(curriculum = curr_id, semester_no = next_sem)

if next_sem_id:
next_sem_registration_courses = get_detailed_sem_courses(next_sem_id )
return JsonResponse(next_sem_registration_courses, safe=False)
except Exception as e:
return Response(data = {"error" : str(e)} , status= status.HTTP_500_INTERNAL_SERVER_ERROR)



Expand Down
12 changes: 9 additions & 3 deletions FusionIIIT/applications/academic_procedures/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,23 @@
url(r'^main/', views.academic_procedures, name='procedures'),
url(r'^register/', views.register, name='register'),
url(r'^pre_registration/', views.pre_registration, name='pre_register'),
url(r'^auto_pre_registration/', views.auto_pre_registration, name='automatic_pre_register'),

url(r'^final_registration/', views.final_registration, name='final_register'),
url(r'^addCourse/', views.add_courses, name='addCourse'),
url(r'^add_one_course/' , views.add_one_course , name = 'add_one_course'),
url(r'^drop_course/', views.drop_course, name='drop_course'),
url(r'^replaceCourse/', views.replace_courses, name='replace_courses'),
url(r'^replace_one_course/', views.replace_one_course, name='replace_one_course'),
url(r'^branch-change/', views.approve_branch_change, name='branch_change'),
url(r'^brach-change-request/', views.branch_change_request,
name='branch_change_request'),
url(r'^acad_person/verifyCourse/drop/$',views.dropcourseadmin, name='dropcourseadmin'),
url(r'^acad_person/verifyCourse/', views.verify_course, name='verifyCourse'),
url(r'^acad_person/addCourse/', views.acad_add_course, name="acad_add_course"),
url(r'^acad_person/student_list$', views.student_list, name='studentlist'),
url(r'^acad_person/course_list$', views.course_list, name='courseList'),
url(r'^acad_person/$', views.acad_person, name='acad_person'),
url(r'^acad_person/verifyCourse/drop/$',
views.dropcourseadmin, name='dropcourseadmin'),
url(r'^branch-validate', views.approve_branch_change, name='branch_validate'),
url(r'^acad_person/branch_change/$',
views.acad_branch_change, name='acad_branch_change'),
Expand All @@ -27,6 +31,7 @@
url(r'^account/$', views.account),
url(r'^addThesis/$', views.add_thesis, name='add_thesis'),
url(r'^process_verification_request/$', views.process_verification_request),
url(r'^auto_process_verification_request/$', views.auto_process_verification_request),
url(r'^teaching_credit/$', views.teaching_credit_register),
url(r'^course_marks_data/$', views.course_marks_data), # --
url(r'^submit_marks/$', views.submit_marks), # --
Expand Down Expand Up @@ -65,6 +70,7 @@

url(r'^acad_person/remove_course_from_slot/' , views.remove_course_from_slot , name = 'remove_course_from_slot'),
url(r'^acad_person/add_course_to_slot/' , views.add_course_to_slot , name = 'add_course_to_slot'),

url(r'^acad_person/replaceSwayam/', views.replaceSwayam, name='replaceSwayam'),
url(r'^acad_person/swayam_replace/', views.swayam_replace, name='swayam_replace'),

]
Loading