datatracker/ietf/templates/meeting/interim_request_details.html
Jennifer Richards 8b52d27b02
refactor: refactor timestamp handling so tests in meeting app pass (#4371)
* refactor: replace datetime.now with timezone.now

* refactor: migrate model fields to use timezone.now as default

* refactor: replace datetime.today with timezone.now

datetime.datetime.today() is equivalent to datetime.datetime.now(); both
return a naive datetime with the current local time.

* refactor: rephrase datetime.now(tz) as timezone.now().astimezone(tz)

This is effectively the same, but is less likely to encourage accidental
use of naive datetimes.

* refactor: revert datetime.today() change to old migrations

* refactor: change a missed datetime.now to timezone.now

* chore: renumber timezone_now migration

* chore: add migration to change timestamps to UTC

* refactor: move tz instantiation/caching from TimeSlot to Meeting

* fix: assume utc if meeting.time_zone is blank

* chore: make datetime.combine() calls tz aware in the meeting app

* ci: correctly use meeting.tz in TimeSlotFactory

* chore: compute TimeSlot utc / local times assuming tz-aware times

* chore: use tzaware math for agenda editor timeslot layout

* chore: fill in Meeting.time_zone where it is blank

Nearly all interim meetings on or before 2016-07-01 have blank
time_zone values. This migration fills these in with PST8PDT.

* chore: disallow blank Meeting.time_zone value

* refactor: no need to handle blank time_zone case in TZ migration

* refactor: remove now-unnecessary checks that meeting has time_zone

* chore: fix timezone handling in agenda.ics and Meeting.updated()

* chore: fix tz handling in interim_request_details, exercise in tests

* chore: fix timezone handling for test_interim_send_announcement

* chore: fix timezone handling in agenda_json()

* chore: fix timezone handling in old agenda

* chore: fix timezone handling for EditTimeslotsTests

* refactor: refactor a few fixes for more consistent timezone handling

* chore: add timezone info to timestamps in fixtures

* chore: remove naive datetime warnings found in meetings.tests_views

* chore: fix a few more test failures in meetings.tests_views

All tests in meetings.tests_views now passing

* chore: remove unused import

* chore: fix timezone handling in test_schedule_generator.py

* chore: fix timezone handling affecting meeting.tests_js

* chore: fix timeslot test bug when local date != UTC date

* test: fix a few failing tests, all meetings tests now pass

(for me, anyway)

* chore: renumber migrations

* chore: update timestamp conversion migration

The django-celery-beat package introduces tables with timestamp
columns. These columns are stored in CELERY_TIMEZONE. Because we run with
this set to UTC, the migration ignores these columns.

* chore: fix pytz-related change in migration

* chore: remove duplicate migrations

* chore: remove CELERY_BEAT_TZ_AWARE setting now that USE_TZ is True

* test: avoid failure in test with bogus timezone
2022-08-26 16:53:19 -03:00

159 lines
6.1 KiB
HTML

{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load static django_bootstrap5 widget_tweaks ietf_filters person_filters textfilters tz %}
{% block title %}Interim Request Details{% endblock %}
{% block pagehead %}
<link rel="stylesheet" href="{% static 'ietf/css/select2.css' %}">
{% endblock %}
{% block content %}{% timezone meeting.tz %}
{% origin %}
<h1>Interim Meeting Request Details</h1>
<dl class="row my-3">
<dt class="col-sm-2">
Group
</dt>
<dd class="col-sm-10">
<a href="{{ group.about_url }}">{{ group.acronym }}</a>
</dd>
<dt class="col-sm-2">
Requested by
</dt>
<dd class="col-sm-10">
{% person_link requester %}
</dd>
<dt class="col-sm-2">
Status
</dt>
<dd class="col-sm-10">
{{ meeting_status.name }}
</dd>
<dt class="col-sm-2">
City
</dt>
<dd class="col-sm-10">
{{ meeting.city|default:"Online" }}
</dd>
<dt class="col-sm-2">
Country
</dt>
<dd class="col-sm-10">
{{ meeting.country|default:"Online" }}
</dd>
<dt class="col-sm-2">
Timezone
</dt>
<dd class="col-sm-10">
{{ meeting.time_zone }}
</dd>
{% for assignment in meeting_assignments %}
{% if meeting_assignments|length > 1 %}
<dt class="col-sm-2">
Session
</dt>
<dd class="col-sm-10">
{{ assignment.status.name }}
</dd>
{% endif %}
<dt class="col-sm-2">
Date
</dt>
<dd class="col-sm-10">
{{ assignment.timeslot.time|date:"Y-m-d" }}
</dd>
<dt class="col-sm-2">
Start time
</dt>
<dd class="col-sm-10">
{{ assignment.timeslot.time|date:"H:i" }}
{% if meeting.time_zone != 'UTC' %}
({{ assignment.timeslot.time|utc|date:"H:i" }} UTC)
{% endif %}
</dd>
<dt class="col-sm-2">
Duration
</dt>
<dd class="col-sm-10">
{{ assignment.session.requested_duration|format_timedelta }}
</dd>
<dt class="col-sm-2">
Remote instructions
</dt>
<dd class="col-sm-10">
{{ assignment.session.remote_instructions|linkify|linebreaksbr }}
</dd>
<dt class="col-sm-2">
Additional info
</dt>
<dd class="col-sm-10">
{{ assignment.session.agenda_note|default:"(None)" }}
</dd>
{% if meeting_assignments|length > 1 %}
{% if can_edit and assignment.can_be_canceled %}
<dt class="col-sm-2">
Actions
</dt>
<dd class="col-sm-10">
<a class="btn btn-danger btn-sm"
href="{% url 'ietf.meeting.views.interim_request_session_cancel' sessionid=assignment.session.pk %}">
Cancel session
</a>
</dd>
{% endif %}
{% endif %}
{% endfor %}
</dl>
{% if can_approve and status_slug == 'apprw' %}
<form method="post">
{% csrf_token %}
{% endif %}
{% with meeting_status.slug as status_slug %}
{% if can_edit %}
<a class="btn btn-primary"
href="{% url 'ietf.meeting.views.interim_request_edit' number=meeting.number %}">Edit</a>
{% endif %}
{% if can_approve and status_slug == 'apprw' %}
<button class="btn btn-primary" type="submit" name="approve">Approve</button>
<button class="btn btn-primary" type="submit" name="disapprove">Disapprove</button>
{% endif %}
{% if user|has_role:"Secretariat" and status_slug == 'scheda' %}
<a class="btn btn-primary"
href="{% url 'ietf.meeting.views.interim_send_announcement' number=meeting.number %}">
Announce
</a>
<a class="btn btn-warning"
href="{% url 'ietf.meeting.views.interim_skip_announcement' number=meeting.number %}">
Skip announcement
</a>
{% endif %}
{% if can_edit %}
{% if status_slug == 'apprw' or status_slug == 'scheda' or status_slug == 'sched' %}
<a class="btn btn-danger"
href="{% url 'ietf.meeting.views.interim_request_cancel' number=meeting.number %}">
Cancel meeting
</a>
{% endif %}
{% endif %}
{% if status_slug == "apprw" %}
<a class="btn btn-secondary float-end"
href="{% url 'ietf.meeting.views.interim_pending' %}">Back</a>
{% elif status_slug == "scheda" %}
<a class="btn btn-secondary float-end"
href="{% url 'ietf.meeting.views.interim_announce' %}">Back</a>
{% elif status_slug == "sched" %}
<a class="btn btn-secondary float-end"
href="{% url 'ietf.meeting.views.session_details' num=meeting.number acronym=meeting.session_set.first.group.acronym %}">
Back
</a>
{% else %}
<a class="btn btn-secondary float-end"
href="{% url 'ietf.meeting.views.upcoming' %}">Back</a>
{% endif %}
{% endwith %}
{% if can_approve and status_slug == 'apprw' %}</form>{% endif %}
{% endtimezone %}{% endblock %}
{% block js %}
<script src="{% static 'ietf/js/select2.js' %}"></script>
<script src="{% static 'ietf/js/meeting-interim-request.js' %}"></script>
{% endblock %}