semester.api 源代码
from datetime import date
from django.db.models import Q
from semester.models import Semester
[文档]
def current_semester(allow_fallback: bool = True) -> Semester:
"""
A wrapper for `semester_of`.
"""
return semester_of(date.today(), allow_fallback)
[文档]
def next_semester() -> Semester:
"""
Get next semester.
"""
today = date.today()
return Semester.objects.filter(start_date__gt=today).earliest('start_date')
[文档]
def semester_of(date, allow_fallback: bool = True) -> Semester:
"""
Get semester containing date.
If no semester contains date and `fallback` is `True`, return the semester just passed.
Otherwise, raise Exception.
"""
q = Q(start_date__lte=date)
if not allow_fallback:
q = q & Q(end_date__gte=date)
return Semester.objects.filter(q).latest('start_date')