Skip to content

Commit

Permalink
refactor: Eliminate settings.SENIOR_GRADUATION_YEAR
Browse files Browse the repository at this point in the history
In favor of auto-detection based on current date.
  • Loading branch information
anonymoose2 committed May 14, 2020
1 parent b47f849 commit 5dac96e
Show file tree
Hide file tree
Showing 19 changed files with 70 additions and 53 deletions.
4 changes: 2 additions & 2 deletions intranet/apps/announcements/tests.py
@@ -1,16 +1,16 @@
from django.conf import settings
from django.contrib.auth import get_user_model
from django.urls import reverse

from ...test.ion_test import IonTestCase
from ...utils.date import get_senior_graduation_year
from ..users.models import Group


class AnnouncementTest(IonTestCase):
"""Tests for the announcements module."""

def setUp(self):
self.user = get_user_model().objects.get_or_create(username="awilliam", graduation_year=settings.SENIOR_GRADUATION_YEAR + 1)[0]
self.user = get_user_model().objects.get_or_create(username="awilliam", graduation_year=get_senior_graduation_year() + 1)[0]

def test_get_announcements(self):
self.login()
Expand Down
4 changes: 2 additions & 2 deletions intranet/apps/api/tests.py
Expand Up @@ -5,12 +5,12 @@
from oauth2_provider.models import AccessToken, get_application_model
from oauth2_provider.settings import oauth2_settings

from django.conf import settings
from django.contrib.auth import get_user_model
from django.urls import reverse
from django.utils import timezone

from ...test.ion_test import IonTestCase
from ...utils.date import get_senior_graduation_year
from ..bus.models import Route
from ..eighth.models import EighthActivity, EighthBlock, EighthRoom, EighthScheduledActivity, EighthSignup
from ..schedule.models import Block, Day, DayType, Time
Expand All @@ -22,7 +22,7 @@ class ApiTest(IonTestCase):
"""Tests for the api module."""

def setUp(self):
self.user = get_user_model().objects.get_or_create(username="awilliam", graduation_year=(settings.SENIOR_GRADUATION_YEAR + 1))[0]
self.user = get_user_model().objects.get_or_create(username="awilliam", graduation_year=(get_senior_graduation_year() + 1))[0]
self.application = Application(
name="Test Application",
redirect_uris="http://localhost http://example.com http://example.it",
Expand Down
5 changes: 3 additions & 2 deletions intranet/apps/auth/views.py
Expand Up @@ -19,6 +19,7 @@
from django.views.decorators.debug import sensitive_post_parameters
from django.views.generic.base import View

from ...utils.date import get_senior_graduation_date, get_senior_graduation_year
from ...utils.helpers import dark_mode_enabled, get_ap_week_warning
from ..dashboard.views import dashboard_view, get_fcps_emerg
from ..eighth.models import EighthBlock
Expand Down Expand Up @@ -135,8 +136,8 @@ def index_view(request, auth_form=None, force_login=False, added_context=None, h
"bg_pattern": get_bg_pattern(request),
"theme": get_login_theme(),
"login_warning": login_warning,
"senior_graduation": settings.SENIOR_GRADUATION,
"senior_graduation_year": settings.SENIOR_GRADUATION_YEAR,
"senior_graduation": get_senior_graduation_date().strftime("%B %d %Y %H:%M:%S"),
"senior_graduation_year": get_senior_graduation_year(),
"sports_events": sports_events,
"school_events": school_events,
"should_not_index_page": has_next_page,
Expand Down
5 changes: 3 additions & 2 deletions intranet/apps/dashboard/views.py
Expand Up @@ -8,6 +8,7 @@
from django.urls import reverse
from django.utils import timezone

from ...utils.date import get_senior_graduation_date, get_senior_graduation_year
from ...utils.helpers import get_ap_week_warning, get_fcps_emerg
from ..announcements.models import Announcement, AnnouncementRequest
from ..eighth.models import EighthBlock, EighthScheduledActivity, EighthSignup
Expand Down Expand Up @@ -305,8 +306,8 @@ def add_widgets_context(request, context):
"schedule": schedule,
"last_displayed_block": schedule[-1] if schedule else None,
"no_signup_today": no_signup_today,
"senior_graduation": settings.SENIOR_GRADUATION,
"senior_graduation_year": settings.SENIOR_GRADUATION_YEAR,
"senior_graduation": get_senior_graduation_date().strftime("%B %d %Y %H:%M:%S"),
"senior_graduation_year": get_senior_graduation_year(),
}
)

Expand Down
23 changes: 13 additions & 10 deletions intranet/apps/dataimport/management/commands/year_cleanup.py
@@ -1,12 +1,12 @@
import datetime
import sys

from django.conf import settings
from django.contrib.auth import get_user_model
from django.core.management.base import BaseCommand
from django.utils import timezone

from intranet.apps.eighth.models import EighthSignup
from intranet.utils.date import get_senior_graduation_year


class Command(BaseCommand):
Expand All @@ -15,6 +15,9 @@ class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument("--run", action="store_true", dest="run", default=False, help="Actually run.")
parser.add_argument("--confirm", action="store_true", dest="confirm", default=False, help="Skip confirmation.")
parser.add_argument(
"--senior-graduation-year", dest="senior_grad_year", type=int, default=get_senior_graduation_year(), help="The senior graduation year",
)

def ask(self, q):
if input("{} [Yy]: ".format(q)).lower() != "y":
Expand Down Expand Up @@ -49,9 +52,9 @@ def handle(self, *args, **options):
turnover_date = datetime.datetime(current_year, 7, 1)
self.stdout.write("Turnover date set to: {}".format(turnover_date.strftime("%c")))

if not self.chk(
"SENIOR_GRADUATION_YEAR = {} in settings/__init__.py".format(new_senior_year), settings.SENIOR_GRADUATION_YEAR == new_senior_year
):
senior_grad_year = options["senior_grad_year"]

if not self.chk("senior_grad_year = {}".format(new_senior_year), senior_grad_year == new_senior_year):
return
"""
EIGHTH:
Expand All @@ -76,11 +79,11 @@ def handle(self, *args, **options):

self.stdout.write("Deleting graduated users")
if do_run:
self.handle_delete()
self.handle_delete(senior_grad_year=senior_grad_year)

self.stdout.write("Archiving admin comments")
if do_run:
self.archive_admin_comments()
self.archive_admin_comments(senior_grad_year=senior_grad_year)

def clear_absences(self):
absents = EighthSignup.objects.filter(was_absent=True)
Expand All @@ -92,12 +95,12 @@ def clear_absences(self):
def update_welcome(self):
get_user_model().objects.all().update(seen_welcome=False)

def archive_admin_comments(self):
for usr in get_user_model().objects.filter(user_type="student", graduation_year__gte=settings.SENIOR_GRADUATION_YEAR):
def archive_admin_comments(self, *, senior_grad_year: int):
for usr in get_user_model().objects.filter(user_type="student", graduation_year__gte=senior_grad_year):
usr.archive_admin_comments()

def handle_delete(self):
for usr in get_user_model().objects.filter(graduation_year__lt=settings.SENIOR_GRADUATION_YEAR).exclude(user_type="alum"):
def handle_delete(self, *, senior_grad_year: int):
for usr in get_user_model().objects.filter(graduation_year__lt=senior_grad_year).exclude(user_type="alum"):
if not usr.is_superuser and not usr.is_staff:
usr.handle_delete()
self.stdout.write(str(usr.delete()))
Expand Down
5 changes: 2 additions & 3 deletions intranet/apps/dataimport/tests.py
Expand Up @@ -14,12 +14,11 @@ def test_year_cleanup(self):
out = StringIO()
year = timezone.now().year
turnover_date = datetime(year, 7, 1)
with self.settings(SENIOR_GRADUATION_YEAR=year + 1):
call_command("year_cleanup", stdout=out)
call_command("year_cleanup", stdout=out, senior_grad_year=year + 1)
output = [
"In pretend mode.",
"Turnover date set to: {}".format(turnover_date.strftime("%c")),
"OK: SENIOR_GRADUATION_YEAR = {} in settings/__init__.py".format(year + 1),
"OK: senior_grad_year = {}".format(year + 1),
"Resolving absences",
"Updating welcome state",
"Deleting graduated users",
Expand Down
16 changes: 8 additions & 8 deletions intranet/apps/eighth/tests.py
@@ -1,12 +1,12 @@
import datetime

from django.conf import settings
from django.contrib.auth import get_user_model
from django.urls import reverse
from django.utils import timezone
from django.utils.http import urlencode

from ...test.ion_test import IonTestCase
from ...utils.date import get_senior_graduation_year
from ..groups.models import Group
from ..users.models import Email
from .exceptions import SignupException
Expand Down Expand Up @@ -39,7 +39,7 @@ class EighthTest(EighthAbstractTest):
"""

def setUp(self):
self.user = get_user_model().objects.get_or_create(username="awilliam", graduation_year=settings.SENIOR_GRADUATION_YEAR + 1, id=8889)[0]
self.user = get_user_model().objects.get_or_create(username="awilliam", graduation_year=get_senior_graduation_year() + 1, id=8889)[0]

def create_sponsor(self):
user = get_user_model().objects.get_or_create(username="ateacher", first_name="A", last_name="Teacher", user_type="teacher")[0]
Expand Down Expand Up @@ -140,7 +140,7 @@ def test_signups(self):
"""Do some sample signups."""

self.make_admin()
user1 = get_user_model().objects.create(username="user1", graduation_year=settings.SENIOR_GRADUATION_YEAR + 1)
user1 = get_user_model().objects.create(username="user1", graduation_year=get_senior_graduation_year() + 1)
block1 = self.add_block(date="2015-01-01", block_letter="A")
room1 = self.add_room(name="room1", capacity=1)

Expand All @@ -154,7 +154,7 @@ def test_blacklist(self):
"""Make sure users cannot sign up for blacklisted activities."""

self.make_admin()
user1 = get_user_model().objects.create(username="user1", graduation_year=settings.SENIOR_GRADUATION_YEAR)
user1 = get_user_model().objects.create(username="user1", graduation_year=get_senior_graduation_year())
block1 = self.add_block(date="2015-01-01", block_letter="A")
room1 = self.add_room(name="room1", capacity=1)

Expand Down Expand Up @@ -213,7 +213,7 @@ def test_room_formatting(self):
def test_both_blocks(self):
"""Make sure that signing up for a both blocks activity works."""
self.make_admin()
user1 = get_user_model().objects.create(username="user1", graduation_year=settings.SENIOR_GRADUATION_YEAR + 1)
user1 = get_user_model().objects.create(username="user1", graduation_year=get_senior_graduation_year() + 1)
group1 = Group.objects.create(name="group1")
user1.groups.add(group1)
block1 = self.add_block(date="2015-01-01", block_letter="A")
Expand Down Expand Up @@ -245,7 +245,7 @@ def test_both_blocks(self):

def test_signup_status_email(self):
self.make_admin()
user1 = get_user_model().objects.create(username="user1", graduation_year=settings.SENIOR_GRADUATION_YEAR + 1)
user1 = get_user_model().objects.create(username="user1", graduation_year=get_senior_graduation_year() + 1)
Email.objects.get_or_create(address="awilliam@tjhsst.edu", user=user1)
block1 = self.add_block(date="2015-01-01", block_letter="A")
block2 = self.add_block(date="2015-01-01", block_letter="B")
Expand Down Expand Up @@ -311,7 +311,7 @@ def test_take_attendance_zero(self):
def test_take_attendance_cancelled(self):
""" Make sure students in a cancelled activity are marked as absent when the button is pressed. """
self.make_admin()
user1 = get_user_model().objects.create(username="user1", graduation_year=settings.SENIOR_GRADUATION_YEAR + 1)
user1 = get_user_model().objects.create(username="user1", graduation_year=get_senior_graduation_year() + 1)
block1 = self.add_block(date="3000-11-11", block_letter="A")

room1 = self.add_room(name="room1", capacity=1)
Expand Down Expand Up @@ -343,7 +343,7 @@ def test_take_attendance_cancelled(self):
def test_switch_cancelled_sticky(self):
"""Make sure users can switch out of cancelled activities even if they are stickied in."""
self.make_admin()
user1 = get_user_model().objects.create(username="user1", graduation_year=settings.SENIOR_GRADUATION_YEAR + 1)
user1 = get_user_model().objects.create(username="user1", graduation_year=get_senior_graduation_year() + 1)

EighthActivity.objects.all().delete()
EighthBlock.objects.all().delete()
Expand Down
6 changes: 3 additions & 3 deletions intranet/apps/eighth/views/activities.py
Expand Up @@ -15,7 +15,7 @@
from django.shortcuts import get_object_or_404, render
from django.utils import timezone

from ....utils.date import get_date_range_this_year
from ....utils.date import get_date_range_this_year, get_senior_graduation_year
from ....utils.serialization import safe_json
from ...auth.decorators import deny_restricted
from ..models import EighthActivity, EighthBlock, EighthScheduledActivity
Expand Down Expand Up @@ -200,7 +200,7 @@ def calculate_statistics(activity, start_date=None, all_years=False, year=None,

old_blocks = 0

if year is not None and year == settings.SENIOR_GRADUATION_YEAR:
if year is not None and year == get_senior_graduation_year():
start_date = datetime.today()

if start_date is None or future:
Expand All @@ -211,7 +211,7 @@ def calculate_statistics(activity, start_date=None, all_years=False, year=None,
past_start_date = activities.count() - filtered_activities.count()

if not all_years:
if year is None or year == settings.SENIOR_GRADUATION_YEAR:
if year is None or year == get_senior_graduation_year():
year_start, year_end = get_date_range_this_year()
else:
year_start, year_end = get_date_range_this_year(datetime(year, 1, 1))
Expand Down
4 changes: 2 additions & 2 deletions intranet/apps/emailfwd/tests.py
@@ -1,14 +1,14 @@
from django.conf import settings
from django.contrib.auth import get_user_model
from django.urls import reverse

from ...test.ion_test import IonTestCase
from ...utils.date import get_senior_graduation_year


class EmailFwdTest(IonTestCase):
def test_email_fwd(self):
"""Email Forward sanity check."""
get_user_model().objects.get_or_create(username="awilliam", graduation_year=settings.SENIOR_GRADUATION_YEAR)
get_user_model().objects.get_or_create(username="awilliam", graduation_year=get_senior_graduation_year())
self.login()

response = self.client.get(reverse("senior_emailfwd"))
Expand Down
6 changes: 3 additions & 3 deletions intranet/apps/parking/tests.py
@@ -1,8 +1,8 @@
from django.conf import settings
from django.contrib.auth import get_user_model
from django.urls import reverse

from ...test.ion_test import IonTestCase
from ...utils.date import get_senior_graduation_year
from .models import CarApplication, ParkingApplication


Expand All @@ -16,7 +16,7 @@ def login_with_args(self, uname, grad_year):
return user

def test_parking_form_junior(self):
user = self.login_with_args("awilliam", settings.SENIOR_GRADUATION_YEAR + 1)
user = self.login_with_args("awilliam", get_senior_graduation_year() + 1)

response = self.client.post(reverse("parking_form"), data={"email": user.tj_email, "mentorship": False})

Expand All @@ -41,7 +41,7 @@ def test_parking_form_junior(self):
self.assertTrue(parking_apps[0].cars.count(), 1)

def test_invalid_user(self):
user = self.login_with_args("bwilliam", settings.SENIOR_GRADUATION_YEAR + 2)
user = self.login_with_args("bwilliam", get_senior_graduation_year() + 2)

response = self.client.post(reverse("parking_form"), data={"email": user.tj_email, "mentorship": False})

Expand Down
4 changes: 2 additions & 2 deletions intranet/apps/polls/views.py
Expand Up @@ -4,14 +4,14 @@
from collections import OrderedDict

from django import http
from django.conf import settings
from django.contrib import messages
from django.contrib.auth import get_user_model
from django.contrib.auth.decorators import login_required
from django.core.serializers import serialize
from django.shortcuts import get_object_or_404, redirect, render
from django.utils import timezone

from ...utils.date import get_senior_graduation_year
from ...utils.html import safe_html
from ..auth.decorators import deny_restricted
from .forms import PollForm
Expand Down Expand Up @@ -311,7 +311,7 @@ def generate_choice(name, votes, total_count, do_gender=True, show_answers=False
}

for yr in range(9, 14):
yr_votes = votes.filter(user__graduation_year=settings.SENIOR_GRADUATION_YEAR + 12 - yr)
yr_votes = votes.filter(user__graduation_year=get_senior_graduation_year() + 12 - yr)
choice["votes"][yr] = {
"all": yr_votes.count(),
"male": yr_votes.filter(user__gender=True).count() if do_gender else 0,
Expand Down
4 changes: 2 additions & 2 deletions intranet/apps/preferences/tests.py
@@ -1,17 +1,17 @@
from django.conf import settings
from django.contrib.auth import get_user_model
from django.test.client import RequestFactory
from django.urls import reverse

from ...test.ion_test import IonTestCase
from ...utils.date import get_senior_graduation_year
from ..bus.models import Route
from .forms import EmailForm
from .views import save_bus_route


class PreferencesTest(IonTestCase):
def setUp(self):
self.user = get_user_model().objects.get_or_create(username="awilliam", id="99999", graduation_year=settings.SENIOR_GRADUATION_YEAR + 1)[0]
self.user = get_user_model().objects.get_or_create(username="awilliam", id="99999", graduation_year=get_senior_graduation_year() + 1)[0]
route_names = ["JT-002", "JT-001"]
for route_name in route_names:
Route.objects.get_or_create(route_name=route_name, space="", bus_number="")
Expand Down
4 changes: 3 additions & 1 deletion intranet/apps/seniors/models.py
@@ -1,6 +1,8 @@
from django.conf import settings
from django.db import models

from ...utils.date import get_senior_graduation_year


class College(models.Model):
name = models.CharField(max_length=1000)
Expand All @@ -15,7 +17,7 @@ class Meta:

class SeniorManager(models.Manager):
def filled(self):
return Senior.objects.exclude(college=None, major=None).filter(user__graduation_year=settings.SENIOR_GRADUATION_YEAR)
return Senior.objects.exclude(college=None, major=None).filter(user__graduation_year=get_senior_graduation_year())


class Senior(models.Model):
Expand Down
4 changes: 2 additions & 2 deletions intranet/apps/seniors/views.py
Expand Up @@ -4,7 +4,7 @@
from django.contrib.auth.decorators import login_required
from django.shortcuts import redirect, render

from ...settings import SENIOR_GRADUATION_YEAR
from ...utils.date import get_senior_graduation_year
from ..auth.decorators import deny_restricted
from .forms import SeniorForm
from .models import Senior
Expand All @@ -17,7 +17,7 @@
def seniors_home_view(request):
seniors = (
Senior.objects.exclude(college=None, major=None)
.filter(user__graduation_year=SENIOR_GRADUATION_YEAR)
.filter(user__graduation_year=get_senior_graduation_year())
.order_by("user__last_name", "user__first_name")
)
try:
Expand Down

0 comments on commit 5dac96e

Please sign in to comment.