Skip to content

Commit 38df698

Browse files
committed
Automating group addition and preventing bad_standing
1 parent 2530625 commit 38df698

File tree

5 files changed

+46
-6
lines changed

5 files changed

+46
-6
lines changed

conditional/blueprints/dashboard.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from conditional.util.auth import get_user
1111
from conditional.util.flask import render_template
1212
from conditional.util.housing import get_queue_position
13-
from conditional.util.ldap import ldap_get_active_members
13+
from conditional.util.ldap import ldap_get_active_members, ldap_is_bad_standing
1414
from conditional.util.ldap import ldap_is_active
1515
from conditional.util.ldap import ldap_is_current_student
1616
from conditional.util.ldap import ldap_is_intromember
@@ -36,6 +36,7 @@ def display_dashboard(user_dict=None):
3636
data['username'] = user_dict['account'].uid
3737
data['name'] = user_dict['account'].cn
3838
data['active'] = ldap_is_active(user_dict['account'])
39+
data['bad_standing'] = ldap_is_bad_standing(user_dict['account'])
3940
data['onfloor'] = ldap_is_onfloor(user_dict['account'])
4041
data['voting'] = bool(user_dict['account'].uid in can_vote)
4142
data['student'] = ldap_is_current_student(user_dict['account'])

conditional/blueprints/member_management.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
from conditional.blueprints.cache_management import clear_members_cache
2828
from conditional.blueprints.intro_evals import display_intro_evals
2929

30-
from conditional.util.ldap import ldap_is_eval_director
30+
from conditional.util.ldap import ldap_is_eval_director, ldap_is_bad_standing
3131
from conditional.util.ldap import ldap_is_financial_director
3232
from conditional.util.ldap import ldap_is_active
3333
from conditional.util.ldap import ldap_is_onfloor
@@ -520,8 +520,10 @@ def member_management_upgrade_user(user_dict=None):
520520
def member_management_make_user_active(user_dict=None):
521521
log = logger.new(request=request, auth_dict=user_dict)
522522

523-
if not ldap_is_current_student(user_dict['account']) or ldap_is_active(user_dict['account']):
524-
return "must be current student and not active", 403
523+
if not ldap_is_current_student(user_dict['account']) \
524+
or ldap_is_active(user_dict['account']) \
525+
or ldap_is_bad_standing(user_dict['account']):
526+
return "must be current student, not in bad standing and not active", 403
525527

526528
ldap_set_active(user_dict['account'])
527529
log.info("Make user {} active".format(user_dict['username']))

conditional/blueprints/slideshow.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
from conditional.models.models import SpringEval
1212
from conditional.util.auth import get_user
1313
from conditional.util.flask import render_template
14-
from conditional.util.ldap import ldap_is_eval_director
14+
from conditional.util.ldap import ldap_is_eval_director, ldap_is_intromember, ldap_set_failed, ldap_set_bad_standing, \
15+
ldap_set_intro_member, ldap_set_inactive, ldap_get_member
1516

1617
logger = structlog.get_logger()
1718

@@ -128,4 +129,18 @@ def slideshow_spring_review(user_dict=None):
128129

129130
db.session.flush()
130131
db.session.commit()
132+
133+
# Automate ldap group organizing
134+
account = ldap_get_member(uid)
135+
136+
if status == "Passed":
137+
if ldap_is_intromember(account):
138+
ldap_set_intro_member(account)
139+
elif status == "Failed":
140+
if ldap_is_intromember(account):
141+
ldap_set_failed(account)
142+
ldap_set_inactive(account)
143+
else:
144+
ldap_set_bad_standing(account)
145+
131146
return jsonify({"success": True}), 200

conditional/templates/dashboard.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ <h3 class="panel-title">Major Projects</h3>
251251
</div>
252252
{% endif %}
253253

254-
{% if accepting_dues and student and not active %}
254+
{% if accepting_dues and student and not active and not bad_standing %}
255255
<div class="panel panel-info" id="becomeActive">
256256
<div class="panel-heading">
257257
<h3 class="panel-title">Become Active</h3>

conditional/util/ldap.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ def ldap_is_active(account):
6363
return _ldap_is_member_of_group(account, 'active')
6464

6565

66+
def ldap_is_bad_standing(account):
67+
return _ldap_is_member_of_group(account, 'bad_standing')
68+
69+
6670
def ldap_is_alumni(account):
6771
# If the user is not active, they are an alumni.
6872
return not _ldap_is_member_of_group(account, 'active')
@@ -122,6 +126,12 @@ def ldap_set_inactive(account):
122126
ldap_get_member.cache_clear()
123127

124128

129+
def ldap_set_intro_member(account):
130+
_ldap_add_member_to_group(account, 'intromembers')
131+
ldap_get_intro_members().cache_clear()
132+
ldap_get_member.cache_clear()
133+
134+
125135
def ldap_set_current_student(account):
126136
_ldap_add_member_to_group(account, 'current_student')
127137
ldap_get_current_students.cache_clear()
@@ -133,11 +143,23 @@ def ldap_set_non_current_student(account):
133143
ldap_get_current_students.cache_clear()
134144
ldap_get_member.cache_clear()
135145

146+
147+
def ldap_set_failed(account):
148+
_ldap_remove_member_from_group(account, 'failed')
149+
ldap_get_member.cache_clear()
150+
151+
152+
def ldap_set_bad_standing(account):
153+
_ldap_remove_member_from_group(account, 'bad_standing')
154+
ldap_get_member.cache_clear()
155+
156+
136157
def ldap_set_onfloor(account):
137158
_ldap_add_member_to_group(account, 'onfloor')
138159
ldap_get_onfloor_members.cache_clear()
139160
ldap_get_member.cache_clear()
140161

162+
141163
def ldap_get_roomnumber(account):
142164
try:
143165
return account.roomNumber

0 commit comments

Comments
 (0)