|
| 1 | +from sqlalchemy import func |
1 | 2 | from decorators import login_required, check_access_level |
2 | 3 | from db import db, User, Course, PreferenceAssignment, Teacher, Researcher, Organization, \ |
3 | 4 | ResearcherSupervisor, Role, AssignmentDraft, AssignmentPublished |
|
11 | 12 |
|
12 | 13 | @assignment_bp.route('/assignments', methods=['GET']) |
13 | 14 | @login_required |
| 15 | +@check_access_level(Role.ADMIN) |
14 | 16 | def assignments(): |
15 | 17 | return render_template('assignment.html') |
16 | 18 |
|
@@ -72,6 +74,7 @@ def load_data(): |
72 | 74 |
|
73 | 75 | @assignment_bp.route('/publish_assignments', methods=['POST']) |
74 | 76 | @login_required |
| 77 | +@check_access_level(Role.ADMIN) |
75 | 78 | def publish_assignments(): |
76 | 79 | data = request.get_json() |
77 | 80 | if not data: |
@@ -130,3 +133,25 @@ def publish_assignments(): |
130 | 133 | except Exception as e: |
131 | 134 | db.session.rollback() |
132 | 135 | return jsonify({"error": f"Failed to publish assignments: {str(e)}"}), 500 |
| 136 | + |
| 137 | + |
| 138 | +def count_course_assignments(): |
| 139 | + # Counts the number of times each user has taught each course |
| 140 | + assignment_counts = db.session.query( |
| 141 | + AssignmentDraft.user_id, |
| 142 | + AssignmentDraft.course_id, |
| 143 | + func.count(AssignmentDraft.course_id).label('count') |
| 144 | + ).group_by( |
| 145 | + AssignmentDraft.user_id, |
| 146 | + AssignmentDraft.course_id |
| 147 | + ).all() |
| 148 | + |
| 149 | + return assignment_counts |
| 150 | + |
| 151 | + |
| 152 | +@assignment_bp.route('/course_assignments_count', methods=['GET']) |
| 153 | +@login_required |
| 154 | +@check_access_level(Role.ADMIN) |
| 155 | +def get_course_assignments_count(): |
| 156 | + results = count_course_assignments() |
| 157 | + return jsonify(results=[{'user_id': user_id, 'course_id': course_id, 'count': count} for user_id, course_id, count in results]) |
0 commit comments