Skip to content

Commit 58028ce

Browse files
authored
Merge pull request #1862 from vikrantwiz02/prod/acad-react
Added old_course_registration field to CourseAddRequest model and update related logic
2 parents 70199e6 + 12bc9b2 commit 58028ce

File tree

3 files changed

+72
-1
lines changed

3 files changed

+72
-1
lines changed

FusionIIIT/applications/academic_procedures/api/views.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,10 @@ def add_course(request):
288288
current_year = datetime.datetime.now().year
289289
session, semester_type = generate_current_session(current_year, student.curr_semester_no)
290290

291+
old_course_reg = course_registration.objects.filter(
292+
student_id=student,
293+
course_id=course
294+
).order_by('-working_year', '-semester_id__semester_no').first()
291295

292296
existing_request = CourseAddRequest.objects.filter(
293297
student=student,
@@ -310,6 +314,7 @@ def add_course(request):
310314
course_slot=slot,
311315
academic_year=session,
312316
semester_type=semester_type,
317+
old_course_registration=old_course_reg,
313318
status='Pending'
314319
)
315320
except Exception as create_error:
@@ -1264,6 +1269,10 @@ def verify_course(request):
12641269
year = today.year
12651270
semflag = 1 if today.month >= 7 else 2
12661271
yearr = f"{year}-{year+1}"
1272+
if today.month >= 7:
1273+
current_semester_type = "Odd Semester"
1274+
else:
1275+
current_semester_type = "Even Semester"
12671276

12681277
return Response({
12691278
"details": details,
@@ -1272,6 +1281,10 @@ def verify_course(request):
12721281
"semester_list": semester_list,
12731282
"courseslot_list": courseslot_list,
12741283
"date": {"year": yearr, "semflag": semflag},
1284+
"current_semester": {
1285+
"semester_no": student.curr_semester_no,
1286+
"semester_type": current_semester_type
1287+
}
12751288
})
12761289

12771290

@@ -3335,7 +3348,7 @@ def student_registrations_for_drop(request):
33353348
eligibility_resp = get_add_drop_replace_registration_eligibility(timezone.now().date(), student.curr_semester_no, datetime.datetime.now().year)
33363349
if isinstance(eligibility_resp, JsonResponse):
33373350
return eligibility_resp
3338-
regs = course_registration.objects.filter(student_id=student, semester_id__semester_no = student.curr_semester_no )
3351+
regs = course_registration.objects.filter(student_id=student, semester_id__semester_no = student.curr_semester_no ).order_by('course_slot_id__name')
33393352
out = []
33403353
for reg in regs:
33413354
out.append({
@@ -3883,6 +3896,13 @@ def approve_add_requests(request):
38833896
registration_type=registration_type
38843897
)
38853898
reg.save()
3899+
3900+
if add_request.old_course_registration:
3901+
course_replacement.objects.create(
3902+
old_course_registration=add_request.old_course_registration,
3903+
new_course_registration=reg
3904+
)
3905+
logger.info(f"Created course_replacement for request {req_id}: {add_request.old_course_registration.id} -> {reg.id}")
38863906

38873907
add_request.status = "Approved"
38883908
add_request.processed_at = timezone.now()
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Generated by Django 3.1.5 on 2026-01-06 13:55
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('academic_procedures', '0017_courseaddrequest'),
11+
]
12+
13+
operations = [
14+
migrations.AddField(
15+
model_name='courseaddrequest',
16+
name='old_course_registration',
17+
field=models.ForeignKey(blank=True, help_text='Reference to the previous course registration being replaced (for backlog/improvement)', null=True, on_delete=django.db.models.deletion.SET_NULL, to='academic_procedures.course_registration'),
18+
),
19+
migrations.AlterField(
20+
model_name='assistantshipclaim',
21+
name='year',
22+
field=models.IntegerField(choices=[(2026, 2026), (2025, 2025)]),
23+
),
24+
migrations.AlterField(
25+
model_name='course_registration',
26+
name='working_year',
27+
field=models.IntegerField(blank=True, choices=[(2026, 2026), (2025, 2025)], null=True),
28+
),
29+
migrations.AlterField(
30+
model_name='finalregistrations',
31+
name='batch',
32+
field=models.IntegerField(default=2026),
33+
),
34+
migrations.AlterField(
35+
model_name='messdue',
36+
name='year',
37+
field=models.IntegerField(choices=[(2026, 2026), (2025, 2025)]),
38+
),
39+
migrations.AlterField(
40+
model_name='register',
41+
name='year',
42+
field=models.IntegerField(default=2026),
43+
),
44+
]

FusionIIIT/applications/academic_procedures/models.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -935,6 +935,13 @@ class CourseAddRequest(models.Model):
935935
related_name='add_course_reqs',
936936
on_delete=models.CASCADE,
937937
)
938+
old_course_registration = models.ForeignKey(
939+
course_registration,
940+
null=True,
941+
blank=True,
942+
on_delete=models.SET_NULL,
943+
help_text="Reference to the previous course registration being replaced (for backlog/improvement)"
944+
)
938945
status = models.CharField(
939946
max_length=20,
940947
choices=STATUS_CHOICES,

0 commit comments

Comments
 (0)