addition to the existing 'pyang' checker. Added modal overlay displays showing the yang check results every place the yin/yang symbol is shown (red or green) to indicate the presencee and result of yang checks. Added a Yang Validation: line in the document meta-information section on the document's page in the datatracker. Added the result of the xym extaction to the yang check results, to make extration failures visible. Added the version of the used xym, pyang, and yanglint commands to the check results. Added an action to move successfully extracted and validated modules to the module library directories immediately on submission. Added the xym and pyang repositories as svn:external components, rather than listing them in requirements.txt, as there has been delays of many months between essential features in the repositories, and an actual release. We may get occasional buildbot failures if broken code is pulled in from the repository, but better that than the functionality failure of severely outdated componets. Added a new management command to re-run yang validation for active drafts for which yang modules were found at submission time, in order to pick up imported models which may have arrived in the model libraries after the draft's submission. Run daily from bin/daily. Added a table to hold version information for external commands. The yang checker output should include the version information of the used checkers, but seems unnecessary to run each command with its --version switch every time we check a module... Added a new management command to collect version information for external commands on demand. To be run daily from bin/daily. Added tests to verify that xym, pyang and yanglint information is available on the submission confirmation page, and updated the yang module contained in the test document to validate under both pyang and yanglint. Updated admin.py and resource.py files as needed. - Legacy-Id: 13630
405 lines
15 KiB
HTML
405 lines
15 KiB
HTML
{% extends "submit/submit_base.html" %}
|
|
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
|
{% load origin %}
|
|
{% load staticfiles %}
|
|
{% load ietf_filters submit_tags %}
|
|
|
|
{% block title %}Submission status of {{ submission.name }}-{{ submission.rev }}{% endblock %}
|
|
|
|
{% block pagehead %}
|
|
{{ block.super }}
|
|
<link rel="stylesheet" href="{% static 'select2/select2.css' %}">
|
|
<link rel="stylesheet" href="{% static 'select2-bootstrap-css/select2-bootstrap.min.css' %}">
|
|
{% endblock %}
|
|
|
|
{% block submit_content %}
|
|
{% origin %}
|
|
{% if submission.state_id != "uploaded" %}
|
|
<h2>Submission status: {{ submission.state.name }}</h2>
|
|
{% endif %}
|
|
|
|
{% if message %}
|
|
<p class="alert alert-info">{{ message.1 }}</p>
|
|
{% endif %}
|
|
|
|
{% if submission.state_id == "aut-appr" and submission.submitter_parsed.email not in confirmation_list|join:", " %}
|
|
<p class="alert alert-warning">
|
|
Please note that since the database does not have your email address in the list of authors of previous
|
|
revisions of the document, you are <b>not</b> receiving a confirmation email yourself; one of the
|
|
addressees above will have to send a confirmation in order to complete the submission. This is done
|
|
to avoid document hijacking. If none of the known previous authors will be able to confirm the
|
|
submission, please contact <a href="mailto:ietf-action@ietf.org">the Secretariat</a> for action.
|
|
</p>
|
|
{% endif %}
|
|
|
|
{% if submitter_form.errors or replaces_form.errors %}
|
|
<p class="alert alert-danger">Please fix errors in the form below.</p>
|
|
{% endif %}
|
|
|
|
<h2>Submission checks</h2>
|
|
<p>
|
|
{% if passes_checks %}
|
|
Your draft has been verified to pass the submission checks.
|
|
{% else %}
|
|
Your draft has <b>NOT</b> been verified to pass the submission checks.
|
|
{% endif %}
|
|
</p>
|
|
{% for check in submission.latest_checks %}
|
|
{% if check.errors %}
|
|
<p class="alert alert-warning">
|
|
The {{check.checker}} returned {{ check.errors }} error{{ check.errors|pluralize }}
|
|
and {{ check.warnings }} warning{{ check.warnings|pluralize }}; click the button
|
|
below to see details. Please fix those, and resubmit.
|
|
</p>
|
|
{% elif check.warnings %}
|
|
<p class="alert alert-warning">
|
|
The {{check.checker}} returned {{ check.warnings }} warning{{ check.warnings|pluralize }}.
|
|
</p>
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
{% for check in submission.latest_checks %}
|
|
{% if check.passed != None %}
|
|
<button class="btn btn-{% if check.passed %}{% if check.warnings %}warning{% elif check.errors %}warning{% else %}success{% endif %}{% else %}danger{% endif %}" data-toggle="modal" data-target="#check-{{check.pk}}">View {{ check.checker }}</button>
|
|
|
|
<div class="modal fade" id="check-{{check.pk}}" tabindex="-1" role="dialog" aria-labelledby="check-{{check.pk}}" aria-hidden="true">
|
|
<div class="modal-dialog modal-lg">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="nitslabel">{{ check.checker|title }} for {{ submission.name }}-{{ submission.rev }}</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<pre>{{ check.message }}</pre>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
<div class="modal fade" id="twopages" tabindex="-1" role="dialog" aria-labelledby="twopageslabel" aria-hidden="true">
|
|
<div class="modal-dialog modal-lg">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="twopageslabel">First two pages of {{ submission.name }}-{{ submission.rev }}</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
{{ submission|two_pages_decorated_with_errors:errors }}
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% if submission.state_id == "waiting-for-draft" %}
|
|
<p class="alert alert-warning">
|
|
This submission is awaiting the first draft upload.
|
|
</p>
|
|
{% else %}
|
|
<h2>Meta-data from the submission</h2>
|
|
|
|
{% if errors %}
|
|
<div class="alert alert-danger">
|
|
<p><b>Meta-Data errors found!</b></p>
|
|
<p >Please make sure that your Internet-Draft includes all of the required meta-data in the proper format.</p>
|
|
|
|
<p>If your Internet-Draft <b>does</b> include all of the required meta-data in the proper format, and if
|
|
the error(s) identified below are due to the failure of the tool to extract the meta-data correctly,
|
|
then please use the "Adjust meta-data" button below, which will take you to the "Adjust screen" where
|
|
you can correct the improperly extracted meta-data. You will then be able to submit your Internet-Draft
|
|
to the Secretariat for manual posting.</p>
|
|
|
|
<p>If your Internet-Draft <b>does not</b> include all of the required meta-data in the proper format, then
|
|
please cancel this submission, update your Internet-Draft, and resubmit it.</p>
|
|
|
|
<p><b>Note:</b> The secretariat will <b>not</b> add any
|
|
meta-data to your Internet-Draft or edit the meta-data. An
|
|
Internet-Draft that does not include all of the required meta-data in
|
|
the proper format <b>will</b> be returned to the submitter.</p>
|
|
</div>
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
<table class="table table-condensed table-striped">
|
|
<tr>
|
|
<th>Document</th>
|
|
<td>
|
|
{% if submission.state_id == "posted" %}
|
|
<a href="{% url 'ietf.doc.views_doc.document_main' name=submission.name %}">{{ submission.name }}</a>
|
|
{% else %}
|
|
{{ submission.name }}
|
|
{% endif %}
|
|
|
|
<button class="btn btn-default btn-xs pull-right" data-toggle="modal" data-target="#twopages">View first two pages</button>
|
|
|
|
{% show_submission_files submission %}
|
|
|
|
{% if errors.files %}
|
|
<p class="text-danger"><b>{{ errors.files|safe }}</b></p>
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th>Revision</th>
|
|
<td>
|
|
{{ submission.rev }}
|
|
|
|
{% if errors.rev %}
|
|
<button class="btn btn-default btn-xs pull-right" data-toggle="modal" data-target="#twopages">View errors in document</button>
|
|
<p class="text-danger"><b>{{ errors.rev }}</b></p>
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th>Group</th>
|
|
<td>
|
|
{{ submission.group|default:"Individual Submission" }}
|
|
{% if errors.group %}
|
|
<p class="text-danger"><b>{{ errors.group }}</b></p>
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th>Document date</th>
|
|
<td>
|
|
{{ submission.document_date }}
|
|
{% if errors.document_date %}
|
|
<p class="text-danger"><b>{{ errors.document_date }}</b></p>
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th>Submission date</th>
|
|
<td>{{ submission.submission_date }}</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th>Title</th>
|
|
<td>
|
|
{{ submission.title|default:"" }}
|
|
{% if errors.title %}<p class="text-danger"><b>{{ errors.title }}</b></p>{% endif %}
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th>Authors</th>
|
|
<td>
|
|
{{ submission.authors|length }} author{{ submission.authors|pluralize }}
|
|
{% if errors.authors %}<p class="text-danger"><b>{{ errors.authors|safe }}</b></p>{% endif %}
|
|
</td>
|
|
</tr>
|
|
|
|
{% for author in submission.authors %}
|
|
<tr>
|
|
<th>Author {{ forloop.counter }}</th>
|
|
<td>
|
|
{{ author.name }} {% if author.email %}<{{ author.email }}>{% endif %}
|
|
-
|
|
{% if author.affiliation %}
|
|
{{ author.affiliation }}
|
|
{% else %}
|
|
<i>unknown affiliation</i>
|
|
{% endif %}
|
|
-
|
|
{% if author.country %}
|
|
{{ author.country }}
|
|
{% if author.cleaned_country and author.country != author.cleaned_country %}
|
|
(understood to be {{ author.cleaned_country }})
|
|
{% endif %}
|
|
{% else %}
|
|
<i>unknown country</i>
|
|
{% endif %}
|
|
|
|
{% if author.country and not author.cleaned_country %}
|
|
<br>
|
|
<b class="text-warning">Unrecognized country: "{{ author.country }}"</b>: See <a href="{% url "ietf.stats.views.known_countries_list" %}">recognized country names</a>.
|
|
{% endif %}
|
|
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
|
|
<tr>
|
|
<th>Abstract</th>
|
|
<td>
|
|
{{ submission.abstract|linebreaksbr }}
|
|
{% if errors.abstract %}<p class="text-danger"><b>{{ errors.abstract }}</b></p>{% endif %}
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th>Pages</th>
|
|
<td>
|
|
{{ submission.pages }}
|
|
{% if errors.pages %}<p class="text-danger"><b>{{ errors.pages }}</b></p>{% endif %}
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th>File size</th>
|
|
<td>{{ submission.file_size|filesizeformat }}</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th>Formal languages used</th>
|
|
<td>
|
|
{% for l in submission.formal_languages.all %}{{ l.name }}{% if not forloop.last %}, {% endif %}{% empty %}None recognized{% endfor %}
|
|
{% if errors.formal_languages %}<p class="text-danger"><b>{{ errors.formal_languages }}</b></p>{% endif %}
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
{% if can_edit %}
|
|
<p></p>
|
|
<form method="post">
|
|
{% csrf_token %}
|
|
<input type="hidden" name="action" value="edit">
|
|
<button class="btn btn-warning" type="submit" value="adjust">Adjust meta-data</button>
|
|
</form>
|
|
<p>Leads to manual post by the secretariat.</p>
|
|
|
|
{% if passes_checks and not errors %}
|
|
<h2>Please edit the following meta-data before posting:</h2>
|
|
|
|
<form class="idsubmit" method="post">
|
|
{% csrf_token %}
|
|
{% include "submit/submitter_form.html" %}
|
|
{% include "submit/replaces_form.html" %}
|
|
<input type="hidden" name="action" value="autopost">
|
|
<button class="btn btn-primary" type="submit">Post submission</button>
|
|
</form>
|
|
|
|
<p>
|
|
{% if requires_group_approval %}
|
|
Notifies group chairs to get approval.
|
|
{% else %}
|
|
{% if requires_prev_authors_approval %}
|
|
Notifies authors of previous revision of draft to get approval.
|
|
{% else %}
|
|
Notifies submitter and authors for confirmation.
|
|
{% endif %}
|
|
{% endif %}
|
|
</p>
|
|
{% endif %}
|
|
|
|
{% else %}
|
|
{% if submission.submitter %}
|
|
<h3>Submitter information</h3>
|
|
<table class="table table-condensed table-striped">
|
|
<tr><th>Name</th><td>{{ submission.submitter_parsed.name }}</td></tr>
|
|
<tr><th>Email address</th><td>{{ submission.submitter_parsed.email }}</td></tr>
|
|
</table>
|
|
{% endif %}
|
|
{% if submission.replaces %}
|
|
<h3>Replaced documents</h3>
|
|
<table class="table table-condensed table-striped">
|
|
<tr><th>Replaces</th><td>{{ submission.replaces|split:","|join:", "|urlize_ietf_docs }}</td></tr>
|
|
</table>
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
{% if can_cancel %}
|
|
<h2>Cancel submission</h2>
|
|
<form id="cancel-submission" method="post">
|
|
{% csrf_token %}
|
|
<input type="hidden" name="action" value="cancel">
|
|
<button class="btn btn-danger" type="submit" data-toggle="tooltip" title="Deletes the uploaded file{{ submission.file_types|split:","|pluralize }} permanently.">Cancel submission</button>
|
|
</form>
|
|
{% endif %}
|
|
|
|
{% if can_group_approve %}
|
|
<h2>Approve submission</h2>
|
|
<form method="post">
|
|
{% csrf_token %}
|
|
<input type="hidden" name="action" value="approve">
|
|
<button class="btn btn-danger" type="submit">Approve this submission</button>
|
|
</form>
|
|
{% endif %}
|
|
|
|
{% if can_force_post %}
|
|
<p></p>
|
|
<form method="post">
|
|
{% csrf_token %}
|
|
<input type="hidden" name="action" value="forcepost">
|
|
<button class="btn btn-danger" type="submit">Force post of submission</button>
|
|
</form>
|
|
{% endif %}
|
|
|
|
{% if user|has_role:"Secretariat" %}
|
|
<p></p>
|
|
<a id="send{{ submission.pk }}" class="btn btn-default" href="{% url "ietf.submit.views.send_submission_email" submission_id=submission.pk %}" title="Email submitter"><span class="glyphicon glyphicon-envelope" aria-hidden="true"></span> Send Email</a>
|
|
{% endif %}
|
|
|
|
{% if show_send_full_url %}
|
|
<div class="alert alert-danger">
|
|
<p>You are not allowed to modify or cancel this submission. You can
|
|
only modify or cancel this submission from the same URL you were
|
|
redirected to after the submission.</p>
|
|
|
|
<p>If you are the submitter check your browser history to find this
|
|
URL. You can share it with any person you need.</p>
|
|
|
|
<p>If you are one of the authors you can request the URL from which
|
|
you can modify or cancel this submission by clicking the next
|
|
button. An email will then be sent to the authors and submitter
|
|
(if submitter email was entered): {{ confirmation_list|join:", " }}.</p>
|
|
|
|
<p></p>
|
|
<form method="post">{% csrf_token %}
|
|
<input type="hidden" name="action" value="sendfullurl">
|
|
<button class="btn btn-danger" type="submit">Request full access URL</button>
|
|
</form>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<h2>History</h2>
|
|
|
|
<table id="history" class="table table-condensed table-striped">
|
|
<thead>
|
|
<tr><th>Date</th><th>By</th><th>Event</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for e in submission.submissionevent_set.all %}
|
|
<tr>
|
|
<td class="text-nowrap">{{ e.time|date:"Y-m-d" }}</td>
|
|
<td>{{ e.by|default:"" }}</td>
|
|
{% if e.desc|startswith:"Received message" or e.desc|startswith:"Sent message" %}
|
|
{% with m=e.submissionemailevent.message %}
|
|
{% if user.is_authenticated %}
|
|
<td>
|
|
{% if e.desc|startswith:"Received message" and user|has_role:"Secretariat" %}
|
|
<a id="reply{{ submission.pk }}" class="btn btn-default btn-xs" href="{% url "ietf.submit.views.send_submission_email" submission_id=submission.pk message_id=e.submissionemailevent.pk %}" title="Reply"><span class="glyphicon glyphicon-envelope" aria-hidden="true"></span> Reply</a>
|
|
{% endif %}
|
|
Email: <a id="aw{{ submission.pk }}-{{ m.pk }}" href="{% url "ietf.submit.views.show_submission_email_message" submission_id=submission.pk message_id=e.submissionemailevent.pk access_token=submission.access_token %}">{{ e.desc }}</a></td>
|
|
{% else %}
|
|
<td>Email: <a id="aw{{ submission.pk }}-{{ m.pk }}" href="{% url "ietf.submit.views.show_submission_email_message" submission_id=submission.pk message_id=e.submissionemailevent.pk %}">{{ e.desc }}</a></td>
|
|
{% endif %}
|
|
{% endwith %}
|
|
{% else %}
|
|
<td>{{ e.desc }}</td>
|
|
{% endif %}
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
|
|
{% include "submit/problem-reports-footer.html" %}
|
|
|
|
{% endblock %}
|
|
|
|
{% block js %}
|
|
<script src="{% static 'select2/select2.min.js' %}"></script>
|
|
<script src="{% static 'ietf/js/select2-field.js' %}"></script>
|
|
{% endblock %}
|