Corriger le détail des salles
Some checks are pending
CI - Tests et Syntax / lint-and-test (push) Waiting to run
Some checks are pending
CI - Tests et Syntax / lint-and-test (push) Waiting to run
This commit is contained in:
parent
a18e0f2713
commit
4d6e4be906
3 changed files with 54 additions and 7 deletions
|
|
@ -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'])
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue