Skip to content

Commit bdb6d21

Browse files
authored
Merge pull request #165 from ComputerScienceHouse/develop
Conditional 1.6.1
2 parents 276b093 + b579158 commit bdb6d21

11 files changed

+61
-34
lines changed

conditional/blueprints/attendance.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ def get_seminar_attendees(meeting_id):
391391
user_name = request.headers.get('x-webauth-user')
392392
account = ldap_get_member(user_name)
393393
if not ldap_is_eboard(account):
394-
return "must be eboard", 403
394+
return jsonify({"success": False, "error": "Not EBoard"}), 403
395395

396396

397397
page = request.args.get('page', 1)
@@ -455,7 +455,7 @@ def alter_committee_attendance(cid):
455455

456456
account = ldap_get_member(user_name)
457457
if not ldap_is_eboard(account):
458-
return "must be eboard", 403
458+
return jsonify({"success": False, "error": "Not EBoard"}), 403
459459

460460
post_data = request.get_json()
461461
meeting_id = cid
@@ -488,7 +488,7 @@ def alter_seminar_attendance(sid):
488488

489489
account = ldap_get_member(user_name)
490490
if not ldap_is_eboard(account):
491-
return "must be eboard", 403
491+
return jsonify({"success": False, "error": "Not EBoard"}), 403
492492

493493
post_data = request.get_json()
494494
meeting_id = sid
@@ -528,15 +528,15 @@ def get_cm_attendees(sid):
528528
attendees.append(freshman)
529529
return jsonify({"attendees": attendees}), 200
530530

531-
elif request.method == 'DELETE':
531+
else:
532532
log = logger.new(request=request)
533533
log.info('Delete Technical Seminar {}'.format(sid))
534534

535535
user_name = request.headers.get('x-webauth-user')
536536

537537
account = ldap_get_member(user_name)
538538
if not ldap_is_eboard(account):
539-
return "must be eboard", 403
539+
return jsonify({"success": False, "error": "Not EBoard"}), 403
540540

541541
FreshmanSeminarAttendance.query.filter(
542542
FreshmanSeminarAttendance.seminar_id == sid).delete()
@@ -567,15 +567,15 @@ def get_ts_attendees(cid):
567567
attendees.append(freshman)
568568
return jsonify({"attendees": attendees}), 200
569569

570-
elif request.method == 'DELETE':
570+
else:
571571
log = logger.new(request=request)
572572
log.info('Delete Committee Meeting {}'.format(cid))
573573

574574
user_name = request.headers.get('x-webauth-user')
575575

576576
account = ldap_get_member(user_name)
577577
if not ldap_is_eboard(account):
578-
return "must be eboard", 403
578+
return jsonify({"success": False, "error": "Not EBoard"}), 403
579579

580580
FreshmanCommitteeAttendance.query.filter(
581581
FreshmanCommitteeAttendance.meeting_id == cid).delete()
@@ -599,7 +599,7 @@ def approve_cm(cid):
599599

600600
account = ldap_get_member(user_name)
601601
if not ldap_is_eboard(account):
602-
return "must be eboard", 403
602+
return jsonify({"success": False, "error": "Not EBoard"}), 403
603603

604604
CommitteeMeeting.query.filter(
605605
CommitteeMeeting.id == cid).first().approved = True
@@ -618,7 +618,7 @@ def approve_ts(sid):
618618

619619
account = ldap_get_member(user_name)
620620
if not ldap_is_eboard(account):
621-
return "must be eboard", 403
621+
return jsonify({"success": False, "error": "Not EBoard"}), 403
622622

623623
TechnicalSeminar.query.filter(
624624
TechnicalSeminar.id == sid).first().approved = True

conditional/blueprints/cache_management.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
import signal
33
import structlog
44

5+
from flask import Blueprint, request, redirect
6+
57
from conditional.util.ldap import ldap_is_eval_director
68
from conditional.util.ldap import ldap_is_rtp
79

@@ -17,8 +19,6 @@
1719
from conditional.util.member import get_onfloor_members
1820

1921

20-
from flask import Blueprint, request, redirect
21-
2222
logger = structlog.get_logger()
2323
cache_bp = Blueprint('cache_bp', __name__)
2424

conditional/blueprints/dashboard.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
from conditional.util.housing import get_queue_position
1919
from conditional.util.flask import render_template
20-
from conditional.util.member import get_freshman_data, get_voting_members, get_cm, get_hm
20+
from conditional.util.member import get_freshman_data, get_voting_members, get_cm, get_hm, req_cm
2121

2222
from conditional import start_of_year
2323

@@ -58,6 +58,7 @@ def display_dashboard():
5858
spring = {}
5959
c_meetings = get_cm(member)
6060
spring['committee_meetings'] = len(c_meetings)
61+
spring['req_meetings'] = req_cm(member)
6162
h_meetings = [(m.meeting_id, m.attendance_status) for m in get_hm(member)]
6263
spring['hm_missed'] = len([h for h in h_meetings if h[1] == "Absent"])
6364
eval_entry = SpringEval.query.filter(SpringEval.uid == member.uid,

conditional/blueprints/major_project_submission.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22

33
from flask import Blueprint, request, jsonify, redirect
44

5+
from sqlalchemy import desc
6+
57
from conditional.models.models import MajorProject
68

79
from conditional.util.ldap import ldap_is_eval_director
810
from conditional.util.ldap import ldap_get_member
911
from conditional.util.flask import render_template
1012

1113
from conditional import db, start_of_year
12-
from sqlalchemy import desc
1314

1415

1516
logger = structlog.get_logger()

conditional/blueprints/spring_evals.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from conditional.util.flask import render_template
1313

14-
from conditional.util.member import get_cm, get_hm
14+
from conditional.util.member import get_cm, get_hm, req_cm
1515

1616
from conditional import db, start_of_year
1717

@@ -55,6 +55,7 @@ def display_spring_evals(internal=False):
5555
'uid': uid,
5656
'status': spring_entry.status,
5757
'committee_meetings': len(get_cm(account)),
58+
'req_meetings': req_cm(account),
5859
'house_meetings_missed':
5960
[
6061
{

conditional/templates/dashboard.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,9 @@ <h3 class="panel-title">Membership Evaluations
127127
<tr>
128128
<td class="title">Directorship Meetings</td>
129129
<td><span class="pull-right">
130-
{% if spring['committee_meetings'] >= 25 %}
130+
{% if spring['committee_meetings'] >= spring['req_meetings'] %}
131131
<span class="glyphicon glyphicon-ok-sign green"></span> {% else %}
132-
<span class="glyphicon glyphicon-remove-sign red"></span> {% endif %} {{ spring['committee_meetings'] }} / 25</span>
132+
<span class="glyphicon glyphicon-remove-sign red"></span> {% endif %} {{ spring['committee_meetings'] }} / {{ spring['req_meetings'] }}</span>
133133
</td>
134134
</tr>
135135
<tr>

conditional/templates/spring_eval_slideshow.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<h1>{{m['name']}}</h1>
1616
<div class="row">
1717
<div class="col-xs-12 col-md-4">
18-
{% set committee_meetings_passed = m['committee_meetings'] >= 25 %}
18+
{% set committee_meetings_passed = m['committee_meetings'] >= m['req_meetings'] %}
1919
<div class="item{% if committee_meetings_passed %} passed{% endif %}" >
2020
<span class="icon glyphicon glyphicon-{% if committee_meetings_passed %}ok passed{%else%}remove{% endif %}" aria-hidden="true"></span>
2121
<h3>{{m['committee_meetings']}}</h3>

conditional/templates/spring_evals.html

+4-4
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,15 @@ <h6 class="eval-uid">{{m['uid']}}</h6>
4747
<div class="col-sm-5 col-md-6 col-lg-4">
4848
<div class="spring-info row">
4949
<div class="text-center">
50-
{% if m['committee_meetings'] < 25 %}
50+
{% if m['committee_meetings'] < m['req_meetings'] %}
5151
<div class="eval-info-label">
5252
<span class="glyphicon glyphicon-remove-sign red eval-info-status"></span>Directorship Meetings
53-
<span class="eval-info-number">{{m['committee_meetings']}} / 25</span>
53+
<span class="eval-info-number">{{m['committee_meetings']}} / {{m['req_meetings']}}</span>
5454
</div>
5555
{% else %}
5656
<div class="eval-info-label">
5757
<span class="glyphicon glyphicon-ok-sign green eval-info-status"></span>Directorship Meetings
58-
<span class="eval-info-number">{{m['committee_meetings']}} / 25</span>
58+
<span class="eval-info-number">{{m['committee_meetings']}} / {{m['req_meetings']}}</span>
5959
</div>
6060
{% endif %}
6161

@@ -208,7 +208,7 @@ <h4>Major Projects</h4>
208208
{% endif %}
209209
</td>
210210
<td>
211-
{% if m['committee_meetings'] < 25 %}
211+
{% if m['committee_meetings'] < m['req_meetings'] %}
212212
<span class="glyphicon glyphicon-remove-sign red eval-info-status"></span> {{m['committee_meetings']}}
213213
{% else %}
214214
<span class="glyphicon glyphicon-ok-sign green eval-info-status"></span> {{m['committee_meetings']}}

conditional/util/ldap.py

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ def _ldap_is_member_of_directorship(account, directorship):
3131
for director in directors:
3232
if director.uid == account.uid:
3333
return True
34+
return False
3435

3536

3637
@lru_cache(maxsize=1024)

conditional/util/member.py

+10
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,13 @@ def get_hm(member, only_absent=False):
147147
if only_absent:
148148
h_meetings = h_meetings.filter(MemberHouseMeetingAttendance.attendance_status == "Absent")
149149
return h_meetings
150+
151+
def req_cm(member):
152+
# Get the number of required committee meetings based on if the member
153+
# is going on co-op in the current operating session.
154+
co_op = CurrentCoops.query.filter(
155+
CurrentCoops.uid == member.uid,
156+
CurrentCoops.date_created > start_of_year()).first()
157+
if co_op:
158+
return 15
159+
return 30

requirements.txt

+26-13
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,26 @@
1-
Flask
2-
itsdangerous
3-
Jinja2
4-
MarkupSafe
5-
csh_ldap
6-
SQLAlchemy
7-
Werkzeug
8-
structlog
9-
flask_sqlalchemy
10-
flask_migrate
11-
pylint
12-
#psycopg2
13-
raven[flask]
1+
alembic==0.9.6
2+
astroid==1.6.0
3+
blinker==1.4
4+
click==6.7
5+
csh-ldap==1.2.4.dev41
6+
Flask==0.12.2
7+
Flask-Migrate==2.1.1
8+
Flask-SQLAlchemy==2.3.2
9+
isort==4.2.15
10+
itsdangerous==0.24
11+
Jinja2==2.9.6
12+
lazy-object-proxy==1.3.1
13+
Mako==1.0.7
14+
MarkupSafe==1.0
15+
mccabe==0.6.1
16+
psycopg2==2.7.3.2
17+
pyldap==2.4.37
18+
pylint==1.8.1
19+
python-dateutil==2.6.1
20+
python-editor==1.0.3
21+
raven==6.3.0
22+
six==1.11.0
23+
SQLAlchemy==1.1.15
24+
structlog==17.2.0
25+
Werkzeug==0.12.2
26+
wrapt==1.10.11

0 commit comments

Comments
 (0)