Added validation of draft names extracted from XML submission files.

- Legacy-Id: 16239
This commit is contained in:
Henrik Levkowetz 2019-06-12 22:06:53 +00:00
parent 5e796292ff
commit d300a82845
2 changed files with 10 additions and 2 deletions

View file

@ -24,7 +24,7 @@ from ietf.meeting.models import Meeting
from ietf.message.models import Message
from ietf.name.models import FormalLanguageName, GroupTypeName
from ietf.submit.models import Submission, Preapproval
from ietf.submit.utils import validate_submission_rev, validate_submission_document_date
from ietf.submit.utils import validate_submission_name, validate_submission_rev, validate_submission_document_date
from ietf.submit.parsers.pdf_parser import PDFParser
from ietf.submit.parsers.plain_parser import PlainParser
from ietf.submit.parsers.ps_parser import PSParser
@ -173,6 +173,9 @@ class SubmissionBaseUploadForm(forms.Form):
draftname = self.xmlroot.attrib.get('docName')
if draftname is None:
raise forms.ValidationError("No docName attribute found in the xml root element")
name_error = validate_submission_name(draftname)
if name_error:
raise forms.ValidationError(name_error)
revmatch = re.search("-[0-9][0-9]$", draftname)
if revmatch:
self.revision = draftname[-2:]

View file

@ -1,8 +1,9 @@
# Copyright The IETF Trust 2011-2019, All Rights Reserved
# -*- coding: utf-8 -*-
import os
import datetime
import os
import re
import six # pyflakes:ignore
import xml2rfc
@ -78,6 +79,10 @@ def has_been_replaced_by(name):
return None
def validate_submission_name(name):
if not re.search(r'^draft-[a-z][-a-z0-9]{0,39}$', name):
return "Expected name 'draft-...' using lowercase ascii letters, digits, and hyphen; found '%s'." % name
def validate_submission_rev(name, rev):
if not rev:
return 'Revision not found'