From 02de0f6dafcc5e88b99b6ee2ce1933cb3123e11f Mon Sep 17 00:00:00 2001 From: "Noah Hanford (spaced)" Date: Sat, 8 Aug 2026 11:10:27 -0400 Subject: [PATCH 1/2] fix: make the become active button work --- conditional/blueprints/dashboard.py | 7 +++--- conditional/util/ldap.py | 9 ++++++-- requirements.in | 2 +- requirements.txt | 34 ++++++++++++++++------------- 4 files changed, 31 insertions(+), 21 deletions(-) diff --git a/conditional/blueprints/dashboard.py b/conditional/blueprints/dashboard.py index 67b2db7b..6c409e00 100644 --- a/conditional/blueprints/dashboard.py +++ b/conditional/blueprints/dashboard.py @@ -12,7 +12,7 @@ from conditional.util.auth import get_user from conditional.util.flask import render_template from conditional.util.housing import get_queue_position -from conditional.util.ldap import ldap_get_active_member_uids +from conditional.util.ldap import ldap_get_active_member_uids, ldap_is_active, ldap_is_bad_standing, ldap_is_uid_active, ldap_is_uid_bad_standing from conditional.util.major_project import get_project_list from conditional.util.member import gatekeep_values, get_freshman_data, get_voting_members, \ get_cm, get_hm, is_gatekeep_active, req_cm @@ -44,8 +44,9 @@ def display_dashboard(user_dict=None): data = {} data['username'] = uid - data['active'] = user_dict_is_active(user_dict) - data['bad_standing'] = user_dict_is_bad_standing(user_dict) + + data['active'] = ldap_is_uid_active(uid) + data['bad_standing'] = ldap_is_uid_bad_standing(uid) data['onfloor'] = on_floor data['voting'] = bool(uid in can_vote) diff --git a/conditional/util/ldap.py b/conditional/util/ldap.py index d5e0a6f3..a34ad086 100644 --- a/conditional/util/ldap.py +++ b/conditional/util/ldap.py @@ -12,12 +12,14 @@ def _ldap_get_group_member_uids(group: str) -> list[str]: def _ldap_is_member_of_group(member: CSHMember, group: str) -> bool: return ldap.get_group(group).check_member(member) +def _ldap_is_uid_member_of_group(member: str, group: str) -> bool: + uids = ldap.get_group(group).get_member_uids() + return member in uids def _ldap_add_member_to_group(account: CSHMember, group: str): if not _ldap_is_member_of_group(account, group): ldap.get_group(group).add_member(account, dn=False) - def _ldap_remove_member_from_group(account: CSHMember, group: str): if _ldap_is_member_of_group(account, group): ldap.get_group(group).del_member(account, dn=False) @@ -69,16 +71,19 @@ def ldap_get_roomnumber(account) -> str: except AttributeError: return "" - @service_cache(maxsize=128) def ldap_is_active(account) -> bool: return _ldap_is_member_of_group(account, 'active') +def ldap_is_uid_active(uid: str) -> bool: + return _ldap_is_uid_member_of_group(uid, 'active') @service_cache(maxsize=128) def ldap_is_bad_standing(account) -> bool: return _ldap_is_member_of_group(account, 'bad_standing') +def ldap_is_uid_bad_standing(uid: str) -> bool: + return _ldap_is_uid_member_of_group(uid, 'bad_standing') @service_cache(maxsize=128) def ldap_is_alumni(account) -> bool: diff --git a/requirements.in b/requirements.in index d26ef334..c5b32e18 100644 --- a/requirements.in +++ b/requirements.in @@ -4,7 +4,7 @@ blinker~=1.4 boto3==1.35.99 botocore==1.35.99 click~=8.4.2 -csh-ldap>=2.5.5 +csh-ldap>=2.5.8 Flask~=3.1.0 Flask-Migrate~=4.1.0 Flask-Gzip~=0.2 diff --git a/requirements.txt b/requirements.txt index c8207e5e..e68b7fc0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,10 +1,10 @@ # This file was autogenerated by uv via the following command: # uv pip compile requirements.in -alembic==1.18.4 +alembic==1.18.5 # via # -r requirements.in # flask-migrate -annotated-types==0.7.0 +annotated-types==0.8.0 # via pydantic astroid==3.3.11 # via @@ -24,22 +24,22 @@ botocore==1.35.99 # s3transfer build==1.5.0 # via pip-tools -certifi==2026.6.17 +certifi==2026.7.22 # via # requests # sentry-sdk -cffi==2.0.0 +cffi==2.1.1 # via cryptography -charset-normalizer==3.4.7 +charset-normalizer==3.4.9 # via requests click==8.4.2 # via # -r requirements.in # flask # pip-tools -cryptography==49.0.0 +cryptography==50.0.0 # via oic -csh-ldap==2.5.5 +csh-ldap==2.5.8 # via -r requirements.in defusedxml==0.7.1 # via oic @@ -67,7 +67,7 @@ flask-sqlalchemy==3.1.1 # flask-migrate future==1.0.0 # via pyjwkest -greenlet==3.5.2 +greenlet==3.5.4 # via sqlalchemy gunicorn==25.3.0 # via -r requirements.in @@ -114,18 +114,20 @@ oic==1.6.1 # via # -r requirements.in # flask-pyoidc -packaging==26.2 +packaging==26.3 # via # build # gunicorn # wheel +pip==26.2.1 + # via pip-tools pip-tools==7.5.3 # via -r requirements.in -platformdirs==4.10.0 +platformdirs==4.11.1 # via pylint psycopg2-binary==2.9.12 # via -r requirements.in -pyasn1==0.6.3 +pyasn1==0.6.4 # via # pyasn1-modules # python-ldap @@ -141,7 +143,7 @@ pydantic==2.13.4 # via pydantic-settings pydantic-core==2.46.4 # via pydantic -pydantic-settings==2.14.2 +pydantic-settings==2.15.0 # via oic pyjwkest==1.4.4 # via oic @@ -166,8 +168,10 @@ requests==2.34.2 # pyjwkest s3transfer==0.10.4 # via boto3 -sentry-sdk[flask]==2.63.0 +sentry-sdk==2.63.0 # via -r requirements.in +setuptools==83.0.0 + # via pip-tools six==1.17.0 # via # -r requirements.in @@ -182,9 +186,9 @@ srvlookup==3.0.0 # via csh-ldap structlog==25.5.0 # via -r requirements.in -tomlkit==0.15.0 +tomlkit==0.15.1 # via pylint -typing-extensions==4.15.0 +typing-extensions==4.16.0 # via # alembic # pydantic From 514ff40ae27778ec7e0bc89c06817bfd449a59d3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 8 Aug 2026 15:13:08 +0000 Subject: [PATCH 2/2] Bump postcss from 8.5.6 to 8.5.26 Bumps [postcss](https://github.com/postcss/postcss) from 8.5.6 to 8.5.26. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.5.6...8.5.26) --- updated-dependencies: - dependency-name: postcss dependency-version: 8.5.26 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index b33f83ad..c97787e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4298,9 +4298,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", "dev": true, "funding": [ { @@ -4492,9 +4492,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", "dev": true, "funding": [ { @@ -4512,7 +4512,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.11", + "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" },