Corriger le détail des salles
Some checks are pending
CI - Tests et Syntax / lint-and-test (push) Waiting to run

This commit is contained in:
root 2026-08-20 00:06:30 +00:00
parent a18e0f2713
commit 4d6e4be906
3 changed files with 54 additions and 7 deletions

View file

@ -1,9 +1,11 @@
"""Routes salles - GMAO Collège""" """Routes salles - GMAO Collège"""
from datetime import date, datetime, timedelta
from flask import Blueprint, render_template, redirect, url_for, request, flash from flask import Blueprint, render_template, redirect, url_for, request, flash
from flask_login import login_required from flask_login import login_required
from app_new.extensions import db from app_new.extensions import db
from app_new.core.models.college import Room, Zone, Building, RoomType from app_new.core.models.college import Room, Zone, Building, RoomType, RoomSchedule
from app_new.core.models.equipment import Equipment
rooms_bp = Blueprint('rooms', __name__, template_folder='templates') rooms_bp = Blueprint('rooms', __name__, template_folder='templates')
@ -33,7 +35,52 @@ def index():
def detail(id): def detail(id):
"""Détail d'une salle.""" """Détail d'une salle."""
room = Room.query.get_or_404(id) room = Room.query.get_or_404(id)
return render_template('equipments/room_detail.html', room=room) today = date.today()
week_start = today - timedelta(days=today.weekday())
courses = RoomSchedule.query.filter_by(
room_id=room.id,
week_start=week_start,
day_of_week=today.weekday(),
).order_by(RoomSchedule.start_time).all()
current_time = datetime.now().time()
current_course = next(
(course for course in courses
if course.start_time <= current_time <= course.end_time),
None,
)
next_course = next(
(course for course in courses if course.start_time > current_time),
None,
)
if current_course:
room_status = {
'status': 'occupee',
'message': 'Salle actuellement occupée',
'course': current_course,
'next_occupied': None,
}
elif courses:
room_status = {
'status': 'libre',
'message': 'Salle libre actuellement',
'course': None,
'next_occupied': next_course.start_time.strftime('%H:%M') if next_course else None,
}
else:
room_status = {
'status': 'inconnu',
'message': "Aucun emploi du temps importé pour cette salle aujourd'hui.",
'course': None,
'next_occupied': None,
}
equipments = Equipment.query.filter(
Equipment.room_id == room.id,
Equipment.is_deleted.is_(False),
).order_by(Equipment.name, Equipment.individual_number).all()
return render_template('equipments/room_detail.html',
room=room, equipments=equipments,
courses=courses, room_status=room_status)
@rooms_bp.route('/new', methods=['GET', 'POST']) @rooms_bp.route('/new', methods=['GET', 'POST'])

View file

@ -96,8 +96,8 @@
</thead> </thead>
<tbody> <tbody>
{% for course in courses %} {% for course in courses %}
<tr {% if room_status.course and course.subject == room_status.course.subject and course.start_hour == room_status.course.start_hour %}class="table-danger"{% endif %}> <tr {% if room_status.course and course.id == room_status.course.id %}class="table-danger"{% endif %}>
<td>{{ "%02d"|format(course.start_hour) }}:{{ "%02d"|format(course.start_minute) }} - {{ "%02d"|format(course.end_hour) }}:{{ "%02d"|format(course.end_minute) }}</td> <td>{{ course.start_time.strftime('%H:%M') }} - {{ course.end_time.strftime('%H:%M') }}</td>
<td>{{ course.subject }}</td> <td>{{ course.subject }}</td>
<td>{{ course.teacher }}</td> <td>{{ course.teacher }}</td>
<td>{{ course.class_name }}</td> <td>{{ course.class_name }}</td>

View file

@ -96,8 +96,8 @@
</thead> </thead>
<tbody> <tbody>
{% for course in courses %} {% for course in courses %}
<tr {% if room_status.course and course.subject == room_status.course.subject and course.start_hour == room_status.course.start_hour %}class="table-danger"{% endif %}> <tr {% if room_status.course and course.id == room_status.course.id %}class="table-danger"{% endif %}>
<td>{{ "%02d"|format(course.start_hour) }}:{{ "%02d"|format(course.start_minute) }} - {{ "%02d"|format(course.end_hour) }}:{{ "%02d"|format(course.end_minute) }}</td> <td>{{ course.start_time.strftime('%H:%M') }} - {{ course.end_time.strftime('%H:%M') }}</td>
<td>{{ course.subject }}</td> <td>{{ course.subject }}</td>
<td>{{ course.teacher }}</td> <td>{{ course.teacher }}</td>
<td>{{ course.class_name }}</td> <td>{{ course.class_name }}</td>