diff --git a/app_new/equipments/rooms.py b/app_new/equipments/rooms.py index d1a4f87..ce0107e 100644 --- a/app_new/equipments/rooms.py +++ b/app_new/equipments/rooms.py @@ -1,9 +1,11 @@ """Routes salles - GMAO Collège""" +from datetime import date, datetime, timedelta from flask import Blueprint, render_template, redirect, url_for, request, flash from flask_login import login_required 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') @@ -33,7 +35,52 @@ def index(): def detail(id): """Détail d'une salle.""" 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']) diff --git a/app_new/equipments/templates/room_detail.html b/app_new/equipments/templates/room_detail.html index d747c9c..d9ae250 100644 --- a/app_new/equipments/templates/room_detail.html +++ b/app_new/equipments/templates/room_detail.html @@ -96,8 +96,8 @@ {% for course in courses %} - - {{ "%02d"|format(course.start_hour) }}:{{ "%02d"|format(course.start_minute) }} - {{ "%02d"|format(course.end_hour) }}:{{ "%02d"|format(course.end_minute) }} + + {{ course.start_time.strftime('%H:%M') }} - {{ course.end_time.strftime('%H:%M') }} {{ course.subject }} {{ course.teacher }} {{ course.class_name }} @@ -207,4 +207,4 @@ -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/app_new/templates/equipments/room_detail.html b/app_new/templates/equipments/room_detail.html index f76d04d..48ee8d2 100644 --- a/app_new/templates/equipments/room_detail.html +++ b/app_new/templates/equipments/room_detail.html @@ -96,8 +96,8 @@ {% for course in courses %} - - {{ "%02d"|format(course.start_hour) }}:{{ "%02d"|format(course.start_minute) }} - {{ "%02d"|format(course.end_hour) }}:{{ "%02d"|format(course.end_minute) }} + + {{ course.start_time.strftime('%H:%M') }} - {{ course.end_time.strftime('%H:%M') }} {{ course.subject }} {{ course.teacher }} {{ course.class_name }}