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

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 

8 

9 

10class Command(SafeCommand): 

11 help = "Sends email with (optional) attachment" 

12 

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") 

24 

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 "" 

41 

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 ) 

78 

79 self.stdout.write("send_email returned {}".format(res))