Skip to content

Commit 15ea994

Browse files
committed
Added an xml_version field to Submission objects, to capture the schema version of submitted XML files (if any). Related to issue ietf-tools#3067.
- Legacy-Id: 18440
1 parent b312884 commit 15ea994

6 files changed

Lines changed: 36 additions & 8 deletions

File tree

ietf/submit/forms.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ def __init__(self, request, *args, **kwargs):
6464
self.parsed_draft = None
6565
self.file_types = []
6666
self.file_info = {} # indexed by file field name, e.g., 'txt', 'xml', ...
67+
self.xml_version = None
6768
# No code currently (14 Sep 2017) uses this class directly; it is
6869
# only used through its subclasses. The two assignments below are
6970
# set to trigger an exception if it is used directly only to make
@@ -182,7 +183,7 @@ def format_messages(where, e, log):
182183
parser = xml2rfc.XmlRfcParser(str(tfn), quiet=True)
183184
self.xmltree = parser.parse(remove_comments=False, quiet=True)
184185
self.xmlroot = self.xmltree.getroot()
185-
xml_version = self.xmlroot.get('version', '2')
186+
self.xml_version = self.xmlroot.get('version', '2')
186187

187188
draftname = self.xmlroot.attrib.get('docName')
188189
if draftname is None:
@@ -224,7 +225,7 @@ def format_messages(where, e, log):
224225
# --- Prep the xml ---
225226
file_name['xml'] = os.path.join(settings.IDSUBMIT_STAGING_PATH, '%s-%s%s' % (self.filename, self.revision, ext))
226227
try:
227-
if xml_version == '3':
228+
if self.xml_version == '3':
228229
prep = xml2rfc.PrepToolWriter(self.xmltree, quiet=True, liberal=True, keep_pis=[xml2rfc.V3_PI_TARGET])
229230
prep.options.accept_prepped = True
230231
self.xmltree.tree = prep.prep()
@@ -238,7 +239,7 @@ def format_messages(where, e, log):
238239
if not ('txt' in self.cleaned_data and self.cleaned_data['txt']):
239240
file_name['txt'] = os.path.join(settings.IDSUBMIT_STAGING_PATH, '%s-%s.txt' % (self.filename, self.revision))
240241
try:
241-
if xml_version != '3':
242+
if self.xml_version != '3':
242243
self.xmltree = parser.parse(remove_comments=True, quiet=True)
243244
self.xmlroot = self.xmltree.getroot()
244245
pagedwriter = xml2rfc.PaginatedTextRfcWriter(self.xmltree, quiet=True)
@@ -252,14 +253,14 @@ def format_messages(where, e, log):
252253
xml2rfc.__version__,
253254
os.path.basename(file_name['txt']),
254255
os.path.basename(file_name['xml']),
255-
xml_version))
256+
self.xml_version))
256257
except Exception as e:
257258
msgs = format_messages('txt', e, xml2rfc.log)
258259
log.log('\n'.join(msgs))
259260
self.add_error('xml', msgs)
260261

261262
# --- Convert to html ---
262-
if xml_version == '3':
263+
if self.xml_version == '3':
263264
try:
264265
file_name['html'] = os.path.join(settings.IDSUBMIT_STAGING_PATH, '%s-%s.html' % (self.filename, self.revision))
265266
writer = xml2rfc.HtmlWriter(self.xmltree, quiet=True)
@@ -270,12 +271,12 @@ def format_messages(where, e, log):
270271
xml2rfc.__version__,
271272
os.path.basename(file_name['html']),
272273
os.path.basename(file_name['xml']),
273-
xml_version))
274+
self.xml_version))
274275
except Exception as e:
275276
msgs = format_messages('html', e, xml2rfc.log)
276277
self.add_error('xml', msgs)
277278

278-
if xml_version == '2':
279+
if self.xml_version == '2':
279280
ok, errors = self.xmltree.validate()
280281
else:
281282
ok, errors = True, ''
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 2.2.15 on 2020-08-28 07:17
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('submit', '0005_auto_20200624_1332'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='submission',
15+
name='xml_version',
16+
field=models.CharField(default=None, max_length=4, null=True),
17+
),
18+
]

ietf/submit/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class Submission(models.Model):
5353
file_size = models.IntegerField(null=True, blank=True)
5454
document_date = models.DateField(null=True, blank=True)
5555
submission_date = models.DateField(default=datetime.date.today)
56+
xml_version = models.CharField(null=True, max_length=4, default=None)
5657

5758
submitter = models.CharField(max_length=255, blank=True, help_text="Name and email of submitter, e.g. \"John Doe <john@example.org>\".")
5859

ietf/submit/resources.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class Meta:
6363
"document_date": ALL,
6464
"submission_date": ALL,
6565
"submitter": ALL,
66+
"xml_version": ALL,
6667
"state": ALL_WITH_RELATIONS,
6768
"group": ALL_WITH_RELATIONS,
6869
"draft": ALL_WITH_RELATIONS,

ietf/submit/tests.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,8 @@ def submit_new_wg(self, formats):
357357
self.assertIn(sug_replaced_alias.name, get_payload_text(outbox[-1]))
358358
self.assertIn("ames-chairs@", outbox[-1]["To"].lower())
359359
self.assertIn("mars-chairs@", outbox[-1]["To"].lower())
360+
# Check submission settings
361+
self.assertEqual(draft.submission().xml_version, "3" if 'xml' in formats else None)
360362

361363
# fetch the document page
362364
url = urlreverse('ietf.doc.views_doc.document_main', kwargs={'name':name})
@@ -559,7 +561,8 @@ def inspect_docevents(docevents, event_delta, type, be_in_desc, by_name):
559561
self.assertEqual(r.status_code, 200)
560562
self.assertContains(r, draft.name)
561563
self.assertContains(r, draft.title)
562-
564+
# Check submission settings
565+
self.assertEqual(draft.submission().xml_version, "3" if 'xml' in formats else None)
563566

564567
def test_submit_existing_txt(self):
565568
self.submit_existing(["txt"])
@@ -682,6 +685,9 @@ def submit_new_individual_logged_in(self, formats):
682685
self.assertEqual(new_revision.type, "new_revision")
683686
self.assertEqual(new_revision.by.name, author.name)
684687

688+
# Check submission settings
689+
self.assertEqual(draft.submission().xml_version, "3" if 'xml' in formats else None)
690+
685691
def test_submit_new_logged_in_txt(self):
686692
self.submit_new_individual_logged_in(["txt"])
687693

ietf/submit/utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -769,6 +769,7 @@ def fill_in_submission(form, submission, authors, abstract, file_size):
769769
submission.first_two_pages = ''.join(form.parsed_draft.pages[:2])
770770
submission.file_size = file_size
771771
submission.file_types = ','.join(form.file_types)
772+
submission.xml_version = form.xml_version
772773
submission.submission_date = datetime.date.today()
773774
submission.document_date = form.parsed_draft.get_creation_date()
774775
submission.replaces = ""

0 commit comments

Comments
 (0)