intranet/apps/bus/views.py

Summary

Maintainability
A
3 hrs
Test Coverage
import datetime

from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.http import Http404
from django.shortcuts import render
from django.utils import timezone

from ..auth.decorators import deny_restricted
from ..schedule.models import Day
from .models import Route


@login_required
@deny_restricted
def home(request):
    now = timezone.localtime()
    if now.hour >= settings.BUS_PAGE_CHANGEOVER_HOUR:  # afternoon
        return afternoon(request, True)
    else:  # morning
        return morning(request, True)


@login_required
@deny_restricted
def morning(request, on_home=False):
    if not settings.ENABLE_BUS_APP:
        raise Http404("Bus app not enabled.")
    is_bus_admin = request.user.has_admin_permission("bus")
    routes = Route.objects.all()
    ctx = {
        "admin": is_bus_admin,
        "enable_bus_driver": settings.ENABLE_BUS_DRIVER,
        "bus_list": routes,
        "changeover_time": settings.BUS_PAGE_CHANGEOVER_HOUR,
        "on_home": on_home,
    }
    return render(request, "bus/morning.html", context=ctx)


@login_required
@deny_restricted
def afternoon(request, on_home=False):
    if not settings.ENABLE_BUS_APP:
        raise Http404("Bus app not enabled.")
    is_bus_admin = request.user.has_admin_permission("bus")

    now = timezone.localtime()
    day = Day.objects.today()
    if day is not None and day.end_time is not None:
        end_of_day = day.end_time.date_obj(now.date())
    else:
        end_of_day = datetime.datetime(now.year, now.month, now.day, settings.SCHOOL_END_HOUR, settings.SCHOOL_END_MINUTE)

    ctx = {
        "admin": is_bus_admin,
        "enable_bus_driver": settings.ENABLE_BUS_DRIVER,
        "changeover_time": settings.BUS_PAGE_CHANGEOVER_HOUR,
        "school_end_hour": end_of_day.hour,
        "school_end_time": end_of_day.minute,
        "on_home": on_home,
    }
    return render(request, "bus/home.html", context=ctx)