diff --git a/ietf/submit/utils.py b/ietf/submit/utils.py index 958c3669d..a8671e995 100644 --- a/ietf/submit/utils.py +++ b/ietf/submit/utils.py @@ -10,9 +10,12 @@ import os import re import six # pyflakes:ignore import xml2rfc +if six.PY3: + from typing import Callable, Optional from django.conf import settings from django.core.validators import validate_email, ValidationError +from django.http import HttpRequest from django.utils.module_loading import import_string import debug # pyflakes:ignore @@ -161,23 +164,23 @@ def create_submission_event(request, submission, desc): SubmissionEvent.objects.create(submission=submission, by=by, desc=desc) -def docevent_from_submission(request, submission, desc, who=None): - system = Person.objects.get(name="(System)") +def docevent_from_submission(request, submission, desc, who=None): # type: (HttpRequest, Submission, str, Optional[Person]) -> Optional[DocEvent] + log.assertion('who is None or isinstance(who, Person)') try: draft = Document.objects.get(name=submission.name) except Document.DoesNotExist: # Assume this is revision 00 - we'll do this later - return + return None if who: - by = Person.objects.get(name=who) + by = who else: submitter_parsed = submission.submitter_parsed() if submitter_parsed["name"] and submitter_parsed["email"]: by, _ = ensure_person_email_info_exists(submitter_parsed["name"], submitter_parsed["email"], submission.name) else: - by = system + by = Person.objects.get(name="(System)") e = SubmissionDocEvent.objects.create( doc=draft, diff --git a/ietf/submit/views.py b/ietf/submit/views.py index ab833aea5..5bc4272e1 100644 --- a/ietf/submit/views.py +++ b/ietf/submit/views.py @@ -26,6 +26,7 @@ from ietf.group.utils import group_features_group_filter from ietf.ietfauth.utils import has_role, role_required from ietf.mailtrigger.utils import gather_address_lists from ietf.message.models import Message, MessageAttachment +from ietf.person.models import Person from ietf.submit.forms import ( SubmissionManualUploadForm, SubmissionAutoUploadForm, AuthorForm, SubmitterForm, EditSubmissionForm, PreapprovalForm, ReplacesForm, SubmissionEmailForm, MessageModelForm ) from ietf.submit.mail import ( send_full_url, send_manual_post_request, add_submission_email, get_reply_to ) @@ -142,7 +143,7 @@ def api_submit(request): sent_to, desc, docDesc = send_confirmation_emails(request, submission, requires_group_approval, requires_prev_authors_approval) msg = "Set submitter to \"%s\" and %s" % (submission.submitter, desc) create_submission_event(request, submission, msg) - docevent_from_submission(request, submission, docDesc, who="(System)") + docevent_from_submission(request, submission, docDesc, who=Person.objects.get(name="(System)")) return HttpResponse( "Upload of %s OK, confirmation requests sent to:\n %s" % (submission.name, ',\n '.join(sent_to)), @@ -298,7 +299,7 @@ def submission_status(request, submission_id, access_token=None): ", ".join(prettify_std_name(r.name) for r in replaces) if replaces else "(none)", desc) create_submission_event(request, submission, msg) - docevent_from_submission(request, submission, docDesc, who="(System)") + docevent_from_submission(request, submission, docDesc, who=Person.objects.get(name="(System)")) if access_token: return redirect("ietf.submit.views.submission_status", submission_id=submission.pk, access_token=access_token)