Skip to content

Commit a9bac3c

Browse files
committed
lint fixes
1 parent 6a5db3b commit a9bac3c

File tree

2 files changed

+31
-18
lines changed

2 files changed

+31
-18
lines changed

tcf_website/api/enrollment.py

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,22 @@
1+
"""
2+
Module for fetching and updating section enrollment data asynchronously.
3+
"""
4+
15
import asyncio
2-
import requests
36
import time
47
from concurrent.futures import ThreadPoolExecutor
8+
9+
import requests
510
from django.utils import timezone
611
from asgiref.sync import sync_to_async
12+
from django.http import HttpResponseNotFound
713

814
from tcf_website.models import Section, SectionEnrollment, Semester, Course
915

1016
TIMEOUT = 10
1117
MAX_WORKERS = 5
1218

19+
1320
def fetch_section_data(section):
1421
"""Fetch enrollment data for a given section from the UVA SIS API."""
1522
url = (
@@ -34,20 +41,24 @@ def fetch_section_data(section):
3441
}
3542
except requests.exceptions.RequestException as e:
3643
print(f"Network error while fetching section {section.sis_section_number}: {e}")
37-
except Exception as e:
38-
print(f"Unexpected error while fetching section {section.sis_section_number}: {e}")
39-
44+
except ValueError as e:
45+
print(f"JSON decoding error for section {section.sis_section_number}: {e}")
46+
4047
return {}
4148

4249

4350
async def update_enrollment_data(course_id):
4451
"""Asynchronous function to update enrollment data using ThreadPoolExecutor."""
4552
start_time = time.monotonic()
46-
53+
54+
if not await sync_to_async(Course.objects.filter(id=course_id).exists)():
55+
return HttpResponseNotFound("Course not found.")
4756
course = await sync_to_async(Course.objects.get)(id=course_id)
4857
latest_semester = await sync_to_async(Semester.latest)()
49-
sections = await sync_to_async(list)(Section.objects.filter(course=course, semester=latest_semester))
50-
58+
sections = await sync_to_async(list)(
59+
Section.objects.filter(course=course, semester=latest_semester)
60+
)
61+
5162
if not sections:
5263
print(f"No sections found for course {course.code()} in semester {latest_semester}.")
5364
return
@@ -68,20 +79,23 @@ async def process_section(section):
6879
await asyncio.gather(*(process_section(section) for section in sections))
6980

7081
elapsed_time = time.monotonic() - start_time
71-
print(f"Enrollment update completed at {timezone.now()} (Total time: {elapsed_time:.2f} seconds)")
82+
print(f"Enrollment update completed at {timezone.now()} "
83+
f"(Total time: {elapsed_time:.2f} seconds)")
7284

7385

7486
def update_section_enrollment(section, data):
7587
"""Update SectionEnrollment safely within an async function."""
7688
section_enrollment, _ = SectionEnrollment.objects.get_or_create(section=section)
77-
section_enrollment.enrollment_taken = data.get('enrollment_taken', 0)
78-
section_enrollment.enrollment_limit = data.get('enrollment_limit', 0)
79-
section_enrollment.waitlist_taken = data.get('waitlist_taken', 0)
80-
section_enrollment.waitlist_limit = data.get('waitlist_limit', 0)
89+
section_enrollment.enrollment_taken = data.get("enrollment_taken", 0)
90+
section_enrollment.enrollment_limit = data.get("enrollment_limit", 0)
91+
section_enrollment.waitlist_taken = data.get("waitlist_taken", 0)
92+
section_enrollment.waitlist_limit = data.get("waitlist_limit", 0)
8193
section_enrollment.save()
82-
94+
8395
print(
8496
f"Updated section {section.sis_section_number} | "
85-
f"Enrollment: {section_enrollment.enrollment_taken}/{section_enrollment.enrollment_limit} | "
86-
f"Waitlist: {section_enrollment.waitlist_taken}/{section_enrollment.waitlist_limit}"
97+
f"Enrollment: {section_enrollment.enrollment_taken}/"
98+
f"{section_enrollment.enrollment_limit} | "
99+
f"Waitlist: {section_enrollment.waitlist_taken}/"
100+
f"{section_enrollment.waitlist_limit}"
87101
)

tcf_website/views/browse.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from threading import Thread
88
from typing import Any
99

10-
from django.core.cache import cache
1110
from django.core.exceptions import ObjectDoesNotExist
1211
from django.db.models import Avg, CharField, F, Q, Value
1312
from django.db.models.functions import Concat
@@ -281,15 +280,15 @@ def course_instructor(request, course_id, instructor_id, method="Most Recent"):
281280
for time in section.section_times.split(","):
282281
if len(time) > 0:
283282
times.append(time)
284-
283+
285284
section_enrollment = SectionEnrollment.objects.filter(section=section).first()
286285
enrollment_data = {
287286
'enrollment_taken': section_enrollment.enrollment_taken if section_enrollment else None,
288287
'enrollment_limit': section_enrollment.enrollment_limit if section_enrollment else None,
289288
'waitlist_taken': section_enrollment.waitlist_taken if section_enrollment else None,
290289
'waitlist_limit': section_enrollment.waitlist_limit if section_enrollment else None
291290
}
292-
291+
293292
section_info["sections"][section.sis_section_number] = {
294293
"type": section.section_type,
295294
"units": section.units,

0 commit comments

Comments
 (0)