From 435a0da12d4a6d5d8546a0d0d1583ce6e6fc7422 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 4 Mar 2019 20:14:19 +0000 Subject: [PATCH] Added on_behalf_of() calls for from addresses needing it throughout the code. - Legacy-Id: 15992 --- ietf/doc/mails.py | 6 +++--- ietf/doc/views_ballot.py | 5 +++-- ietf/doc/views_draft.py | 6 +++--- ietf/doc/views_review.py | 4 ++-- ietf/group/views.py | 4 ++-- ietf/meeting/views.py | 4 ++-- ietf/message/utils.py | 4 +++- ietf/review/utils.py | 4 ++-- ietf/secr/announcement/views.py | 4 ++-- 9 files changed, 22 insertions(+), 19 deletions(-) diff --git a/ietf/doc/mails.py b/ietf/doc/mails.py index 9e5288c30..c290d092c 100644 --- a/ietf/doc/mails.py +++ b/ietf/doc/mails.py @@ -9,7 +9,7 @@ from django.urls import reverse as urlreverse import debug # pyflakes:ignore -from ietf.utils.mail import send_mail, send_mail_text +from ietf.utils.mail import send_mail, send_mail_text, on_behalf_of from ietf.ipr.utils import iprs_from_docs, related_docs from ietf.doc.models import WriteupDocEvent, LastCallDocEvent, DocAlias, ConsensusDocEvent from ietf.doc.utils import needed_ballot_positions @@ -35,7 +35,7 @@ def email_ad_approved_doc(request, doc, text): to = "iesg@iesg.org" bcc = "iesg-secretary@ietf.org" frm = request.user.person.formatted_email() - send_mail(request, to, frm, + send_mail(request, to, on_behalf_of(frm), "Approved: %s" % doc.filename_with_rev(), "doc/mail/ad_approval_email.txt", dict(text=text, @@ -318,7 +318,7 @@ def email_resurrect_requested(request, doc, by): e = by.role_email("ad") frm = e.address - send_mail(request, to, e.formatted_email(), + send_mail(request, to, on_behalf_of(e.formatted_email()), "I-D Resurrection Request", "doc/mail/resurrect_request_email.txt", dict(doc=doc, diff --git a/ietf/doc/views_ballot.py b/ietf/doc/views_ballot.py index aca61804c..46ea8a494 100644 --- a/ietf/doc/views_ballot.py +++ b/ietf/doc/views_ballot.py @@ -32,7 +32,7 @@ from ietf.message.utils import infer_message from ietf.name.models import BallotPositionName from ietf.person.models import Person from ietf.utils import log -from ietf.utils.mail import send_mail_text, send_mail_preformatted +from ietf.utils.mail import send_mail_text, send_mail_preformatted, on_behalf_of from ietf.utils.decorators import require_api_key BALLOT_CHOICES = (("yes", "Yes"), @@ -285,6 +285,7 @@ def api_set_position(request): # send position email addrs, frm, subject, body = build_position_email(ad, doc, pos) + frm = on_behalf_of(frm) send_mail_text(request, addrs.to, frm, subject, body, cc=addrs.cc) return HttpResponse("Done", status=200, content_type='text/plain') @@ -362,7 +363,7 @@ def send_ballot_comment(request, name, ballot_id): if extra_cc: cc.extend(extra_cc) - send_mail_text(request, addrs.to, frm, subject, body, cc=u", ".join(cc)) + send_mail_text(request, addrs.to, on_behalf_of(frm), subject, body, cc=u", ".join(cc)) return HttpResponseRedirect(return_to_url) diff --git a/ietf/doc/views_draft.py b/ietf/doc/views_draft.py index fc8507af1..308fcc392 100644 --- a/ietf/doc/views_draft.py +++ b/ietf/doc/views_draft.py @@ -42,7 +42,7 @@ from ietf.message.models import Message from ietf.name.models import IntendedStdLevelName, DocTagName, StreamName, DocUrlTagName from ietf.person.fields import SearchableEmailField from ietf.person.models import Person, Email -from ietf.utils.mail import send_mail, send_mail_message +from ietf.utils.mail import send_mail, send_mail_message, on_behalf_of from ietf.utils.textupload import get_cleaned_text_file_content from ietf.mailtrigger.utils import gather_address_lists @@ -597,7 +597,7 @@ def to_iesg(request,name): extra['Cc'] = addrs.as_strings().cc send_mail(request=request, to = addrs.to, - frm = by.formatted_email(), + frm = on_behalf_of(by.formatted_email()), subject = "Publication has been requested for %s-%s" % (doc.name,doc.rev), template = "doc/submit_to_iesg_email.txt", context = dict(doc=doc,by=by,url="%s%s"%(settings.IDTRACKER_BASE_URL,doc.get_absolute_url()),), @@ -1219,7 +1219,7 @@ def request_publication(request, name): consensus_event = doc.latest_event(ConsensusDocEvent, type="changed_consensus") m = Message() - m.frm = request.user.person.formatted_email() + m.frm = on_behalf_of(request.user.person.formatted_email()) (m.to, m.cc) = gather_address_lists('pubreq_rfced',doc=doc) m.by = request.user.person diff --git a/ietf/doc/views_review.py b/ietf/doc/views_review.py index 9103a65c1..87bd2e881 100644 --- a/ietf/doc/views_review.py +++ b/ietf/doc/views_review.py @@ -37,7 +37,7 @@ from ietf.review import mailarch from ietf.utils.fields import DatepickerDateField from ietf.utils.text import strip_prefix, xslugify from ietf.utils.textupload import get_cleaned_text_file_content -from ietf.utils.mail import send_mail_message +from ietf.utils.mail import send_mail_message, on_behalf_of from ietf.mailtrigger.utils import gather_address_lists from ietf.utils.fields import MultiEmailField @@ -628,7 +628,7 @@ def complete_review(request, name, request_id): msg = Message.objects.create( by=request.user.person, subject=subject, - frm=frm, + frm=on_behalf_of(frm), to=", ".join(to), cc=form.cleaned_data["cc"], body = render_to_string("review/completed_review.txt", { diff --git a/ietf/group/views.py b/ietf/group/views.py index 326eb385e..2ea91851e 100644 --- a/ietf/group/views.py +++ b/ietf/group/views.py @@ -108,7 +108,7 @@ from ietf.doc.models import LastCallDocEvent from ietf.name.models import ReviewRequestStateName -from ietf.utils.mail import send_mail_text, parse_preformatted +from ietf.utils.mail import send_mail_text, parse_preformatted, on_behalf_of from ietf.ietfauth.utils import user_is_person from ietf.dbtemplate.models import DBTemplate @@ -1599,7 +1599,7 @@ def email_open_review_assignments(request, acronym, group_type=None): if request.method == "POST" and request.POST.get("action") == "email": form = EmailOpenAssignmentsForm(request.POST) if form.is_valid(): - send_mail_text(request, form.cleaned_data["to"], form.cleaned_data["frm"], form.cleaned_data["subject"], form.cleaned_data["body"],cc=form.cleaned_data["cc"],extra={"Reply-To":", ".join(form.cleaned_data["reply_to"])}) + send_mail_text(request, form.cleaned_data["to"], on_behalf_of(form.cleaned_data["frm"]), form.cleaned_data["subject"], form.cleaned_data["body"],cc=form.cleaned_data["cc"],extra={"Reply-To":", ".join(form.cleaned_data["reply_to"])}) return HttpResponseRedirect(back_url) else: (to,cc) = gather_address_lists('review_assignments_summarized',group=group) diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index fdd23124b..a960ceb89 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -64,7 +64,7 @@ from ietf.secr.proceedings.proc_utils import (get_progress_stats, post_process, create_recording) from ietf.utils.decorators import require_api_key from ietf.utils.log import assertion -from ietf.utils.mail import send_mail_message, send_mail_text +from ietf.utils.mail import send_mail_message, send_mail_text, on_behalf_of from ietf.utils.pipe import pipe from ietf.utils.pdf import pdf_pages from ietf.utils.text import xslugify @@ -2307,7 +2307,7 @@ def request_minutes(request, num=None): if form.is_valid(): send_mail_text(request, to=form.cleaned_data.get('to'), - frm=request.user.person.email_address(), + frm=on_behalf_of(request.user.person.email_address()), subject=form.cleaned_data.get('subject'), txt=form.cleaned_data.get('body'), cc=form.cleaned_data.get('cc'), diff --git a/ietf/message/utils.py b/ietf/message/utils.py index c843f1584..38ea994e0 100644 --- a/ietf/message/utils.py +++ b/ietf/message/utils.py @@ -1,6 +1,6 @@ import re, datetime, email -from ietf.utils.mail import send_mail_text, send_mail_mime +from ietf.utils.mail import send_mail_text, send_mail_mime, maybe_on_behalf_of from ietf.message.models import Message first_dot_on_line_re = re.compile(r'^\.', re.MULTILINE) @@ -21,6 +21,8 @@ def infer_message(s): def send_scheduled_message_from_send_queue(send_queue): message = send_queue.message + message.frm = maybe_on_behalf_of(message.frm) + message.save() # for some reason, the old Perl code base substituted away . on line starts body = first_dot_on_line_re.sub("", message.body) diff --git a/ietf/review/utils.py b/ietf/review/utils.py index 85497ba49..f70ea1ae8 100644 --- a/ietf/review/utils.py +++ b/ietf/review/utils.py @@ -17,7 +17,7 @@ from ietf.ietfauth.utils import has_role, is_authorized_in_doc_stream from ietf.review.models import (ReviewRequest, ReviewRequestStateName, ReviewTypeName, ReviewerSettings, UnavailablePeriod, ReviewWish, NextReviewerInTeam, ReviewTeamSettings, ReviewSecretarySettings) -from ietf.utils.mail import send_mail, get_email_addresses_from_text +from ietf.utils.mail import send_mail, on_behalf_of, get_email_addresses_from_text from ietf.doc.utils import extract_complete_replaces_ancestor_mapping_for_docs def active_review_teams(): @@ -368,7 +368,7 @@ def email_review_request_change(request, review_req, subject, msg, by, notify_se url = urlreverse("ietf.doc.views_review.review_request_forced_login", kwargs={ "name": review_req.doc.name, "request_id": review_req.pk }) url = request.build_absolute_uri(url) - send_mail(request, to, request.user.person.formatted_email(), subject, "review/review_request_changed.txt", { + send_mail(request, to, on_behalf_of(request.user.person.formatted_email()), subject, "review/review_request_changed.txt", { "review_req_url": url, "review_req": review_req, "msg": msg, diff --git a/ietf/secr/announcement/views.py b/ietf/secr/announcement/views.py index 9d82f196c..660374360 100644 --- a/ietf/secr/announcement/views.py +++ b/ietf/secr/announcement/views.py @@ -8,7 +8,7 @@ from ietf.message.models import AnnouncementFrom from ietf.ietfauth.utils import has_role from ietf.secr.announcement.forms import AnnounceForm from ietf.secr.utils.decorators import check_for_cancel -from ietf.utils.mail import send_mail_text +from ietf.utils.mail import send_mail_text, on_behalf_of # ------------------------------------------------- # Helper Functions @@ -83,7 +83,7 @@ def confirm(request): extra = {'Reply-To':message.reply_to} send_mail_text(None, message.to, - message.frm, + on_behalf_of(message.frm), message.subject, message.body, cc=message.cc,