Skip to content

Commit 6ebe141

Browse files
authored
Merge pull request #88 from stevenmirabito/develop
Add Intro Project Results management
2 parents d3d1fbe + 6d2aa76 commit 6ebe141

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+268
-19267
lines changed

conditional/blueprints/member_management.py

+62-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import structlog
99

10-
from flask import Blueprint, request, jsonify
10+
from flask import Blueprint, request, jsonify, abort
1111

1212
from conditional.models.models import FreshmanAccount
1313
from conditional.models.models import FreshmanEvalData
@@ -24,6 +24,7 @@
2424

2525
from conditional.blueprints.cache_management import clear_active_members_cache
2626
from conditional.blueprints.cache_management import clear_onfloor_members_cache
27+
from conditional.blueprints.intro_evals import display_intro_evals
2728

2829
from conditional.util.ldap import ldap_is_eval_director
2930
from conditional.util.ldap import ldap_is_financial_director
@@ -241,6 +242,7 @@ def member_management_edituser(uid):
241242
db.session.commit()
242243
return jsonify({"success": True}), 200
243244

245+
244246
def edit_uid(uid, user_name, post_data):
245247
active_member = post_data['activeMember']
246248

@@ -290,8 +292,8 @@ def edit_uid(uid, user_name, post_data):
290292

291293
def edit_fid(uid, post_data):
292294
logger.info('backend', action="edit freshman account %s room: %s onfloor: %s eval_date: %s sig_missed %s" %
293-
(uid, post_data['roomNumber'], post_data['onfloorStatus'],
294-
post_data['evalDate'], post_data['sigMissed']))
295+
(uid, post_data['roomNumber'], post_data['onfloorStatus'],
296+
post_data['evalDate'], post_data['sigMissed']))
295297

296298
name = post_data['name']
297299

@@ -473,13 +475,13 @@ def member_management_upgrade_user():
473475
for fhm in FreshmanHouseMeetingAttendance.query.filter(FreshmanHouseMeetingAttendance.fid == fid):
474476
# Don't duplicate HM attendance records
475477
mhm = MemberHouseMeetingAttendance.query.filter(
476-
MemberHouseMeetingAttendance.meeting_id == fhm.meeting_id).first()
478+
MemberHouseMeetingAttendance.meeting_id == fhm.meeting_id).first()
477479
if mhm is None:
478480
db.session.add(MemberHouseMeetingAttendance(
479481
uid, fhm.meeting_id, fhm.excuse, fhm.attendance_status))
480482
else:
481483
logger.info('backend', action="duplicate house meeting attendance! fid: %s, uid: %s, id: %s" %
482-
(fid, uid, fhm.meeting_id))
484+
(fid, uid, fhm.meeting_id))
483485
db.session.delete(fhm)
484486

485487
if acct.onfloor_status:
@@ -496,3 +498,58 @@ def member_management_upgrade_user():
496498
clear_onfloor_members_cache()
497499

498500
return jsonify({"success": True}), 200
501+
502+
503+
@member_management_bp.route('/manage/intro_project', methods=['GET'])
504+
def introductory_project():
505+
log = logger.new(user_name=request.headers.get("x-webauth-user"),
506+
request_id=str(uuid.uuid4()))
507+
log.info('api', action='show introductory project management')
508+
509+
user_name = request.headers.get('x-webauth-user')
510+
511+
if not ldap_is_eval_director(user_name):
512+
return "must be eval director", 403
513+
514+
return render_template(request,
515+
'introductory_project.html',
516+
username=user_name,
517+
intro_members=display_intro_evals(internal=True))
518+
519+
520+
@member_management_bp.route('/manage/intro_project', methods=['POST'])
521+
def introductory_project_submit():
522+
log = logger.new(user_name=request.headers.get("x-webauth-user"),
523+
request_id=str(uuid.uuid4()))
524+
log.info('api', action='submit introductory project results')
525+
526+
user_name = request.headers.get('x-webauth-user')
527+
528+
if not ldap_is_eval_director(user_name):
529+
return "must be eval director", 403
530+
531+
post_data = request.get_json()
532+
533+
if not isinstance(post_data, list):
534+
abort(400)
535+
536+
for intro_member in post_data:
537+
if not isinstance(intro_member, dict):
538+
abort(400)
539+
540+
if 'uid' not in intro_member or 'status' not in intro_member:
541+
abort(400)
542+
543+
if intro_member['status'] not in ['Passed', 'Pending', 'Failed']:
544+
abort(400)
545+
546+
log.info('debug', action='setting status "' + intro_member['status'] + '" for ' + intro_member['uid'])
547+
548+
FreshmanEvalData.query.filter(FreshmanEvalData.uid == intro_member['uid']).update({
549+
'freshman_project': intro_member['status']
550+
})
551+
552+
db.session.flush()
553+
db.session.commit()
554+
555+
return jsonify({"success": True}), 200

conditional/static_old/css/alertify.bootstrap.css

-131
This file was deleted.

conditional/static_old/css/alertify.core.css

-137
This file was deleted.

0 commit comments

Comments
 (0)