Added an xml_version field to Submission objects, to capture the schema version of submitted XML files (if any). Related to issue #3067.
- Legacy-Id: 18440
This commit is contained in:
parent
b3128842c9
commit
15ea994266
|
@ -64,6 +64,7 @@ class SubmissionBaseUploadForm(forms.Form):
|
|||
self.parsed_draft = None
|
||||
self.file_types = []
|
||||
self.file_info = {} # indexed by file field name, e.g., 'txt', 'xml', ...
|
||||
self.xml_version = None
|
||||
# No code currently (14 Sep 2017) uses this class directly; it is
|
||||
# only used through its subclasses. The two assignments below are
|
||||
# set to trigger an exception if it is used directly only to make
|
||||
|
@ -182,7 +183,7 @@ class SubmissionBaseUploadForm(forms.Form):
|
|||
parser = xml2rfc.XmlRfcParser(str(tfn), quiet=True)
|
||||
self.xmltree = parser.parse(remove_comments=False, quiet=True)
|
||||
self.xmlroot = self.xmltree.getroot()
|
||||
xml_version = self.xmlroot.get('version', '2')
|
||||
self.xml_version = self.xmlroot.get('version', '2')
|
||||
|
||||
draftname = self.xmlroot.attrib.get('docName')
|
||||
if draftname is None:
|
||||
|
@ -224,7 +225,7 @@ class SubmissionBaseUploadForm(forms.Form):
|
|||
# --- Prep the xml ---
|
||||
file_name['xml'] = os.path.join(settings.IDSUBMIT_STAGING_PATH, '%s-%s%s' % (self.filename, self.revision, ext))
|
||||
try:
|
||||
if xml_version == '3':
|
||||
if self.xml_version == '3':
|
||||
prep = xml2rfc.PrepToolWriter(self.xmltree, quiet=True, liberal=True, keep_pis=[xml2rfc.V3_PI_TARGET])
|
||||
prep.options.accept_prepped = True
|
||||
self.xmltree.tree = prep.prep()
|
||||
|
@ -238,7 +239,7 @@ class SubmissionBaseUploadForm(forms.Form):
|
|||
if not ('txt' in self.cleaned_data and self.cleaned_data['txt']):
|
||||
file_name['txt'] = os.path.join(settings.IDSUBMIT_STAGING_PATH, '%s-%s.txt' % (self.filename, self.revision))
|
||||
try:
|
||||
if xml_version != '3':
|
||||
if self.xml_version != '3':
|
||||
self.xmltree = parser.parse(remove_comments=True, quiet=True)
|
||||
self.xmlroot = self.xmltree.getroot()
|
||||
pagedwriter = xml2rfc.PaginatedTextRfcWriter(self.xmltree, quiet=True)
|
||||
|
@ -252,14 +253,14 @@ class SubmissionBaseUploadForm(forms.Form):
|
|||
xml2rfc.__version__,
|
||||
os.path.basename(file_name['txt']),
|
||||
os.path.basename(file_name['xml']),
|
||||
xml_version))
|
||||
self.xml_version))
|
||||
except Exception as e:
|
||||
msgs = format_messages('txt', e, xml2rfc.log)
|
||||
log.log('\n'.join(msgs))
|
||||
self.add_error('xml', msgs)
|
||||
|
||||
# --- Convert to html ---
|
||||
if xml_version == '3':
|
||||
if self.xml_version == '3':
|
||||
try:
|
||||
file_name['html'] = os.path.join(settings.IDSUBMIT_STAGING_PATH, '%s-%s.html' % (self.filename, self.revision))
|
||||
writer = xml2rfc.HtmlWriter(self.xmltree, quiet=True)
|
||||
|
@ -270,12 +271,12 @@ class SubmissionBaseUploadForm(forms.Form):
|
|||
xml2rfc.__version__,
|
||||
os.path.basename(file_name['html']),
|
||||
os.path.basename(file_name['xml']),
|
||||
xml_version))
|
||||
self.xml_version))
|
||||
except Exception as e:
|
||||
msgs = format_messages('html', e, xml2rfc.log)
|
||||
self.add_error('xml', msgs)
|
||||
|
||||
if xml_version == '2':
|
||||
if self.xml_version == '2':
|
||||
ok, errors = self.xmltree.validate()
|
||||
else:
|
||||
ok, errors = True, ''
|
||||
|
|
18
ietf/submit/migrations/0006_submission_xml_version.py
Normal file
18
ietf/submit/migrations/0006_submission_xml_version.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 2.2.15 on 2020-08-28 07:17
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('submit', '0005_auto_20200624_1332'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='submission',
|
||||
name='xml_version',
|
||||
field=models.CharField(default=None, max_length=4, null=True),
|
||||
),
|
||||
]
|
|
@ -53,6 +53,7 @@ class Submission(models.Model):
|
|||
file_size = models.IntegerField(null=True, blank=True)
|
||||
document_date = models.DateField(null=True, blank=True)
|
||||
submission_date = models.DateField(default=datetime.date.today)
|
||||
xml_version = models.CharField(null=True, max_length=4, default=None)
|
||||
|
||||
submitter = models.CharField(max_length=255, blank=True, help_text="Name and email of submitter, e.g. \"John Doe <john@example.org>\".")
|
||||
|
||||
|
|
|
@ -63,6 +63,7 @@ class SubmissionResource(ModelResource):
|
|||
"document_date": ALL,
|
||||
"submission_date": ALL,
|
||||
"submitter": ALL,
|
||||
"xml_version": ALL,
|
||||
"state": ALL_WITH_RELATIONS,
|
||||
"group": ALL_WITH_RELATIONS,
|
||||
"draft": ALL_WITH_RELATIONS,
|
||||
|
|
|
@ -357,6 +357,8 @@ class SubmitTests(TestCase):
|
|||
self.assertIn(sug_replaced_alias.name, get_payload_text(outbox[-1]))
|
||||
self.assertIn("ames-chairs@", outbox[-1]["To"].lower())
|
||||
self.assertIn("mars-chairs@", outbox[-1]["To"].lower())
|
||||
# Check submission settings
|
||||
self.assertEqual(draft.submission().xml_version, "3" if 'xml' in formats else None)
|
||||
|
||||
# fetch the document page
|
||||
url = urlreverse('ietf.doc.views_doc.document_main', kwargs={'name':name})
|
||||
|
@ -559,7 +561,8 @@ class SubmitTests(TestCase):
|
|||
self.assertEqual(r.status_code, 200)
|
||||
self.assertContains(r, draft.name)
|
||||
self.assertContains(r, draft.title)
|
||||
|
||||
# Check submission settings
|
||||
self.assertEqual(draft.submission().xml_version, "3" if 'xml' in formats else None)
|
||||
|
||||
def test_submit_existing_txt(self):
|
||||
self.submit_existing(["txt"])
|
||||
|
@ -682,6 +685,9 @@ class SubmitTests(TestCase):
|
|||
self.assertEqual(new_revision.type, "new_revision")
|
||||
self.assertEqual(new_revision.by.name, author.name)
|
||||
|
||||
# Check submission settings
|
||||
self.assertEqual(draft.submission().xml_version, "3" if 'xml' in formats else None)
|
||||
|
||||
def test_submit_new_logged_in_txt(self):
|
||||
self.submit_new_individual_logged_in(["txt"])
|
||||
|
||||
|
|
|
@ -769,6 +769,7 @@ def fill_in_submission(form, submission, authors, abstract, file_size):
|
|||
submission.first_two_pages = ''.join(form.parsed_draft.pages[:2])
|
||||
submission.file_size = file_size
|
||||
submission.file_types = ','.join(form.file_types)
|
||||
submission.xml_version = form.xml_version
|
||||
submission.submission_date = datetime.date.today()
|
||||
submission.document_date = form.parsed_draft.get_creation_date()
|
||||
submission.replaces = ""
|
||||
|
|
Loading…
Reference in a new issue