Coverage for app/controllers/admin/minor.py: 29%
38 statements
« prev ^ index » next coverage.py v7.10.2, created at 2025-12-18 19:28 +0000
« prev ^ index » next coverage.py v7.10.2, created at 2025-12-18 19:28 +0000
1from flask import render_template, g, abort, request, redirect, url_for, send_file, jsonify
2from app.logic.minor import getMinorProgress
3from app.models.user import User
5from app.controllers.admin import admin_bp
7from app.logic.minor import getMinorInterest, getMinorProgress, toggleMinorInterest, getMinorSpreadsheet, getDeclaredMinorStudents
9@admin_bp.route('/profile/<username>/cceMinorChart', methods=['GET'])
10def cceMinorChart(username):
11 if not g.current_user.isAdmin:
12 abort(403)
13 else:
14 progressList = getMinorProgress()
15 turnToChart = []
16 for progress in progressList:
17 turnToChart.append({'name':progress["firstName"] + " " + progress["lastName"], "engagementCount" : progress['engagementCount'], "completeSummer": "Yes" if progress['hasSummer'] == "Completed" else "No", "termDescription": progress['engagementTerm']})
18 return jsonify(turnToChart)
20@admin_bp.route('/admin/cceMinor', methods=['GET','POST'])
21def manageMinor():
22 if not g.current_user.isAdmin:
23 abort(403)
25 if request.method == 'POST':
26 interestedStudents = request.form.getlist('interestedStudents[]')
27 for student in interestedStudents:
28 user = User.get(username=student)
29 if not user.minorInterest:
30 toggleMinorInterest(student, True)
32 return redirect(url_for("admin.manageMinor"))
36 interestedStudentsList = getMinorInterest()
37 interestedStudentEmailString = ';'.join([student['email'] for student in interestedStudentsList])
38 sustainedEngagement = getMinorProgress()
39 declaredStudentsList = getDeclaredMinorStudents()
40 declaredStudentEmailString = ';'.join([student['email'] for student in declaredStudentsList])
41 adminUsername = g.current_user.username
43 return render_template('/admin/cceMinor.html',
44 interestedStudentsList = interestedStudentsList,
45 declaredStudentsList = declaredStudentsList,
46 interestedStudentEmailString = interestedStudentEmailString,
47 declaredStudentEmailString = declaredStudentEmailString,
48 sustainedEngagement = sustainedEngagement,
49 adminUsername = adminUsername,
50 )
52@admin_bp.route("/admin/cceMinor/download")
53def downloadSpreadsheet():
54 if not g.current_user.isCeltsAdmin:
55 abort(403)
57 newfile = getMinorSpreadsheet()
58 return send_file(open(newfile, 'rb'), download_name='minor_progress.xlsx', as_attachment=True)