Package coprs :: Module mail
[hide private]
[frames] | no frames]

Source Code for Module coprs.mail

 1  import flask 
 2  import platform 
 3  import smtplib 
 4  from email.mime.text import MIMEText 
 5  from coprs import helpers 
 6   
 7   
8 -class Message(object):
9 subject = None 10 text = None
11 12
13 -class PermissionRequestMessage(Message):
14 - def __init__(self, copr, applicant, permission_dict):
15 """ 16 :param models.Copr copr: 17 :param models.User applicant: object of a user that applies for new permissions (e.g. flask.g.user) 18 :param models.CoprPermission permission: permission object 19 :param dict permission_dict: {"old_builder": int, "old_admin": int, "new_builder": int, "new_admin": int} 20 """ 21 self.subject = "[Copr] {0}: {1} is asking permissions".format(copr.name, applicant.name) 22 self.text = ("{0} is asking for these permissions:\n\n" 23 "Builder: {1} -> {2}\n" 24 "Admin: {3} -> {4}\n\n" 25 "Project: {5}\n" 26 "Owner: {6}".format( 27 applicant.name, 28 helpers.PermissionEnum(permission_dict.get("old_builder", 0)), 29 helpers.PermissionEnum(permission_dict.get("new_builder")), 30 helpers.PermissionEnum(permission_dict.get("old_admin", 0)), 31 helpers.PermissionEnum(permission_dict.get("new_admin")), 32 copr.name, 33 copr.owner_name))
34 35
36 -class PermissionChangeMessage(Message):
37 - def __init__(self, copr, permission_dict):
38 """ 39 :param models.Copr copr: 40 :param dict permission_dict: {"old_builder": int, "old_admin": int, "new_builder": int, "new_admin": int} 41 """ 42 self.subject = "[Copr] {0}: Your permissions have changed".format(copr.name) 43 self.text = ( 44 "Your permissions have changed:\n\n" 45 "Builder: {0} -> {1}\n" 46 "Admin: {2} -> {3}\n\n" 47 "Project: {4}\n" 48 "Owner: {5}".format( 49 helpers.PermissionEnum(permission_dict["old_builder"]), 50 helpers.PermissionEnum(permission_dict["new_builder"]), 51 helpers.PermissionEnum(permission_dict["old_admin"]), 52 helpers.PermissionEnum(permission_dict["new_admin"]), 53 copr.name, copr.user.name))
54 55
56 -class LegalFlagMessage(Message):
57 - def __init__(self, copr, reporter, reason):
58 """ 59 :param models.Copr copr: 60 :param models.User reporter: A person who reported the legal issue (e.g. flask.g.user) 61 :param str reason: What is the legal issue? 62 """ 63 self.subject = "Legal flag raised on {0}".format(copr.name) 64 self.text = ("{0}\n" 65 "Navigate to {1}\n" 66 "Contact on owner is: {2} <{3}>\n" 67 "Reported by {4} <{5}>".format( 68 reason, 69 flask.url_for("admin_ns.legal_flag", _external=True), 70 copr.user.username, 71 copr.user.mail, 72 reporter.name, 73 reporter.mail))
74 75
76 -def send_mail(recipient, message, sender=None):
77 """ 78 :param str/list recipient: One recipient email as a string or multiple emails in a list 79 :param Message message: 80 :param str sender: Email of a sender 81 :return: 82 """ 83 msg = MIMEText(message.text) 84 msg["Subject"] = message.subject 85 msg["From"] = sender or "root@{0}".format(platform.node()) 86 msg["To"] = ", ".join(recipient) if type(recipient) == list else recipient 87 s = smtplib.SMTP("localhost") 88 s.sendmail("root@{0}".format(platform.node()), recipient, msg.as_string()) 89 s.quit()
90