From cf629a42ad53343734843a41e5db829d8aa1522b Mon Sep 17 00:00:00 2001 From: Lars Eggert Date: Tue, 25 Jan 2022 10:14:25 +0000 Subject: [PATCH] And more fixes. - Legacy-Id: 19877 --- ietf/api/tests.py | 12 +- ietf/doc/tests_bofreq.py | 1 + ietf/doc/tests_js.py | 2 + ietf/doc/tests_review.py | 4 +- ietf/group/tests_js.py | 18 +- ietf/group/tests_review.py | 5 +- ietf/meeting/forms.py | 27 +- ietf/meeting/models.py | 4 +- .../templatetags/agenda_custom_tags.py | 4 +- ietf/meeting/tests_js.py | 24 +- ietf/meeting/tests_views.py | 37 +- ietf/meeting/views.py | 12 +- ietf/secr/meetings/views.py | 8 +- ietf/static/css/ietf.scss | 17 +- ietf/static/js/agenda_timezone.js | 146 +-- ...dit-meeting-timeslots-and-misc-sessions.js | 317 +++--- ietf/static/js/ietf.js | 2 +- ietf/static/js/meeting-interim-request.js | 280 +++--- ietf/static/js/room_params.js | 221 ++-- ietf/static/js/select2.js | 4 +- ietf/static/js/timeslot_edit.js | 257 +++++ ietf/static/js/timezone.js | 25 +- ietf/static/js/upcoming.js | 157 +++ ietf/submit/tests.py | 1 + ietf/templates/group/meetings-row.html | 4 +- ietf/templates/mailinglists/nonwg.html | 11 +- ietf/templates/mailtrigger/recipient.html | 53 +- ietf/templates/mailtrigger/trigger.html | 46 +- .../templates/meeting/add_session_drafts.html | 99 +- ietf/templates/meeting/agenda.html | 587 +++++------ ietf/templates/meeting/agenda_by_room.html | 55 +- ietf/templates/meeting/agenda_by_type.html | 73 +- ietf/templates/meeting/agenda_filter.html | 71 +- .../agenda_personalize_buttonlist.html | 13 +- .../meeting/approve_proposed_slides.html | 51 +- ietf/templates/meeting/create_timeslot.html | 32 +- ietf/templates/meeting/delete_schedule.html | 42 +- ietf/templates/meeting/diff_schedules.html | 59 +- .../meeting/edit_materials_button.html | 3 +- .../meeting/edit_meeting_schedule.html | 697 +++++++------ .../edit_meeting_schedule_session.html | 64 +- ...t_meeting_timeslots_and_misc_sessions.html | 53 +- ietf/templates/meeting/edit_session.html | 36 +- ietf/templates/meeting/edit_timeslot.html | 52 +- .../templates/meeting/edit_timeslot_form.html | 47 +- ietf/templates/meeting/finalize.html | 49 +- ietf/templates/meeting/floor-plan.html | 129 ++- ietf/templates/meeting/group_materials.html | 72 +- ietf/templates/meeting/group_proceedings.html | 2 +- ietf/templates/meeting/important-dates.html | 122 ++- ietf/templates/meeting/interim_announce.html | 36 +- ietf/templates/meeting/interim_nav.html | 13 + ietf/templates/meeting/interim_pending.html | 45 +- ietf/templates/meeting/interim_request.html | 179 +--- .../meeting/interim_request_cancel.html | 45 +- .../meeting/interim_request_details.html | 218 ++-- .../meeting/interim_request_edit.html | 124 +-- .../meeting/interim_send_announcement.html | 61 +- .../meeting/interim_session_buttons.html | 219 ++-- .../meeting/interim_skip_announce.html | 21 +- .../meeting/make_schedule_official.html | 41 +- ietf/templates/meeting/materials.html | 508 +++++----- .../meeting/materials_editable_groups.html | 45 +- ietf/templates/meeting/meeting_heading.html | 167 ++-- .../meeting/new_meeting_schedule.html | 2 +- ietf/templates/meeting/past.html | 108 +- ietf/templates/meeting/proceedings.html | 121 +-- .../proceedings/edit_material_base.html | 47 +- .../proceedings/edit_meetinghosts.html | 50 +- .../meeting/proceedings/introduction.html | 35 +- .../meeting/proceedings/material_details.html | 149 ++- .../meeting/proceedings/materials_table.html | 43 +- ietf/templates/meeting/proceedings/title.html | 7 +- .../meeting/proceedings_acknowledgements.html | 16 +- .../meeting/proceedings_attendees.html | 15 +- .../meeting/proceedings_attendees_table.html | 11 +- .../meeting/proceedings_overview.html | 18 +- .../meeting/proceedings_progress_report.html | 92 +- ietf/templates/meeting/properties_edit.html | 8 +- ietf/templates/meeting/requests.html | 215 ++-- ietf/templates/meeting/schedule_list.html | 177 ++-- .../meeting/session_agenda_include.html | 33 +- .../meeting/session_buttons_include.html | 272 +++-- ietf/templates/meeting/session_details.html | 103 +- .../meeting/session_details_panel.html | 293 +++--- ietf/templates/meeting/session_materials.html | 12 +- ietf/templates/meeting/timeslot_edit.html | 448 +++------ .../meeting/timeslot_edit_timeslot.html | 48 +- .../templates/meeting/timeslot_start_end.html | 19 +- ietf/templates/meeting/tz-display.html | 37 + ietf/templates/meeting/upcoming.html | 447 +++------ .../meeting/upload_session_agenda.html | 41 +- .../meeting/upload_session_bluesheets.html | 41 +- .../meeting/upload_session_minutes.html | 41 +- .../meeting/upload_session_slides.html | 44 +- ietf/templates/nomcom/view_feedback.html | 4 +- .../nomcom/view_feedback_pending.html | 2 +- ietf/templates/submit/edit_submission.html | 2 +- ietf/templates/submit/submission_status.html | 4 +- ietf/utils/fields.py | 1 + ietf/utils/text.py | 2 +- package-lock.json | 946 +++++++++--------- package.json | 2 + requirements.txt | 2 +- 104 files changed, 5046 insertions(+), 4741 deletions(-) create mode 100644 ietf/static/js/timeslot_edit.js create mode 100644 ietf/static/js/upcoming.js create mode 100644 ietf/templates/meeting/interim_nav.html create mode 100644 ietf/templates/meeting/tz-display.html diff --git a/ietf/api/tests.py b/ietf/api/tests.py index 27cb37935..560353803 100644 --- a/ietf/api/tests.py +++ b/ietf/api/tests.py @@ -233,8 +233,8 @@ class CustomApiTests(TestCase): with open(bluesheet.get_file_name()) as file: text = file.read() for p in people: - self.assertIn(p['name'], text) - self.assertIn(html.escape(p['affiliation']), text) + self.assertIn(p['name'], html.unescape(text)) + self.assertIn(p['affiliation'], html.unescape(text)) def test_person_export(self): person = PersonFactory() @@ -299,11 +299,13 @@ class CustomApiTests(TestCase): reg['apikey'] = key.hash() # # Test valid POST + # FIXME: sometimes, there seems to be something in the outbox? + old_len = len(outbox) r = self.client.post(url, reg) self.assertContains(r, "Accepted, New registration, Email sent", status_code=202) # # Check outgoing mail - self.assertEqual(len(outbox), 1) + self.assertEqual(len(outbox), old_len + 1) body = get_payload_text(outbox[-1]) self.assertIn(reg['email'], outbox[-1]['To'] ) self.assertIn(reg['email'], body) @@ -324,7 +326,7 @@ class CustomApiTests(TestCase): self.assertContains(r, "Accepted, New registration", status_code=202) # # There should be no new outgoing mail - self.assertEqual(len(outbox), 1) + self.assertEqual(len(outbox), old_len + 1) # # Test combination of reg types reg['reg_type'] = 'remote' @@ -335,7 +337,7 @@ class CustomApiTests(TestCase): self.assertIn('hackathon', set(obj.reg_type.split())) self.assertIn('remote', set(obj.reg_type.split())) self.assertIn('full_week_pass', set(obj.ticket_type.split())) - self.assertEqual(len(outbox), 1) + self.assertEqual(len(outbox), old_len + 1) # # Test incomplete POST drop_fields = ['affiliation', 'first_name', 'reg_type'] diff --git a/ietf/doc/tests_bofreq.py b/ietf/doc/tests_bofreq.py index 2eb44942b..cb466d04a 100644 --- a/ietf/doc/tests_bofreq.py +++ b/ietf/doc/tests_bofreq.py @@ -193,6 +193,7 @@ This test section has some text. self.assertEqual(r.status_code,200) unescaped = unicontent(r).encode('utf-8').decode('unicode-escape') for editor in previous_editors: + print(r.content, "test_change_editors") self.assertIn(editor.name,unescaped) new_editors = set(previous_editors) new_editors.discard(acting_editor) diff --git a/ietf/doc/tests_js.py b/ietf/doc/tests_js.py index 776537833..6229d1fb3 100644 --- a/ietf/doc/tests_js.py +++ b/ietf/doc/tests_js.py @@ -75,6 +75,8 @@ class EditAuthorsTests(IetfSeleniumTestCase): email_select = form_elt.find_element(By.CSS_SELECTOR, 'select[name$="email"]') affil_input = form_elt.find_element(By.CSS_SELECTOR, 'input[name$="affiliation"]') country_input = form_elt.find_element(By.CSS_SELECTOR, 'input[name$="country"]') + print("hidden_person_input.get_attribute('value')", hidden_person_input.get_attribute('value')) + print("hidden_person_input.get_attribute('outerHTML')", hidden_person_input.get_attribute('outerHTML')) return ( Person.objects.get(pk=hidden_person_input.get_attribute('value')), email_select.get_attribute('value'), diff --git a/ietf/doc/tests_review.py b/ietf/doc/tests_review.py index ea3c00911..db81b59f1 100644 --- a/ietf/doc/tests_review.py +++ b/ietf/doc/tests_review.py @@ -173,7 +173,7 @@ class ReviewTests(TestCase): r = self.client.get(url) self.assertContains(r, review_req.team.acronym) self.assertContains(r, review_req.team.name) - self.assertContains(r, str(author)) + self.assertContains(r, author.name) url = urlreverse('ietf.doc.views_review.review_request_forced_login', kwargs={ "name": doc.name, "request_id": review_req.pk }) r = self.client.get(url) @@ -435,7 +435,7 @@ class ReviewTests(TestCase): r = self.client.get(reject_url) self.assertEqual(r.status_code, 200) - self.assertContains(r, str(assignment.reviewer.person)) + self.assertContains(r, assignment.reviewer.person.name) self.assertContains(r, 'can not be rejected') self.assertNotContains(r, ' - Cancel - - - - - - -{% endblock %} - -{% block js %} - {{ form.media.js }} + {% endfor %} + + +

Additional drafts to link to this session

+
+ {% csrf_token %} + {% bootstrap_form form %} + + + Back + +
{% endblock %} +{% block js %}{{ form.media.js }}{% endblock %} \ No newline at end of file diff --git a/ietf/templates/meeting/agenda.html b/ietf/templates/meeting/agenda.html index 86f4bccf7..09aa6c874 100644 --- a/ietf/templates/meeting/agenda.html +++ b/ietf/templates/meeting/agenda.html @@ -1,3 +1,4 @@ +{# bs5ok #} {% extends "base.html" %} {# Copyright The IETF Trust 2015-2021, All Rights Reserved #} {% load origin %} @@ -5,368 +6,310 @@ {% load ietf_filters %} {% load textfilters %} {% load htmlfilters agenda_custom_tags %} - {% block title %} IETF {{ schedule.meeting.number }} Meeting Agenda - {% if "-utc" in request.path %} - (UTC) - {% endif %} - {% if personalize %} - Personalization - {% endif %} + {% if "-utc" in request.path %}(UTC){% endif %} + {% if personalize %}Personalization{% endif %} {% endblock %} - {% block pagehead %} {% endblock %} - -{% block morecss %} - #weekview iframe { height: 25em; } -{% endblock %} - +{% block morecss %}#weekview iframe { height: 25em; }{% endblock %} {% block content %} {% origin %} - -
-
- {% if "-utc" in request.path %} - {% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=updated selected="agenda-utc" title_extra="(UTC)" %} - {% elif personalize %} - {% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=updated selected="select-sessions" title_extra="" %} - {% else %} - {% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=updated selected="agenda" title_extra="" %} + {% if "-utc" in request.path %} + {% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=updated selected="agenda-utc" title_extra="(UTC)" %} + {% elif personalize %} + {% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=updated selected="select-sessions" title_extra="" %} + {% else %} + {% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=updated selected="agenda" title_extra="" %} + {% endif %} + {# cache this part -- it takes 3-6 seconds to generate #} + {% load cache %} + {% cache cache_time ietf_meeting_agenda_utc schedule.meeting.number request.path %} +

+ {% if personalize %} + Session selection + {% else %} + Agenda + {% endif %} +

+ {% if is_current_meeting %} +

+ Note: IETF agendas are subject to change, up to and during a meeting. +

+ {% endif %} + {% if schedule.meeting.agenda_info_note %} +

+ {{ schedule.meeting.agenda_info_note|removetags:"h1"|safe }} +

+ {% endif %} + {% include 'meeting/tz-display.html' with id_suffix="" timezone=timezone %} +

+ {% include "meeting/agenda_filter.html" with filter_categories=filter_categories customize_button_text="Personalize the agenda view..." always_show=personalize %} +

+ {% include "meeting/agenda_personalize_buttonlist.html" with meeting=schedule.meeting only %} +
+ + + + Download non-area events + +
+
+

+ Schedule + {% if schedule.meeting.agenda_warning_note %} + {{ schedule.meeting.agenda_warning_note|removetags:"h1" + |safe }} {% endif %} - - {# cache this part -- it takes 3-6 seconds to generate #} - {% load cache %} - {% cache cache_time ietf_meeting_agenda_utc schedule.meeting.number request.path %} - -
-
-

- {% if personalize %} - Session Selection - {% else %} - Agenda - {% endif %} -

-
-
-
- - - - - - - - -
-
-
- - {% if is_current_meeting %} -

- Note: IETF agendas are subject to change, up to and during a meeting. -

- {% endif %} - - {% if schedule.meeting.agenda_info_note %} -

- {{ schedule.meeting.agenda_info_note|removetags:"h1"|safe }} -

- {% endif %} - -

- {% include "meeting/agenda_filter.html" with filter_categories=filter_categories customize_button_text="Personalize the agenda view..." always_show=personalize%} -

- - {% include "meeting/agenda_personalize_buttonlist.html" with meeting=schedule.meeting only %} - -
- Download non-area events -
- -
-

- Schedule - {% if schedule.meeting.agenda_warning_note %} - {{ schedule.meeting.agenda_warning_note|removetags:"h1" - |safe }} - {% endif %} -

- - -
- -

- {% if personalize %} - Personalize - {% endif %} - Detailed Agenda -

- {% if personalize %} -

Check boxes below to select individual sessions.

- {% endif %} - - - - - {% if personalize %} - - {% endif %} - - - - - - - - - {% for item in filtered_assignments %} - {% ifchanged item.timeslot.time|date:"Y-m-d" %} - - - - {% endifchanged %} - {% if item|is_special_agenda_item %} - - {% if personalize %} - - {% endif %} - - - - - - - {% elif item|is_regular_agenda_item or item|is_plenary_agenda_item %} - - {% if item|is_regular_agenda_item %} - {% ifchanged %} - - {% if personalize %} - - {% endif %} - - - - - - {% endifchanged %} - {% endif %} - - {% if item.session.historic_group %} - + + +

+ {% if personalize %}Personalize{% endif %} + Detailed Agenda +

+ {% if personalize %} +

+ Check boxes below to select individual sessions. +

+ {% endif %} +
- {{ item.timeslot.time|date:"l, F j, Y" }} -
- {% if item.session_keyword %} - - {% endif %} - - {% include "meeting/timeslot_start_end.html" %} - - {% if item.timeslot.show_location and item.timeslot.location %} - {% location_anchor item.timeslot %} - {{ item.timeslot.get_html_location }} - {% end_location_anchor %} - {% endif %} - {% if item.timeslot.show_location and item.timeslot.get_html_location %} - {% with item.timeslot.location.floorplan as floor %} - {% if item.timeslot.location.floorplan %} - - {% endif %} - {% endwith %} - {% endif %} - - {% agenda_anchor item.session %} - {% assignment_display_name item %} - {% end_agenda_anchor %} - - {% if item.session.current_status == 'canceled' %} - CANCELLED - {% else %} -
- {% if item.slot_type.slug == 'other' %} - {% if item.session.agenda or item.session.remote_instructions or item.session.agenda_note %} - {% include "meeting/session_buttons_include.html" with show_agenda=True item=item schedule=schedule %} - {% else %} - {% for slide in item.session.slides %} - {{ slide.title|clean_whitespace }} -
- {% endfor %} - {% endif %} - {% endif %} -
- {% endif %} -
- {% include "meeting/timeslot_start_end.html" %} - - {{ item.timeslot.time|date:"l"}} - {{item.timeslot.name|capfirst_allcaps}} -
+ + + {% if personalize %}{% endif %} + + + + + + + + + {% for item in filtered_assignments %} + {% ifchanged item.timeslot.time|date:"Y-m-d" %} + + + + {% endifchanged %} + {% if item|is_special_agenda_item %} + - + data-slot-start-ts="{{ item.start_timestamp }}" + data-slot-end-ts="{{ item.end_timestamp }}"> {% if personalize %} {% endif %} - - {% if item.slot_type.slug == 'plenary' %} - - + + + + {% elif item|is_regular_agenda_item or item|is_plenary_agenda_item %} + {% if item|is_regular_agenda_item %} + {% ifchanged %} + + {% if personalize %}{% endif %} + + + + {% endifchanged %} + {% endif %} + {% if item.session.historic_group %} + + {% if personalize %} + + {% endif %} + {% if item.slot_type.slug == 'plenary' %} + + - {% else %} - + - - - {% endif %} - - - + {% end_agenda_anchor %} + {% if item.session.current_status == 'canceled' %} + CANCELLED + {% else %} +
+ {% include "meeting/session_buttons_include.html" with show_agenda=True session=item.session meeting=schedule.meeting %} +
+ {% endif %} + {% if item.session.historic_group.state_id == "bof" %} + BOF + {% endif %} + {% if item.session.current_status == 'resched' %} +
+ RESCHEDULED + {% if item.session.rescheduled_to %} + TO +
+
+ {% if "-utc" in request.path %} + {{ item.session.rescheduled_to.utc_start_time|date:"l G:i"|upper }}-{{ item.session.rescheduled_to.utc_end_time|date:"G:i" }} + {% else %} + {{ item.session.rescheduled_to.time|date:"l G:i"|upper }}-{{ item.session.rescheduled_to.end_time|date:"G:i" }} + {% endif %} +
+
+ {% endif %} +
+ {% endif %} + {% if item.session.agenda_note|first_url|conference_url %} +
+ {{ item.session.agenda_note|slice:":23" }} + + {% elif item.session.agenda_note %} +
+ {{ item.session.agenda_note }} + {% endif %} + + {% endif %} {% endif %} {% endfor %}
+ {{ item.timeslot.time|date:"l, F j, Y" }} +
{% if item.session_keyword %} - + {% endif %} - {% include "meeting/timeslot_start_end.html" %} - - {% if item.timeslot.show_location and item.timeslot.location %} - {% location_anchor item.timeslot %} - {{item.timeslot.get_html_location}} - {% end_location_anchor %} + {% include "meeting/timeslot_start_end.html" %} + {% if item.timeslot.show_location and item.timeslot.location %} + {% location_anchor item.timeslot %} + {{ item.timeslot.get_html_location }} + {% end_location_anchor %} + {% endif %} + {% if item.timeslot.show_location and item.timeslot.get_html_location %} + {% with item.timeslot.location.floorplan as floor %} + {% if item.timeslot.location.floorplan %} + {% endif %} + {% endwith %} + {% endif %} + + {% agenda_anchor item.session %} + {% assignment_display_name item %} + {% end_agenda_anchor %} + {% if item.session.current_status == 'canceled' %} + CANCELLED + {% else %} +
+ {% if item.slot_type.slug == 'other' %} + {% if item.session.agenda or item.session.remote_instructions or item.session.agenda_note %} + {% include "meeting/session_buttons_include.html" with show_agenda=True item=item schedule=schedule %} + {% else %} + {% for slide in item.session.slides %} + {{ slide.title|clean_whitespace }} +
+ {% endfor %} + {% endif %} + {% endif %} +
+ {% endif %} +
{% include "meeting/timeslot_start_end.html" %} + {{ item.timeslot.time|date:"l" }} + {{ item.timeslot.name|capfirst_allcaps }} +
+ {% if item.session_keyword %} + + {% endif %} + {% include "meeting/timeslot_start_end.html" %} + {% if item.timeslot.show_location and item.timeslot.location %} + {% location_anchor item.timeslot %} + {{ item.timeslot.get_html_location }} + {% end_location_anchor %} + {% endif %} {% with item.timeslot.location.floorplan as floor %} {% if item.timeslot.location.floorplan %} {% endif %} {% endwith %} {% if item.timeslot.show_location and item.timeslot.location %} {% location_anchor item.timeslot %} - {{item.timeslot.get_html_location}} - {% end_location_anchor %} - {% endif %} + {{ item.timeslot.get_html_location }} + {% end_location_anchor %} + {% endif %} + +
{{ item.session.historic_group.historic_parent.acronym }}
{{item.session.historic_group.historic_parent.acronym}}
{% if item.session.historic_group %} - {{item.session.historic_group.acronym}} + + {{ item.session.historic_group.acronym }} + {% else %} - {{item.session.historic_group.acronym}} + {{ item.session.historic_group.acronym }} {% endif %} {% agenda_anchor item.session %} {% assignment_display_name item %} -{% end_agenda_anchor %} - -{% if item.session.current_status == 'canceled' %} - CANCELLED -{% else %} -
- {% include "meeting/session_buttons_include.html" with show_agenda=True session=item.session meeting=schedule.meeting %} -
-{% endif %} - -{% if item.session.historic_group.state_id == "bof" %} - BOF -{% endif %} - -{% if item.session.current_status == 'resched' %} -
- RESCHEDULED - {% if item.session.rescheduled_to %} - TO -
- {% if "-utc" in request.path %} - {{ item.session.rescheduled_to.utc_start_time|date:"l G:i"|upper }}-{{ item.session.rescheduled_to.utc_end_time|date:"G:i" }} - {% else %} - {{ item.session.rescheduled_to.time|date:"l G:i"|upper }}-{{ item.session.rescheduled_to.end_time|date:"G:i" }} - {% endif %} -
- {% endif %} -
-{% endif %} - -{% if item.session.agenda_note|first_url|conference_url %} -
{{item.session.agenda_note|slice:":23"}} -{% elif item.session.agenda_note %} -
{{item.session.agenda_note}} -{% endif %} -
{% include "meeting/agenda_personalize_buttonlist.html" with meeting=schedule.meeting only %} -
- -
-
- - -
- {% endcache %} {% endblock %} - {% block js %} - - + - - - - - - + + + + + + {% if personalize %} - + {% endif %} - - {{ form.media.js }} + + {{ form.media.js }} {% endblock %} \ No newline at end of file diff --git a/ietf/templates/meeting/delete_schedule.html b/ietf/templates/meeting/delete_schedule.html index da4685857..4139cdec8 100644 --- a/ietf/templates/meeting/delete_schedule.html +++ b/ietf/templates/meeting/delete_schedule.html @@ -1,30 +1,28 @@ +{# bs5ok #} {% extends "base.html" %} {# Copyright The IETF Trust 2015, All Rights Reserved #} {% load origin %} {% load static %} {% load ietf_filters %} {% load django_bootstrap5 %} - -{% block title %}Delete IETF {{ meeting.number }} Meeting Agenda: {{schedule.owner}} / {{ schedule.name }}{% endblock %} - +{% block title %} + Delete IETF {{ meeting.number }} Meeting Agenda: {{ schedule.owner }} / {{ schedule.name }} +{% endblock %} {% block content %} {% origin %} - -

Delete IETF {{meeting.number}} Schedule: {{schedule.owner}}/{{schedule.name}}

- -
- -
- {% csrf_token %} - {# Null Form #} - - - - Cancel - - -
- -
- -{% endblock %} +

+ Delete IETF {{ meeting.number }} Schedule +
+ {{ schedule.owner }}/{{ schedule.name }} +

+
+ {% csrf_token %} + {# Null Form #} + + Back +
+{% endblock %} \ No newline at end of file diff --git a/ietf/templates/meeting/diff_schedules.html b/ietf/templates/meeting/diff_schedules.html index 903ea639e..63ee6cd50 100644 --- a/ietf/templates/meeting/diff_schedules.html +++ b/ietf/templates/meeting/diff_schedules.html @@ -1,40 +1,47 @@ +{# bs5ok #} {% extends "base.html" %} {# Copyright The IETF Trust 2020, All Rights Reserved #} {% load origin %} {% load ietf_filters %} {% load django_bootstrap5 %} - +{% block title %}Differences between Meeting Agendas for IETF {{ meeting.number }}{% endblock %} {% block content %} {% origin %} -

{% block title %}Differences between Meeting Agendas for IETF {{ meeting.number }}{% endblock %}

- -
- {% bootstrap_form form %} - +

+ Differences between Meeting Agendas +
+ IETF {{ meeting.number }} +

+ + {% bootstrap_form form layout="horizontal" %} + {% bootstrap_button "Show differences" button_type="submit" button_class="btn-primary" %}
- {% if diffs != None %} -

Differences from {{ from_schedule.name }} ({{ from_schedule.owner }}) to {{ to_schedule.name }} ({{ to_schedule.owner }})

- +

+ Differences from {{ from_schedule.name }} ({{ from_schedule.owner }}) to {{ to_schedule.name }} ({{ to_schedule.owner }}) +

{% if diffs %} - - {% for d in diffs %} - - - - {% endfor %} +
- {% if d.change == 'schedule' %} - Scheduled {{ d.session.session_label }} to {{ d.to.time|date:"l G:i" }} at {{ d.to.location.name }} - {% elif d.change == 'move' %} - Moved {{ d.session.session_label }} from {{ d.from.time|date:"l G:i" }} at {{ d.from.location.name }} to {{ d.to.time|date:"l G:i" }} at {{ d.to.location.name }} - {% elif d.change == 'unschedule' %} - Unscheduled {{ d.session.session_label }} from {{ d.from.time|date:"l G:i" }} at {{ d.from.location.name }} - {% endif %} -
+ + + + {% for d in diffs %} + + + + {% endfor %} +
+ {% if d.change == 'schedule' %} + Scheduled {{ d.session.session_label }} to {{ d.to.time|date:"l G:i" }} at {{ d.to.location.name }} + {% elif d.change == 'move' %} + Moved {{ d.session.session_label }} from {{ d.from.time|date:"l G:i" }} at {{ d.from.location.name }} to {{ d.to.time|date:"l G:i" }} at {{ d.to.location.name }} + {% elif d.change == 'unschedule' %} + Unscheduled {{ d.session.session_label }} from {{ d.from.time|date:"l G:i" }} at {{ d.from.location.name }} + {% endif %} +
{% else %} - No differences in scheduled sessions found! + No differences in scheduled sessions found. {% endif %} {% endif %} - -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/ietf/templates/meeting/edit_materials_button.html b/ietf/templates/meeting/edit_materials_button.html index bf3274093..2142e459f 100644 --- a/ietf/templates/meeting/edit_materials_button.html +++ b/ietf/templates/meeting/edit_materials_button.html @@ -1,5 +1,6 @@ -{% load ietf_filters session_filters %} +{% load ietf_filters session_filters origin %} {% if not session.past_cutoff_date %} + {% origin %} {% with gt=session.group.type_id %} {%comment%} Edit diff --git a/ietf/templates/meeting/edit_meeting_schedule.html b/ietf/templates/meeting/edit_meeting_schedule.html index 9d8971ffc..06662d46e 100644 --- a/ietf/templates/meeting/edit_meeting_schedule.html +++ b/ietf/templates/meeting/edit_meeting_schedule.html @@ -1,356 +1,423 @@ +{# bs5ok #} {% extends "base.html" %} {# Copyright The IETF Trust 2015-2020, All Rights Reserved #} {% load origin %} {% load static %} {% load ietf_filters %} - {% block morecss %} {# set the group colors with CSS here #} {% for parent in session_parents %} .parent-{{ parent.acronym }} { background-image: linear-gradient(to right, {{ parent.scheduling_color }} 0.4em, transparent 0.5em); } .parent-{{ parent.acronym }}.hidden-parent { filter: blur(3px); }{# blur masks contents but keeps the parent color visible #} - .parent-{{ parent.acronym }}.selected { background-color: {{ parent.light_scheduling_color }}; } - .parent-{{ parent.acronym }}.other-session-selected { background-color: {{ parent.light_scheduling_color }}; } - {% endfor %} - {# style past sessions to indicate they are not editable #} - .edit-meeting-schedule .edit-grid .timeslot.past-hint { filter: brightness(0.9); } - .edit-meeting-schedule .past-flag { visibility: hidden; font-size: smaller; } - .edit-meeting-schedule .edit-grid .timeslot.past .past-flag { visibility: visible; color: #aaaaaa; } - {# style off-agenda sessions to indicate this #} - .edit-meeting-schedule .session.off-agenda { filter: brightness(0.9); } - {# type and purpose styling #} - .edit-meeting-schedule .edit-grid .timeslot.wrong-timeslot-type, - .edit-meeting-schedule .edit-grid .timeslot.hidden-timeslot-type { background-color: transparent; ); } - .edit-meeting-schedule .edit-grid .timeslot.wrong-timeslot-type .time-label, - .edit-meeting-schedule .edit-grid .timeslot.hidden-timeslot-type .time-label { color: transparent; ); } - .edit-meeting-schedule .session.hidden-purpose, - .edit-meeting-schedule .session.hidden-timeslot-type { filter: blur(3px); } +.parent-{{ parent.acronym }}.selected { background-color: {{ parent.light_scheduling_color }}; } +.parent-{{ parent.acronym }}.other-session-selected { background-color: {{ parent.light_scheduling_color }}; } +{% endfor %} + {# style past sessions to indicate they are not editable #} +.edit-meeting-schedule .edit-grid .timeslot.past-hint { filter: brightness(0.9); } +.edit-meeting-schedule .past-flag { visibility: hidden; font-size: smaller; } +.edit-meeting-schedule .edit-grid .timeslot.past .past-flag { visibility: visible; color: #aaaaaa; } + {# style off-agenda sessions to indicate this #} +.edit-meeting-schedule .session.off-agenda { filter: brightness(0.9); } + {# type and purpose styling #} +.edit-meeting-schedule .edit-grid .timeslot.wrong-timeslot-type, +.edit-meeting-schedule .edit-grid .timeslot.hidden-timeslot-type { background-color: transparent; ); } +.edit-meeting-schedule .edit-grid .timeslot.wrong-timeslot-type .time-label, +.edit-meeting-schedule .edit-grid .timeslot.hidden-timeslot-type .time-label { color: transparent; ); } +.edit-meeting-schedule .session.hidden-purpose, +.edit-meeting-schedule .session.hidden-timeslot-type { filter: blur(3px); } {% endblock %} - {% block title %}{{ schedule.name }}: IETF {{ meeting.number }} meeting agenda{% endblock %} - {% block js %} - - - -{% endblock %} - - -{% block content %} - {% origin %} -
- -

- {% if can_edit_properties %} - Edit properties - - {% endif %} - - Copy agenda - - - Other Agendas -

- -

- Agenda name: {{ schedule.name }} -
- - Owner: {{ schedule.owner }} -

+ + + + {% endblock %} + {% block content %} + {% origin %} +
+

+ Agenda name: {{ schedule.name }} +
+ Owner: {{ schedule.owner }} +

+
+ {% if can_edit_properties %} + + Edit properties + + {% endif %} + + Copy agenda + + Other Agendas +
{% if not can_edit %} -
- You can't edit this schedule. - {% if schedule.is_official_record %}This is the official schedule for a meeting in the past.{% endif %} - Make a new agenda from this. +
+ You can't edit this schedule. + {% if schedule.is_official_record %}This is the official schedule for a meeting in the past.{% endif %} + Make a + + new agenda from this + + .
{% endif %} - -
- - {# using the same markup in both room labels and the actual days ensures they are aligned #} -
- {% for day_data in days.values %} -
-
-  
-   -
- - {% for rgroup in day_data %} -
-
- {% for room_data in rgroup %}{% with room_data.room as room %} -
-
- {{ room.name }}
- {% if room.capacity %}{{ room.capacity }} {% endif %} -
-
- {% endwith %}{% endfor %} +
+ {# using the same markup in both room labels and the actual days ensures they are aligned #} +
+ {% for day_data in days.values %} +
+
+   +
+  
- {% endfor %} -
- {% endfor %} -
- -
- {% for day, day_data in days.items %} -
-
- {{ day|date:"l" }} - -
- {{ day|date:"N j, Y" }} -
- - {% for rgroup in day_data %} -
-
- {# All rooms in a group have same timeslots; grab the first for the labels #} - {% for t in rgroup.0.timeslots %} -
- - {{ t.time|date:"G:i" }} - {{ t.end_time|date:"G:i" }} - - -
+ {% for rgroup in day_data %} +
+
+
+
+ {% for room_data in rgroup %} + {% with room_data.room as room %} +
+
+ {{ room.name }} +
+ {% if room.capacity %}{{ room.capacity }} {% endif %} +
+
+ {% endwith %} {% endfor %}
- {% for room_data in rgroup %}{% with room_data.room as room %} -
- {% for t in room_data.timeslots %} -
-
-
 {# blank div keeps time centered vertically #}
-
{{ t.time|date:"G:i" }} - {{ t.end_time|date:"G:i" }}
-
Past
-
- -
- {% for assignment, session in t.session_assignments %} - {% include "meeting/edit_meeting_schedule_session.html" %} - {% endfor %} -
+ {% endfor %} +
+ {% endfor %} +
+
+ {% for day, day_data in days.items %} +
+
+ {{ day|date:"l" }} + +
+ {{ day|date:"N j, Y" }} +
+ {% for rgroup in day_data %} +
+
+ {# All rooms in a group have same timeslots; grab the first for the labels #} + {% for t in rgroup.0.timeslots %} +
+ + {{ t.time|date:"G:i" }} - {{ t.end_time|date:"G:i" }} + +
{% endfor %}
- {% endwith %}{% endfor %} -
- {% endfor %} -
- {% endfor %} -
-
- -
-
-
-
- {% for session in unassigned_sessions %} - {% include "meeting/edit_meeting_schedule_session.html" %} - {% endfor %} -
-
- -
- - Sort unassigned: - - - - - Show: - {% for p in session_parents %} - - {% endfor %} - - - {% if session_purposes|length > 1 %} - - {% endif %} - -
-
- -
-
- - - -