28d10ff9fc
- The schedule grid page is ridculously database-query heavy and hence terribly lacking in perfmantitude. - Caching can help with this, but the caching implemention at present is not user-aware. If one user looks at the page, they'll get a "YOU" in all the places they're chair and something else everywhere else - and then everyone will see that for the next 600 seconds, then YOU will become someone else - to avoid this, remove the request.user-specific bit of the template
75 lines
2.7 KiB
HTML
75 lines
2.7 KiB
HTML
|
|
{% load lca2018_tags %}
|
|
{% load waffle_tags %}
|
|
<table class="calendar table table-bordered">
|
|
<thead>
|
|
<tr>
|
|
<th class="time"> </th>
|
|
{% for room in timetable.rooms %}
|
|
<th>{{ room.name }}</th>
|
|
{% endfor %}
|
|
</tr>
|
|
{% with timetable|day_has_tracks:timetable.day as has_tracks %}
|
|
{% if has_tracks %}
|
|
<tr>
|
|
<th class="time"> </th>
|
|
{% for room in timetable.rooms %}
|
|
{% with room|trackname:timetable.day as track_name %}
|
|
<th class="track-name">{% if track_name %}<p>{{ track_name }}{% endif %}</th>
|
|
{% endwith %}
|
|
{% endfor %}
|
|
</tr>
|
|
{% endif %}
|
|
{% endwith %}
|
|
</thead>
|
|
<tbody>
|
|
{% for row in timetable %}
|
|
<tr>
|
|
<td class="time"><h4>{{ row.time|date:"h:iA" }}</h4></td>
|
|
{% for slot in row.slots %}
|
|
<td class="slot slot-{{ slot.kind.label }}" colspan="{{ slot.colspan }}" rowspan="{{ slot.rowspan }}">
|
|
{% if slot.kind.label == "talk" or slot.kind.label == "tutorial" %}
|
|
{% if not slot.content %}
|
|
{% else %}
|
|
<span class="title">
|
|
<a href="{% url "schedule_presentation_detail" slot.content.pk %}">{{ slot.content.title }}</a>
|
|
</span>
|
|
<span class="speaker">
|
|
{{ slot.content.speakers|join:", " }}
|
|
</span>
|
|
{% flag "session_chair" %}
|
|
{% if slot.sessions %}
|
|
<div>
|
|
{% for session in slot.sessions.all %}
|
|
<em>Session chair:
|
|
{% if not session.chair %}
|
|
<a href="{% url "schedule_session_detail" session.id %}">Volunteer! 🙋</a>
|
|
{% endif %}</em>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
{% endflag %}
|
|
{% endif %}
|
|
{% elif slot.kind.label == "shortbreak" %}
|
|
{% else %}
|
|
{% if slot.content_override %}
|
|
{{ slot.content_override_html|safe }}
|
|
{% else %}
|
|
{{ slot.kind.label }}
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if "break" in slot.kind.label %}
|
|
{% else %}
|
|
<span class="room">
|
|
{{ slot.rooms|join:", "}}<span class="endtime"> ends {{ slot.end|date:"h:iA" }}</span>
|
|
</span>
|
|
{% endif %}
|
|
</td>
|
|
{% endfor %}
|
|
{% if forloop.last %}
|
|
<td colspan="{{ timetable.rooms|length }}"></td>
|
|
{% endif %}
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|