diff --git a/.editorconfig b/.editorconfig index 95dc121e163..11e80fa699a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,59 +4,38 @@ root = true -# Settings for IETF datatracker +# Global settings for IETF datatracker # --------------------------------------------------------- # PEP8 Style [*] -indent_style = space indent_size = 4 -end_of_line = lf charset = utf-8 -# to avoid tripping Henrik's commit hook: -trim_trailing_whitespace = false -insert_final_newline = false +trim_trailing_whitespace = true +insert_final_newline = true + +# Specializations below *add to* the above defaults # Settings for .github folder # --------------------------------------------------------- # GitHub Markdown Style [.github/**] -indent_style = space indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = false -insert_final_newline = true # Settings for client-side JS / Vue files # --------------------------------------------------------- # StandardJS Style [client/**] -indent_style = space indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true [package.json] -indent_style = space indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true # Settings for cypress tests # --------------------------------------------------------- # StandardJS Style [cypress/**] -indent_style = space indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true \ No newline at end of file diff --git a/.gitignore b/.gitignore index 3687fc93dd2..d302f3208c9 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ *.#* .*.swp .DS_store +datatracker.sublime-project +datatracker.sublime-workspace # Simulated Subversion default ignores end here /.coverage /.factoryboy_random_state diff --git a/dev/tests/Dockerfile b/dev/tests/Dockerfile index 8c938b89101..212481c44ff 100644 --- a/dev/tests/Dockerfile +++ b/dev/tests/Dockerfile @@ -24,7 +24,6 @@ RUN apt-get install -qy \ build-essential \ curl \ docker-ce-cli \ - default-jdk \ enscript \ gawk \ gcc \ @@ -46,7 +45,6 @@ RUN apt-get install -qy \ libxtst6 \ libmagic-dev \ libmariadb-dev \ - libtidy-dev \ locales \ mariadb-client \ netcat \ @@ -109,9 +107,6 @@ RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requ # Turn off rsyslog kernel logging (doesn't work in Docker) RUN sed -i '/imklog/s/^/#/' /etc/rsyslog.conf -# Install the Nu Html Checker (v.Nu) -ADD https://github.com/validator/validator/releases/download/latest/vnu.jar / - # Fetch wait-for utility ADD https://raw.githubusercontent.com/eficode/wait-for/v2.1.3/wait-for /usr/local/bin/ RUN chmod +rx /usr/local/bin/wait-for diff --git a/docker/app.Dockerfile b/docker/app.Dockerfile index f153928a539..4c78753411f 100644 --- a/docker/app.Dockerfile +++ b/docker/app.Dockerfile @@ -31,7 +31,6 @@ RUN apt-get install -qy \ bash \ build-essential \ curl \ - default-jdk \ docker-ce-cli \ enscript \ fish \ @@ -56,7 +55,6 @@ RUN apt-get install -qy \ libmagic-dev \ libmariadb-dev \ libmemcached-tools \ - libtidy-dev \ locales \ mariadb-client \ memcached \ @@ -125,9 +123,6 @@ RUN sed -i '/imklog/s/^/#/' /etc/rsyslog.conf # Colorize the bash shell RUN sed -i 's/#force_color_prompt=/force_color_prompt=/' /root/.bashrc -# Install the Nu Html Checker (v.Nu) -ADD https://github.com/validator/validator/releases/download/latest/vnu.jar / - ADD https://raw.githubusercontent.com/eficode/wait-for/v2.1.3/wait-for /usr/local/bin/ RUN chmod +rx /usr/local/bin/wait-for diff --git a/ietf/dbtemplate/templates/dbtemplate/template_show.html b/ietf/dbtemplate/templates/dbtemplate/template_show.html index 177b50affba..60e3bb9c7cd 100644 --- a/ietf/dbtemplate/templates/dbtemplate/template_show.html +++ b/ietf/dbtemplate/templates/dbtemplate/template_show.html @@ -33,8 +33,8 @@

Meta information

Template content

-
-

{{ template.content }}

+
+

{{ template.content }}

-{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/ietf/doc/templatetags/ballot_icon.py b/ietf/doc/templatetags/ballot_icon.py index 587a2553093..52b7635e9d7 100644 --- a/ietf/doc/templatetags/ballot_icon.py +++ b/ietf/doc/templatetags/ballot_icon.py @@ -109,14 +109,15 @@ def sort_key(t): else: typename = "IESG" - res = ['') + res.append('>') res.append("") @@ -137,7 +138,7 @@ def sort_key(t): res.append('') i = i + 1 - res.append("") + res.append("") res.append('' % ballot.pk) return mark_safe("".join(res)) diff --git a/ietf/doc/templatetags/ietf_filters.py b/ietf/doc/templatetags/ietf_filters.py index 21cd383cbc5..65e7d426438 100644 --- a/ietf/doc/templatetags/ietf_filters.py +++ b/ietf/doc/templatetags/ietf_filters.py @@ -413,13 +413,13 @@ def format_snippet(text, trunc_words=25): full = keep_spacing(collapsebr(linebreaksbr(mark_safe(sanitize_fragment(text))))) snippet = truncatewords_html(full, trunc_words) if snippet != full: - return mark_safe('
%s
%s
' % (snippet, full)) + return mark_safe('
%s
%s
' % (snippet, full)) return mark_safe(full) @register.simple_tag def doc_edit_button(url_name, *args, **kwargs): """Given URL name/args/kwargs, looks up the URL just like "url" tag and returns a properly formatted button for the document material tables.""" - return mark_safe('Edit' % (urlreverse(url_name, args=args, kwargs=kwargs))) + return mark_safe('Edit' % (urlreverse(url_name, args=args, kwargs=kwargs))) @register.filter def textify(text): diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index 56bc8a2c899..9fdc3f6b267 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -1595,7 +1595,7 @@ def test_document_ballot_popup_unique_anchors_per_doc(self): href = q(f'div.balloter-name a[href$="{author_slug}"]').attr('href') ids = [ target.attr('id') - for target in q(f'h5[id$="{author_slug}"]').items() + for target in q(f'p.h5[id$="{author_slug}"]').items() ] self.assertEqual(len(ids), 1, 'Should be exactly one link for the balloter') self.assertEqual(href, f'#{ids[0]}', 'Anchor href should match ID') diff --git a/ietf/doc/tests_ballot.py b/ietf/doc/tests_ballot.py index 3d15a307a64..317e4e3a1d0 100644 --- a/ietf/doc/tests_ballot.py +++ b/ietf/doc/tests_ballot.py @@ -1196,9 +1196,9 @@ def test_ballotpositiondocevent_any_email_sent(self): ) def _assertBallotMessage(self, q, balloter, expected): - heading = q(f'h5[id$="_{slugify(balloter.plain_name())}"]') + heading = q(f'p.h5[id$="_{slugify(balloter.plain_name())}"]') self.assertEqual(len(heading), 1) - #
is followed by a panel with the message of interest, so use next() + # is followed by a panel with the message of interest, so use next() self.assertEqual( len(heading.next().find( f'*[title="{expected}"]' @@ -1379,4 +1379,4 @@ def test_document_ballot_content_without_send_email_values(self): q = PyQuery(content) self._assertBallotMessage(q, balloters[0], 'No email send requests for this discuss') self._assertBallotMessage(q, balloters[1], 'No ballot position send log available') - self._assertBallotMessage(q, old_balloter, 'No ballot position send log available') + self._assertBallotMessage(q, old_balloter, 'No ballot position send log available') \ No newline at end of file diff --git a/ietf/doc/tests_draft.py b/ietf/doc/tests_draft.py index 9a4e69383eb..be29535d87c 100644 --- a/ietf/doc/tests_draft.py +++ b/ietf/doc/tests_draft.py @@ -106,7 +106,7 @@ def test_change_state(self): self.assertEqual(len(q('form select[name=state]')), 1) if next_states: - self.assertEqual(len(q('[type=submit][value="%s"]' % next_states[0].name)), 1) + self.assertEqual(len(q('[type=submit]:contains("%s")' % next_states[0].name)), 1) # faulty post @@ -148,7 +148,7 @@ def test_change_state(self): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertEqual(len(q('form [type=submit][value="%s"]' % first_state.name)), 1) + self.assertEqual(len(q('form [type=submit]:contains("%s")' % first_state.name)), 1) def test_pull_from_rfc_queue(self): ad = Person.objects.get(user__username="ad") @@ -1383,7 +1383,7 @@ def verify_can_see(username): r = self.client.get(url) self.assertEqual(r.status_code,200) q = PyQuery(r.content) - self.assertEqual(len(q('form input[name="confirm"]')),1) + self.assertEqual(len(q('form button[name="confirm"]')),1) url = urlreverse('ietf.doc.views_draft.to_iesg', kwargs=dict(name=self.docname)) diff --git a/ietf/doc/tests_review.py b/ietf/doc/tests_review.py index 44287a6ef44..7e902514d57 100644 --- a/ietf/doc/tests_review.py +++ b/ietf/doc/tests_review.py @@ -38,6 +38,7 @@ from ietf.utils.test_utils import login_testing_unauthorized, reload_db_objects from ietf.utils.test_utils import TestCase from ietf.utils.text import strip_prefix, xslugify +from django.utils.html import escape class ReviewTests(TestCase): def setUp(self): @@ -175,7 +176,7 @@ def test_review_request(self): self.assertContains(r, review_req.team.name) try: # FIXME-LARS - self.assertContains(r, author.name) + self.assertContains(r, escape(author.name)) except: print(r.content) self.assertContains(r, author.name) diff --git a/ietf/doc/views_ballot.py b/ietf/doc/views_ballot.py index 6841e07f5b8..828302e816d 100644 --- a/ietf/doc/views_ballot.py +++ b/ietf/doc/views_ballot.py @@ -574,7 +574,7 @@ def lastcalltext(request, name): e.save() # make sure form has the updated text - form = LastCallTextForm(initial=dict(last_call_text=e.text)) + form = LastCallTextForm(initial=dict(last_call_text=escape(e.text))) s = doc.get_state("draft-iesg") @@ -813,7 +813,7 @@ def ballot_approvaltext(request, name): e.save() # make sure form has the updated text - form = ApprovalTextForm(initial=dict(approval_text=e.text)) + form = ApprovalTextForm(initial=dict(approval_text=escape(e.text))) can_announce = doc.get_state("draft-iesg").order > 19 need_intended_status = "" diff --git a/ietf/doc/views_charter.py b/ietf/doc/views_charter.py index 29cfa7f8e2d..c2b88ac4730 100644 --- a/ietf/doc/views_charter.py +++ b/ietf/doc/views_charter.py @@ -556,8 +556,8 @@ def review_announcement_text(request, name): (existing, existing_new_work) = default_review_text(group, charter, by) existing.save() existing_new_work.save() - form = ReviewAnnouncementTextForm(initial=dict(announcement_text=existing.text, - new_work_text=existing_new_work.text)) + form = ReviewAnnouncementTextForm(initial=dict(announcement_text=escape(existing.text), + new_work_text=escape(existing_new_work.text))) if any(x in request.POST for x in ['send_annc_only','send_nw_only','send_both']) and form.is_valid(): if any(x in request.POST for x in ['send_annc_only','send_both']): @@ -613,7 +613,7 @@ def action_announcement_text(request, name): if "regenerate_text" in request.POST: e = default_action_text(group, charter, by) e.save() - form = ActionAnnouncementTextForm(initial=dict(announcement_text=e.text)) + form = ActionAnnouncementTextForm(initial=dict(announcement_text=escape(e.text))) if "send_text" in request.POST and form.is_valid(): parsed_msg = send_mail_preformatted(request, form.cleaned_data['announcement_text']) diff --git a/ietf/doc/views_status_change.py b/ietf/doc/views_status_change.py index 2484d864508..e7679f66bfd 100644 --- a/ietf/doc/views_status_change.py +++ b/ietf/doc/views_status_change.py @@ -716,7 +716,7 @@ def last_call(request, name): if "regenerate_last_call_text" in request.POST: e = generate_last_call_text(request,status_change) - form = LastCallTextForm(initial=dict(last_call_text=e.text)) + form = LastCallTextForm(initial=dict(last_call_text=escape(e.text))) return render(request, 'doc/status_change/last_call.html', dict(doc=status_change, diff --git a/ietf/group/tests_info.py b/ietf/group/tests_info.py index 988956ca3ce..0cb9cfc62ad 100644 --- a/ietf/group/tests_info.py +++ b/ietf/group/tests_info.py @@ -1527,7 +1527,7 @@ def test_can_switch_date_types_for_initial_charter(self): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertEqual(q('#switch-date-use-form button').attr('style'), 'display:none;') + self.assertTrue(q('#switch-date-use-form button').hasClass('d-none')) ms.group.charter.rev='00-00' ms.group.charter.save() diff --git a/ietf/ietfauth/views.py b/ietf/ietfauth/views.py index 6a087145b8c..892e3c64679 100644 --- a/ietf/ietfauth/views.py +++ b/ietf/ietfauth/views.py @@ -744,17 +744,17 @@ def login(request, extra_context=None): logout(request) response = render(request, 'registration/missing_person.html') if require_consent: - messages.warning(request, mark_safe(""" + messages.warning(request, mark_safe(''' You have personal information associated with your account which is not derived from draft submissions or other ietf work, namely: %s. Please go - to your account profile and review your + to your account profile and review your personal information, then scoll to the bottom and check the 'confirm' checkbox and submit the form, in order to to indicate that that the provided personal information may be used and displayed within the IETF datatracker. - """ % ', '.join(require_consent))) + ''' % ', '.join(require_consent))) return response @login_required @@ -816,4 +816,4 @@ def clean_key(self): messages.error(request, "Key validation failed; key not disabled") else: form = KeyDeleteForm(request.GET) - return render(request, 'form.html', {'form':form, 'title':"Disable a personal API key", 'description':'', 'button':'Disable key'}) \ No newline at end of file + return render(request, 'form.html', {'form':form, 'title':"Disable a personal API key", 'description':'', 'button':'Disable key'}) diff --git a/ietf/liaisons/tests.py b/ietf/liaisons/tests.py index 7f98b8d7505..4e4eaa136c3 100644 --- a/ietf/liaisons/tests.py +++ b/ietf/liaisons/tests.py @@ -317,7 +317,7 @@ def test_taken_care_of(self): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertEqual(len(q('form input[name=do_action_taken]')), 0) + self.assertEqual(len(q('form button[name=do_action_taken]')), 0) # log in and get self.client.login(username="secretary", password="secretary+password") @@ -325,13 +325,13 @@ def test_taken_care_of(self): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertEqual(len(q('form input[name=do_action_taken]')), 1) + self.assertEqual(len(q('form button[name=do_action_taken]')), 1) # mark action taken r = self.client.post(url, dict(do_action_taken="1")) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertEqual(len(q('form input[name=do_action_taken]')), 0) + self.assertEqual(len(q('form button[name=do_action_taken]')), 0) liaison = LiaisonStatement.objects.get(id=liaison.id) self.assertTrue(liaison.action_taken) @@ -357,7 +357,7 @@ def test_approval_process(self): self.assertEqual(r.status_code, 200) self.assertContains(r, liaison.title) q = PyQuery(r.content) - self.assertEqual(len(q('form input[name=approved]')), 0) + self.assertEqual(len(q('form button[name=approved]')), 0) # check the detail page / authorized self.client.login(username="ulm-liaiman", password="ulm-liaiman+password") @@ -368,7 +368,7 @@ def test_approval_process(self): from ietf.liaisons.utils import can_edit_liaison user = User.objects.get(username='ulm-liaiman') self.assertTrue(can_edit_liaison(user, liaison)) - self.assertEqual(len(q('form input[name=approved]')), 1) + self.assertEqual(len(q('form button[name=approved]')), 1) # approve mailbox_before = len(outbox) diff --git a/ietf/liaisons/widgets.py b/ietf/liaisons/widgets.py index 1630f9574ee..d6e2fe936bb 100644 --- a/ietf/liaisons/widgets.py +++ b/ietf/liaisons/widgets.py @@ -18,21 +18,21 @@ def __init__(self, *args, **kwargs): super(ButtonWidget, self).__init__(*args, **kwargs) def render(self, name, value, **kwargs): - html = '' % conditional_escape(self.show_on) - html += '' % conditional_escape(self.label) + html = '%s' % conditional_escape(self.show_on) + html += '%s' % conditional_escape(self.label) if self.require: for i in self.require: - html += '' % conditional_escape(i) + html += '%s' % conditional_escape(i) required_str = 'Please fill in %s to attach a new file' % conditional_escape(self.required_label) - html += '' % conditional_escape(required_str) - html += '' % conditional_escape(self.label) + html += '%s' % conditional_escape(required_str) + html += '' % conditional_escape(self.label) return mark_safe(html) class ShowAttachmentsWidget(Widget): def render(self, name, value, **kwargs): html = '
' % name - html += '' + html += 'No files attached' html += '
' if value and isinstance(value, QuerySet): for attachment in value: diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 12b84dfaa67..408b6a29c82 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -3001,7 +3001,7 @@ def ajax_get_utc(request): utc_day_offset = (naive_utc_dt.date() - dt.date()).days html = "{utc} UTC".format(utc=utc) if utc_day_offset != 0: - html = html + " {0:+d} Day".format(utc_day_offset) + html = html + ' {0:+d} Day'.format(utc_day_offset) context_data = {'timezone': timezone, 'time': time, 'utc': utc, diff --git a/ietf/secr/sreq/forms.py b/ietf/secr/sreq/forms.py index dab5225e2c8..ecad4ce7e54 100644 --- a/ietf/secr/sreq/forms.py +++ b/ietf/secr/sreq/forms.py @@ -117,7 +117,7 @@ def __init__(self, group, meeting, data=None, *args, **kwargs): self._add_widget_class(constraint_field.widget, 'wg_constraint') selector_field = forms.ChoiceField(choices=group_acronym_choices, required=False) - selector_field.widget.attrs['data-slug'] = constraintname.slug # used by onChange handler + selector_field.widget.attrs['data-slug'] = constraintname.slug # used by onchange handler self._add_widget_class(selector_field.widget, 'wg_constraint_selector') cfield_id = 'constraint_{}'.format(constraintname.slug) @@ -150,7 +150,7 @@ def __init__(self, group, meeting, data=None, *args, **kwargs): field_id) ) - self.fields['joint_with_groups_selector'].widget.attrs['onChange'] = "document.form_post.joint_with_groups.value=document.form_post.joint_with_groups.value + ' ' + this.options[this.selectedIndex].value; return 1;" + self.fields['joint_with_groups_selector'].widget.attrs['onchange'] = "document.form_post.joint_with_groups.value=document.form_post.joint_with_groups.value + ' ' + this.options[this.selectedIndex].value; return 1;" self.fields["resources"].choices = [(x.pk,x.desc) for x in ResourceAssociation.objects.filter(name__used=True).order_by('name__order') ] if self.hidden: diff --git a/ietf/secr/templates/announcement/confirm.html b/ietf/secr/templates/announcement/confirm.html index 8682ebb8147..7ad745a09e6 100644 --- a/ietf/secr/templates/announcement/confirm.html +++ b/ietf/secr/templates/announcement/confirm.html @@ -33,7 +33,7 @@

Confirm Announcement

  • -
  • +
diff --git a/ietf/secr/templates/announcement/main.html b/ietf/secr/templates/announcement/main.html index 7ff77aa247b..c88b4a2406c 100644 --- a/ietf/secr/templates/announcement/main.html +++ b/ietf/secr/templates/announcement/main.html @@ -13,18 +13,20 @@

Announcement

{% csrf_token %} + {% if form.non_field_errors %}{{ form.non_field_errors }}{% endif %} {% for field in form.visible_fields %} - + {% endfor %} +
{{ field.label_tag }}{% if field.field.required %} *{% endif %}{{ field.label_tag }}{% if field.field.required %} *{% endif %} {{ field.errors }}{{ field }}{% if field.help_text %}
{{ field.help_text }}{% endif %}
  • -
  • +
diff --git a/ietf/secr/templates/areas/list.html b/ietf/secr/templates/areas/list.html index 0079141a78b..a0ed1ae4a37 100644 --- a/ietf/secr/templates/areas/list.html +++ b/ietf/secr/templates/areas/list.html @@ -17,9 +17,9 @@

Areas

- - - + + + diff --git a/ietf/secr/templates/areas/people.html b/ietf/secr/templates/areas/people.html index ba30c36c3aa..c5598f911d5 100644 --- a/ietf/secr/templates/areas/people.html +++ b/ietf/secr/templates/areas/people.html @@ -3,7 +3,7 @@ {% block title %}Areas - People{% endblock %} {% block extrahead %}{{ block.super }} - + {% endblock %} @@ -21,15 +21,15 @@

Area Directors ({{ area.acronym }})

NameAcronymStatusNameAcronymStatus
{% for director in directors %} {% csrf_token %} - + + {% endif %} - + {% endfor %} @@ -40,18 +40,21 @@

Add new Director

{% csrf_token %}

{{ director.person.name }} {% if director.name.slug == "ad" %} Voting Enabled {% else %} -
+ + {{ form.as_table }} - + +
    -
  • +
diff --git a/ietf/secr/templates/areas/view.html b/ietf/secr/templates/areas/view.html index 559bc55742d..3b95988682b 100644 --- a/ietf/secr/templates/areas/view.html +++ b/ietf/secr/templates/areas/view.html @@ -16,7 +16,7 @@

Area - View

- + @@ -24,23 +24,26 @@

Area - View

+
Area Acronym:{{ area.acronym }}
Area Name:{{ area.name }}
Status:{{ area.state }}
Concluded Date:{{ area.concluded_date|date:"Y-m-d" }}
Last Modified Date:{{ area.time|date:"Y-m-d" }}
Comments:{{ area.comments}}
    - -
  • -
  • -
  • + +
  • +
  • +
diff --git a/ietf/secr/templates/base_secr.html b/ietf/secr/templates/base_secr.html index e840f50e669..47b893f0439 100644 --- a/ietf/secr/templates/base_secr.html +++ b/ietf/secr/templates/base_secr.html @@ -1,18 +1,18 @@ - + {% load staticfiles %} - - - + + + {% block title %}{% endblock %} - - - + + + {% if not server_mode == "production" %} - + {% endif %} {% block extrastyle %}{% endblock %} @@ -20,7 +20,7 @@ {% endblock %} - {% block blockbots %}{% endblock %} + {% block blockbots %}{% endblock %} @@ -41,6 +41,7 @@ @@ -65,6 +67,7 @@
+ {% block pretitle %}{% endblock %} {% block content_title %}{% if title %}

{{ title }}

{% endif %}{% endblock %} {% block content %} @@ -72,7 +75,7 @@ {{ content }} {% endblock %} {% block sidebar %}{% endblock %} -
+
diff --git a/ietf/secr/templates/base_secr_bootstrap.html b/ietf/secr/templates/base_secr_bootstrap.html index c6ee26c714f..2eee566a121 100644 --- a/ietf/secr/templates/base_secr_bootstrap.html +++ b/ietf/secr/templates/base_secr_bootstrap.html @@ -1,17 +1,17 @@ - + {% load staticfiles %} - - - + + + {% block title %}{% endblock %} - - - - + + + + {% if not server_mode == "production" %} - + {% endif %} {% block extrastyle %}{% endblock %} @@ -19,7 +19,7 @@ {% endblock %} - {% block blockbots %}{% endblock %} + {% block blockbots %}{% endblock %} @@ -40,6 +40,7 @@ @@ -64,6 +66,7 @@
+ {% block pretitle %}{% endblock %} {% block content_title %}{% if title %}

{{ title }}

{% endif %}{% endblock %} {% block content %} @@ -71,7 +74,7 @@ {{ content }} {% endblock %} {% block sidebar %}{% endblock %} -
+
diff --git a/ietf/secr/templates/base_site.html b/ietf/secr/templates/base_site.html index 3408bb34fef..5a15244ab6d 100644 --- a/ietf/secr/templates/base_site.html +++ b/ietf/secr/templates/base_site.html @@ -7,6 +7,7 @@ {% block branding %} + +

{% if user|has_role:"Secretariat" %} Secretariat Dashboard {% else %} IETF Dashboard {% endif %}

@@ -16,6 +17,7 @@

{% if user|has_role:"Secretariat" %} Secretariat Dashboard {%

{% endblock %} @@ -31,7 +33,7 @@

{% if user|has_role:"Secretariat" %} Secretariat Dashboard {%

-{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/ietf/secr/templates/base_site_bootstrap.html b/ietf/secr/templates/base_site_bootstrap.html index b8445d25d6c..d50e0cb3ee3 100644 --- a/ietf/secr/templates/base_site_bootstrap.html +++ b/ietf/secr/templates/base_site_bootstrap.html @@ -7,6 +7,7 @@ {% block branding %} + +

{% if user|has_role:"Secretariat" %} Secretariat Dashboard {% else %} WG Chair Dashboard {% endif %}

@@ -16,6 +17,7 @@

{% if user|has_role:"Secretariat" %} Secretariat Dashboard {%

{% endblock %} @@ -31,7 +33,7 @@

{% if user|has_role:"Secretariat" %} Secretariat Dashboard {% -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/ietf/secr/templates/confirm_cancel.html b/ietf/secr/templates/confirm_cancel.html index c846712396c..6bae631a7ec 100644 --- a/ietf/secr/templates/confirm_cancel.html +++ b/ietf/secr/templates/confirm_cancel.html @@ -16,7 +16,7 @@

Are you sure?

- + Take me back

diff --git a/ietf/secr/templates/confirm_delete.html b/ietf/secr/templates/confirm_delete.html index be89ef75a06..ccfc7b1c2fc 100644 --- a/ietf/secr/templates/confirm_delete.html +++ b/ietf/secr/templates/confirm_delete.html @@ -16,7 +16,7 @@

Are you sure?

- + Take me back

diff --git a/ietf/secr/templates/console/main.html b/ietf/secr/templates/console/main.html index 8fdcf60e6ae..5aadefc558a 100644 --- a/ietf/secr/templates/console/main.html +++ b/ietf/secr/templates/console/main.html @@ -12,7 +12,9 @@

Console

- + + +
Latest DocEvent{{ latest_docevent }}
Latest DocEvent{{ latest_docevent }}
diff --git a/ietf/secr/templates/groups/people.html b/ietf/secr/templates/groups/people.html index 113f89c0762..ac51beafc4a 100644 --- a/ietf/secr/templates/groups/people.html +++ b/ietf/secr/templates/groups/people.html @@ -4,7 +4,7 @@ {% block title %}Groups - People{% endblock %} {% block extrahead %}{{ block.super }} - + {% endblock %} @@ -22,10 +22,10 @@

People

- - - - + + + + {% if group.role_set.all %} @@ -49,19 +49,21 @@

Add Role

{{ form.non_field_errors }} {{ form.group_acronym }}
RoleNameEmailActionRoleNameEmailAction
+ - - - - + + + + +
{{ form.name.errors }}{{ form.name }}{{ form.person.errors }}{{ form.person }}{% if form.person.help_text %}
{{ form.person.help_text }}{% endif %}
{{ form.email.errors }}{{ form.email }}{% if form.email.help_text %}
{{ form.email.help_text }}{% endif %}
{{ form.name.errors }}{{ form.name }}{{ form.person.errors }}{{ form.person }}{% if form.person.help_text %}
{{ form.person.help_text }}{% endif %}
{{ form.email.errors }}{{ form.email }}{% if form.email.help_text %}
{{ form.email.help_text }}{% endif %}
diff --git a/ietf/secr/templates/groups/search.html b/ietf/secr/templates/groups/search.html index ce70ad50bb4..4a1de0e4aef 100644 --- a/ietf/secr/templates/groups/search.html +++ b/ietf/secr/templates/groups/search.html @@ -19,7 +19,10 @@

Groups - Search

{% csrf_token %} - {{ form.as_table }} + + + {{ form.as_table }} +
{% include "includes/buttons_search.html" %} diff --git a/ietf/secr/templates/groups/view.html b/ietf/secr/templates/groups/view.html index 6ec9be5025a..a0509b0630b 100644 --- a/ietf/secr/templates/groups/view.html +++ b/ietf/secr/templates/groups/view.html @@ -18,7 +18,7 @@

Groups - View

- + @@ -56,6 +56,7 @@

Groups - View

{% endif %} +
Group Acronym:{{ group.acronym }}
Group Name:{{ group.name }}
Status:{{ group.state }}
Comments:{{ group.comments }}
Last Modified Date:{{ group.time }}
@@ -109,11 +110,11 @@

Secretary(ies)

    -
  • -
  • +
  • +
  • {% comment %} -
  • -
  • +
  • +
  • {% endcomment %}
diff --git a/ietf/secr/templates/includes/activities.html b/ietf/secr/templates/includes/activities.html index 723e6547156..3e79c9aed48 100644 --- a/ietf/secr/templates/includes/activities.html +++ b/ietf/secr/templates/includes/activities.html @@ -3,10 +3,10 @@

Activies Log

- - - - + + + + diff --git a/ietf/secr/templates/includes/buttons_back.html b/ietf/secr/templates/includes/buttons_back.html index 8af99be1738..cd6a89adf6a 100644 --- a/ietf/secr/templates/includes/buttons_back.html +++ b/ietf/secr/templates/includes/buttons_back.html @@ -1,5 +1,5 @@
    -
  • +
diff --git a/ietf/secr/templates/includes/group_search_results.html b/ietf/secr/templates/includes/group_search_results.html index 81f04308347..fb8b2b06e30 100644 --- a/ietf/secr/templates/includes/group_search_results.html +++ b/ietf/secr/templates/includes/group_search_results.html @@ -1,11 +1,11 @@
DateTimeActionNameDateTimeActionName
- - - - - + + + + + diff --git a/ietf/secr/templates/includes/proceedings_functions.html b/ietf/secr/templates/includes/proceedings_functions.html index 4dab4cb563c..33e11a14890 100644 --- a/ietf/secr/templates/includes/proceedings_functions.html +++ b/ietf/secr/templates/includes/proceedings_functions.html @@ -2,12 +2,12 @@

Use this to process meeting materials files that have been converted to PDF and uploaded to the server.

Use this to input session recording information.

diff --git a/ietf/secr/templates/includes/search_results_table.html b/ietf/secr/templates/includes/search_results_table.html index ba7dfd78753..668dc23b605 100644 --- a/ietf/secr/templates/includes/search_results_table.html +++ b/ietf/secr/templates/includes/search_results_table.html @@ -1,9 +1,9 @@
Group NameGroup AcronymStatusTypeMeeting ScheduledGroup NameGroup AcronymStatusTypeMeeting Scheduled
- - - + + + {% if results %} diff --git a/ietf/secr/templates/includes/sessions_request_form.html b/ietf/secr/templates/includes/sessions_request_form.html index 1e596104ea4..74327d480c9 100755 --- a/ietf/secr/templates/includes/sessions_request_form.html +++ b/ietf/secr/templates/includes/sessions_request_form.html @@ -5,7 +5,7 @@ {{ form.non_field_errors }} {% endif %}
NameEmailIDNameEmailID
- + @@ -31,6 +31,7 @@ @@ -77,22 +79,23 @@ + @@ -106,9 +109,10 @@ {% endif %} - + +
Working Group Name:{{ group.name }} ({{ group.acronym }})
Area Name:{% if group.parent %}{{ group.parent.name }} ({{ group.parent.acronym }}){% endif %}
Number of Sessions:*{{ form.num_session.errors }}{{ form.num_session }}
Conflicts to Avoid: + @@ -40,7 +41,7 @@ {% if forloop.first %}{% endif %} @@ -64,6 +65,7 @@ +
Other WGs that included {{ group.name }} in their conflict lists: {{ session_conflicts.inbound|default:"None" }}WG Sessions:
You may select multiple WGs within each category
{{ cname|title }} {{ cselector }} -
+
{{ cfield.errors }}{{ cfield }}
BOF Sessions: If the sessions can not be found in the fields above, please enter free form requests in the Special Requests field below.
Times during which this WG can not meet: {{ form.timeranges.errors }}{{ form.timeranges }}
- Plan session adjacent with another WG:
+ Plan session adjacent with another WG:
(Immediately before or after another WG, no break in between, in the same room.)
{{ form.adjacent_with_wg.errors }}{{ form.adjacent_with_wg }}
- Joint session with:
+ Joint session with:
(To request one session for multiple WGs together.)
{{ form.joint_with_groups_selector }} -
+
{{ form.joint_with_groups.errors }}{{ form.joint_with_groups }}
Special Requests:
 
i.e. restrictions on meeting times / days, etc.
(limit 200 characters)
Special Requests:
 
i.e. restrictions on meeting times / days, etc.
(limit 200 characters)
{{ form.comments.errors }}{{ form.comments }}
diff --git a/ietf/secr/templates/includes/sessions_request_view.html b/ietf/secr/templates/includes/sessions_request_view.html index 5d30e4d64a9..3854651d38f 100644 --- a/ietf/secr/templates/includes/sessions_request_view.html +++ b/ietf/secr/templates/includes/sessions_request_view.html @@ -1,6 +1,6 @@ {% load ams_filters %} - + @@ -15,9 +15,11 @@ @@ -57,4 +59,5 @@ {% endif %} -
Working Group Name:{{ group.name }} ({{ group.acronym }})
Area Name:{{ group.parent }}
Number of Sessions Requested:{% if session.third_session %}3{% else %}{{ session.num_session }}{% endif %}
{% if session_conflicts.outbound %} + {% for conflict in session_conflicts.outbound %} {% endfor %} +
{{ conflict.name|title }}: {{ conflict.groups }}
{% else %}None{% endif %}
Special Requests:{{ session.comments }}
\ No newline at end of file + + diff --git a/ietf/secr/templates/includes/upload_footer.html b/ietf/secr/templates/includes/upload_footer.html index d2faf02c951..cc7858e1f72 100755 --- a/ietf/secr/templates/includes/upload_footer.html +++ b/ietf/secr/templates/includes/upload_footer.html @@ -2,5 +2,5 @@
  • Instructions.
  • If you require assistance in using this tool, or wish to report a bug, then please send a message to ietf-action@ietf.org.
  • To submit your materials via email, please send agendas to agenda@ietf.org and minutes/presentation slides to proceedings@ietf.org.
  • -
  • Note: Normal session materials materials management is now performed using the {% if meeting.number %}{% endif %}materials page{% if meeting.number %}{% endif %} - \ No newline at end of file +
  • Note: Normal session materials materials management is now performed using the {% if meeting.number %}{% endif %}materials page{% if meeting.number %}{% endif %}
  • + diff --git a/ietf/secr/templates/main.html b/ietf/secr/templates/main.html index 1419579e277..dcda4718dee 100644 --- a/ietf/secr/templates/main.html +++ b/ietf/secr/templates/main.html @@ -7,9 +7,10 @@ {% if user|has_role:"Secretariat" %} + + {% else %} + + {% endif %} diff --git a/ietf/secr/templates/meetings/add.html b/ietf/secr/templates/meetings/add.html index 64259bb97c7..12b5cd47b69 100644 --- a/ietf/secr/templates/meetings/add.html +++ b/ietf/secr/templates/meetings/add.html @@ -18,7 +18,10 @@

    Proceedings - Add

    {% csrf_token %} + + {{ form.as_table }} +
    {% include "includes/buttons_save_cancel.html"%} diff --git a/ietf/secr/templates/meetings/base_rooms_times.html b/ietf/secr/templates/meetings/base_rooms_times.html index f03eaafaa30..dc08e9eb50f 100644 --- a/ietf/secr/templates/meetings/base_rooms_times.html +++ b/ietf/secr/templates/meetings/base_rooms_times.html @@ -4,7 +4,7 @@ {% block title %}Meetings{% endblock %} {% block extrahead %}{{ block.super }} - + diff --git a/ietf/secr/templates/meetings/blue_sheet.html b/ietf/secr/templates/meetings/blue_sheet.html index f3b01eb756f..d67efd9f636 100644 --- a/ietf/secr/templates/meetings/blue_sheet.html +++ b/ietf/secr/templates/meetings/blue_sheet.html @@ -21,8 +21,8 @@

    IETF {{ meeting.number }} - Blue Sheet

    Use this to generate blue sheets for meeting sessions.

    • -
      {% csrf_token %} - + {% csrf_token %} +
        Last run: {% if last_run %} @@ -35,15 +35,14 @@

      IETF {{ meeting.number }} - Blue Sheet

      Use this to download the blue sheets from the server.

      • - +
      -
      +

      Use the session details page for a group to upload scanned bluesheets. The session details pages for a group can be reached from the meeting's materials page.

    {% endblock %} - diff --git a/ietf/secr/templates/meetings/edit_meeting.html b/ietf/secr/templates/meetings/edit_meeting.html index dc1599e96df..0d7159346ac 100644 --- a/ietf/secr/templates/meetings/edit_meeting.html +++ b/ietf/secr/templates/meetings/edit_meeting.html @@ -19,7 +19,10 @@
    {% csrf_token %}

    Meetings - Edit

    + + {{ form.as_table }} +
    {% include "includes/buttons_save_cancel.html"%} @@ -28,4 +31,3 @@

    Meetings - Edit

    {% endblock %} - diff --git a/ietf/secr/templates/meetings/main.html b/ietf/secr/templates/meetings/main.html index 404603dc061..e4cfa5ce8ec 100755 --- a/ietf/secr/templates/meetings/main.html +++ b/ietf/secr/templates/meetings/main.html @@ -29,9 +29,12 @@

    Select a meeting to manage


    {% csrf_token %} - {{ form }} + + + {{ form.as_table }} +
    - + diff --git a/ietf/secr/templates/meetings/misc_session_edit.html b/ietf/secr/templates/meetings/misc_session_edit.html index cb47b156a26..af4d1bdbd71 100755 --- a/ietf/secr/templates/meetings/misc_session_edit.html +++ b/ietf/secr/templates/meetings/misc_session_edit.html @@ -7,7 +7,10 @@

    Meeting - {{ meeting }}

    Session: {{ slot.name }}

    {% csrf_token %} + + {{ form.as_table }} +
    diff --git a/ietf/secr/templates/meetings/misc_sessions.html b/ietf/secr/templates/meetings/misc_sessions.html index 16c3a86c2d4..9f9eb0f7aaf 100644 --- a/ietf/secr/templates/meetings/misc_sessions.html +++ b/ietf/secr/templates/meetings/misc_sessions.html @@ -9,17 +9,17 @@

    TimeSlots

    - - - - - - - - - - - + + + + + + + + + + + @@ -51,21 +51,23 @@

    TimeSlots

    {% else %}

    No timeslots exist for this meeting. Add rooms with the "duplicate timeslots" option enabled to copy timeslots from the last meeting.

    {% endif %} -

    +

    {% csrf_token %}
    DayTimeNameShort NameGroupLocationShow Loc.TypeDayTimeNameShort NameGroupLocationShow Loc.Type
    - + + {{ form.as_table }} - + +
    diff --git a/ietf/secr/templates/meetings/notifications.html b/ietf/secr/templates/meetings/notifications.html index dd96b779a83..bf7099577eb 100644 --- a/ietf/secr/templates/meetings/notifications.html +++ b/ietf/secr/templates/meetings/notifications.html @@ -19,8 +19,8 @@

    IETF {{ meeting.number }} - Send Notifications

    {% csrf_token %}

    The following groups are in state 'schedw' (Waiting for scheduling). Pressing the Send Now button will change them to be in state 'sched' (Scheduled), and send email notifications each of them that their session has been scheduled. The last time this button was pressed was {{ last_notice.time|date:"Y-m-d" }}:

    -

    {% if not groups %}(none){% endif %}{% for group in groups %}{{ group.acronym }}{% if not forloop.last %}, {% endif %}{% endfor %}

    - +

    {% if not groups %}(none){% endif %}{% for group in groups %}{{ group.acronym }}{% if not forloop.last %}, {% endif %}{% endfor %}

    +
    {% include "includes/buttons_back.html" %} @@ -28,26 +28,3 @@

    IETF {{ meeting.number }} - Send Notifications

    {% endblock %} - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ietf/secr/templates/meetings/regular_session_edit.html b/ietf/secr/templates/meetings/regular_session_edit.html index 89531c2351e..479cef8af83 100644 --- a/ietf/secr/templates/meetings/regular_session_edit.html +++ b/ietf/secr/templates/meetings/regular_session_edit.html @@ -20,24 +20,26 @@

    Edit Session

    {% csrf_token %}
    - + - + - + - + - + - {{ form }} + + {{ form.as_table }} +
    Day:Day: {% if timeslot %}{{ timeslot.time|date:"l" }}{% endif %}
    Time:Time: {% if timeslot %}{{ timeslot.time|time:"H:i" }}{% endif %}
    Room:Room: {% if timeslot %}{{ timeslot.location.name }}{% endif %}
    Status:Status: {{ current_status_name }}
    diff --git a/ietf/secr/templates/meetings/rooms.html b/ietf/secr/templates/meetings/rooms.html index d707f5ee98e..ea1deedb24e 100644 --- a/ietf/secr/templates/meetings/rooms.html +++ b/ietf/secr/templates/meetings/rooms.html @@ -8,6 +8,7 @@

    Rooms

    @@ -73,7 +75,7 @@

    Add Role

      -
    • +
    diff --git a/ietf/secr/templates/roles/roles.html b/ietf/secr/templates/roles/roles.html index 5d0d86e175b..615452a4861 100644 --- a/ietf/secr/templates/roles/roles.html +++ b/ietf/secr/templates/roles/roles.html @@ -1,10 +1,10 @@ - - - - + + + + diff --git a/ietf/secr/templates/rolodex/add.html b/ietf/secr/templates/rolodex/add.html index 7e83cf313e7..08a97986607 100644 --- a/ietf/secr/templates/rolodex/add.html +++ b/ietf/secr/templates/rolodex/add.html @@ -27,7 +27,7 @@

    Adding {{ name }}

      -
    • +
    @@ -40,8 +40,10 @@

    Adding {{ name }}

    Name

    {% csrf_token %}
    RoleNameEmailActionRoleNameEmailAction
    - + + {{ form.as_table }} +
    {% include "includes/buttons_proceed.html" %} diff --git a/ietf/secr/templates/rolodex/add_proceed.html b/ietf/secr/templates/rolodex/add_proceed.html index bbdcbe7040b..0251cc44d43 100644 --- a/ietf/secr/templates/rolodex/add_proceed.html +++ b/ietf/secr/templates/rolodex/add_proceed.html @@ -8,13 +8,16 @@ {% endblock %} {% block content %} -

    Adding {{ name }}

    +

    Adding {{ name }}

    {% csrf_token %}
    -

    Rolodex - Add

    +

    Rolodex - Add

    + + {{ form.as_table }} +
    diff --git a/ietf/secr/templates/rolodex/delete.html b/ietf/secr/templates/rolodex/delete.html index 4049bae5684..061e2829893 100644 --- a/ietf/secr/templates/rolodex/delete.html +++ b/ietf/secr/templates/rolodex/delete.html @@ -23,7 +23,7 @@

    Are you sure?

    {% csrf_token %} - - + + {% endblock %} diff --git a/ietf/secr/templates/rolodex/edit.html b/ietf/secr/templates/rolodex/edit.html index 90d716dcb57..ee7a4db5e5d 100644 --- a/ietf/secr/templates/rolodex/edit.html +++ b/ietf/secr/templates/rolodex/edit.html @@ -18,7 +18,10 @@

    Rolodex - Edit

    + + {{ person_form.as_table }} +
    @@ -29,10 +32,10 @@

    Email Addresses

    - + {% for field in email_formset.forms.0 %} {% if not field.is_hidden %} - + {% endif %} {% endfor %} diff --git a/ietf/secr/templates/rolodex/search.html b/ietf/secr/templates/rolodex/search.html index f2e5d90b091..7dcaf282462 100644 --- a/ietf/secr/templates/rolodex/search.html +++ b/ietf/secr/templates/rolodex/search.html @@ -16,8 +16,10 @@

    Rolodex - Search Add

    {% csrf_token %}
    {{ field.label }}{{ field.label }}
    - + + {{ form.as_table }} +
    {% include "includes/buttons_search.html" %} diff --git a/ietf/secr/templates/rolodex/view.html b/ietf/secr/templates/rolodex/view.html index b6e953a2030..738ab3361a0 100644 --- a/ietf/secr/templates/rolodex/view.html +++ b/ietf/secr/templates/rolodex/view.html @@ -13,27 +13,28 @@

    {{ person.name }} ({{ person.id }})

    - + - + {% for email in person.emails %} {% endfor %} +
    Name:{{ person.name }}
    Ascii Name:{{ person.ascii }}
    Short Name:{{ person.ascii_short }}
    Aliases:{% for alias in person.alias_set.all %}{% if not forloop.first %}, {% endif %}{{ alias.name }}{% endfor %}
    Aliases:{% for alias in person.alias_set.all %}{% if not forloop.first %}, {% endif %}{{ alias.name }}{% endfor %}
    User:{{ person.user }}
    Email {{ forloop.counter }}:{{ email }}
    -
    +