Coverage for jutil/management/commands/send_email.py: 20%
42 statements
« prev ^ index » next coverage.py v6.5.0, created at 2022-10-07 16:40 -0500
« prev ^ index » next coverage.py v6.5.0, created at 2022-10-07 16:40 -0500
1import os
2from django.conf import settings
3from django.core.management.base import CommandParser
4from django.utils.html import strip_tags
5from django.utils.timezone import now
6from jutil.command import SafeCommand
7from jutil.email import send_email, send_email_smtp, send_email_sendgrid
10class Command(SafeCommand):
11 help = "Sends email with (optional) attachment"
13 def add_arguments(self, parser: CommandParser):
14 parser.add_argument("to", type=str)
15 parser.add_argument("--cc", type=str)
16 parser.add_argument("--bcc", type=str)
17 parser.add_argument("--sender", type=str)
18 parser.add_argument("--subject", type=str)
19 parser.add_argument("--body", type=str)
20 parser.add_argument("--body-file", type=str)
21 parser.add_argument("--attach", type=str, nargs="*")
22 parser.add_argument("--smtp", action="store_true")
23 parser.add_argument("--sendgrid", action="store_true")
25 def do(self, *args, **kw): # pylint: disable=too-many-branches
26 files = kw["attach"] if kw["attach"] else []
27 if not files:
28 full_path = os.path.join(settings.BASE_DIR, "data/attachment.jpg")
29 if os.path.isfile(full_path):
30 files.append(full_path)
31 subject = "hello " + now().isoformat()
32 html = '<h1>html text</h1><p><a href="https://kajala.com/">Kajala Group Ltd.</a></p>'
33 if kw["body"]:
34 html = kw["body"]
35 if kw["body_file"]:
36 html = open(kw["body_file"], "rt", encoding="utf-8").read() # pylint: disable=consider-using-with
37 if kw["subject"]:
38 subject = kw["subject"]
39 text = strip_tags(html)
40 sender = kw["sender"] if kw["sender"] else ""
42 if kw["smtp"]:
43 res = send_email_smtp(
44 kw["to"],
45 subject,
46 text,
47 html,
48 sender,
49 files,
50 bcc_recipients=kw["bcc"],
51 cc_recipients=kw["cc"],
52 exceptions=True,
53 )
54 elif kw["sendgrid"]:
55 res = send_email_sendgrid(
56 kw["to"],
57 subject,
58 text,
59 html,
60 sender,
61 files,
62 bcc_recipients=kw["bcc"],
63 cc_recipients=kw["cc"],
64 exceptions=True,
65 )
66 else:
67 res = send_email(
68 kw["to"],
69 subject,
70 text,
71 html,
72 sender,
73 files,
74 bcc_recipients=kw["bcc"],
75 cc_recipients=kw["cc"],
76 exceptions=True,
77 )
79 self.stdout.write("send_email returned {}".format(res))