Merge branch 'master' into master

This commit is contained in:
Shreyas Mayya 2023-04-05 18:58:25 -04:00 committed by GitHub
commit ea241d7242
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
35 changed files with 570 additions and 437 deletions

38
Pipfile
View File

@ -4,33 +4,33 @@ verify_ssl = true
name = "pypi"
[packages]
crispy-bootstrap5 = "~=0.6"
django = "~=3.2.13"
crispy-bootstrap5 = "~=0.7"
django = "~=3.2.18"
django-bootstrap-pagination = "~=1.7.1"
django-crispy-forms = "~=1.14.0"
django-extensions = "~=3.1.5"
django-extensions = "~=3.2.1"
gunicorn = "~=20.1.0"
ipython = "~=8.2.0"
mistune = "~=2.0.2"
psycopg2 = "~=2.9.3"
pygments = "~=2.11.2"
ipython = "~=8.10.0"
mistune = "~=2.0.5"
psycopg2 = "~=2.9.5"
pygments = "~=2.14.0"
social-auth-app-django = "~=5.0.0"
whitenoise = "~=6.0.0"
whitenoise = "~=6.4.0"
[dev-packages]
autopep8 = "~=1.6.0"
black = "==22.3.0"
coverage = "~=6.3.2"
django-stubs = "~=1.9.0"
flake8 = "~=4.0.1"
isort = "~=5.10.1"
mypy = "~=0.942"
pylint = "~=2.13.7"
autopep8 = "~=2.0.1"
black = "~=23.1.0"
coverage = "~=7.2.1"
django-stubs = "~=1.15.0"
flake8 = "~=6.0.0"
isort = "~=5.12.0"
mypy = "~=1.0.1"
pylint = "~=2.16.2"
pylint-django = "~=2.5.3"
pyyaml = "~=6.0"
typed-ast = "~=1.5.3" # Required by black, but Pipenv doesn't pull it in correctly on 3.8
types-Markdown = "~=3.3.13" # To avoid CI failures
types-bleach = "~=5.0.2" # To avoid CI failures
typed-ast = "~=1.5.4" # Required by black, but Pipenv doesn't pull it in correctly on 3.8
types-Markdown = "~=3.4.2.5" # To avoid CI failures
types-bleach = "~=6.0.0.1" # To avoid CI failures
[requires]
python_version = "3.9"

925
Pipfile.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@ init-hook=import sys; sys.path.insert(0, 'tjdests/apps')
load-plugins=pylint_django
[MAIN]
disable=missing-docstring,no-else-return,no-else-raise,bad-continuation,duplicate-code,too-many-branches,too-many-nested-blocks,too-many-locals,too-many-statements,too-many-public-methods
disable=missing-docstring,no-else-return,no-else-raise,duplicate-code,too-many-branches,too-many-nested-blocks,too-many-locals,too-many-statements,too-many-public-methods
max-line-length=100
ignore=media,migrations
ignore-patterns=secret*

View File

@ -29,6 +29,7 @@ class TOSForm(forms.Form):
def clean(self):
cleaned_data = super().clean()
assert cleaned_data is not None
password1 = cleaned_data.get("password")
password2 = cleaned_data.get("password_confirm")

View File

@ -7,7 +7,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = []

View File

@ -5,7 +5,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("authentication", "0002_initial"),
]

View File

@ -5,7 +5,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("destinations", "0005_alter_decision_admission_status"),
("authentication", "0003_alter_user_publish_data"),

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("authentication", "0004_auto_20210419_1713"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("authentication", "0005_user_gpa"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("authentication", "0006_alter_user_biography"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("authentication", "0007_alter_user_gpa"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("authentication", "0008_alter_user_biography"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("authentication", "0009_user_last_modified"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("authentication", "0010_user_nickname"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("authentication", "0011_user_use_nickname"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("authentication", "0012_user_preferred_name"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("authentication", "0013_alter_user_gpa"),
]

View File

@ -45,7 +45,8 @@ def accept_tos_view(request: HttpRequest) -> HttpResponse:
form = TOSForm(request.POST)
if form.is_valid():
request.user.accepted_terms = form.cleaned_data.get("accept_tos")
accept_tos = form.cleaned_data.get("accept_tos")
request.user.accepted_terms = accept_tos
request.user.set_password(form.cleaned_data.get("password"))
request.user.save()

View File

@ -6,7 +6,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("destinations", "0001_initial"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("destinations", "0002_decision_admitted"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("destinations", "0003_alter_decision_admitted"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("destinations", "0004_rename_admitted_decision_admission_status"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("destinations", "0005_alter_decision_admission_status"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("destinations", "0006_alter_college_ceeb_code"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("destinations", "0007_alter_decision_admission_status"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("destinations", "0008_alter_decision_admission_status"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("destinations", "0009_alter_decision_admission_status"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("destinations", "0010_alter_college_options"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("destinations", "0011_auto_20210423_2357"),
]

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("destinations", "0012_alter_decision_options"),
]

View File

@ -1,6 +1,7 @@
from unittest.mock import mock_open, patch
from django.core.management import CommandError, call_command
from django.http import HttpResponseRedirect
from django.urls import reverse
from ...test import TJDestsTestCase
@ -15,6 +16,7 @@ class DestinationsTest(TJDestsTestCase):
# Test as an unauthenticated user.
response = self.client.get(reverse("destinations:students"))
self.assertEqual(302, response.status_code)
assert isinstance(response, HttpResponseRedirect)
self.assertEqual(
reverse("authentication:login")
+ f"?next={reverse('destinations:students')}",
@ -191,6 +193,7 @@ class DestinationsTest(TJDestsTestCase):
response = self.client.get(reverse("destinations:colleges"))
self.assertEqual(302, response.status_code)
assert isinstance(response, HttpResponseRedirect)
self.assertEqual(
reverse("authentication:login")
+ f"?next={reverse('destinations:colleges')}",

View File

@ -30,6 +30,7 @@ class ProfilePublishForm(forms.ModelForm):
if data.get("biography"):
data["biography"] = data["biography"].replace("\r", "")
self.instance.biography = data["biography"]
assert self.fields["biography"].max_length is not None
if len(data["biography"]) <= self.fields["biography"].max_length:
if self.errors.get("biography"):
del self.errors["biography"]
@ -37,6 +38,8 @@ class ProfilePublishForm(forms.ModelForm):
self.data = data
cleaned_data = super().clean()
assert cleaned_data is not None
# Check the GPA: 0.0 <= GPA <= 5.0
if cleaned_data.get("GPA"):
gpa = cleaned_data.get("GPA")
@ -74,6 +77,7 @@ class DecisionForm(forms.ModelForm):
def clean(self) -> Dict[str, Any]:
cleaned_data = super().clean()
assert cleaned_data is not None
# Ensure that the college is not a duplicate for this user
# Yes, this is weird. Basically: if we are not editing
@ -143,6 +147,7 @@ class TestScoreForm(forms.ModelForm):
def clean(self) -> Dict[str, Any]:
cleaned_data = super().clean()
assert cleaned_data is not None
exam_type = str(cleaned_data.get("exam_type"))

View File

@ -1,5 +1,6 @@
from decimal import Decimal
from django.http import HttpResponseRedirect
from django.urls import reverse
from tjdests.apps.authentication.models import User
@ -16,6 +17,7 @@ class ProfileTest(TJDestsTestCase):
# Test as an unauthenticated user.
response = self.client.get(reverse("profile:index"))
self.assertEqual(302, response.status_code)
assert isinstance(response, HttpResponseRedirect)
self.assertEqual(
reverse("authentication:login") + f"?next={reverse('profile:index')}",
response.url,
@ -25,6 +27,7 @@ class ProfileTest(TJDestsTestCase):
self.login(accept_tos=False, make_student=True)
response = self.client.get(reverse("profile:index"))
self.assertEqual(302, response.status_code)
assert isinstance(response, HttpResponseRedirect)
self.assertEqual(reverse("authentication:tos"), response.url)
# Test as a user that has accepted TOS