Coverage for /home/runner/work/viur-core/viur-core/viur/src/viur/core/modules/email.py: 0%

36 statements  

« prev     ^ index     » next       coverage.py v7.16.1, created at 2026-09-25 15:02 +0000

1from viur.core.prototypes.list import List 

2from viur.core.bones import * 

3from viur.core.skeleton import Skeleton 

4 

5KINDNAME = "viur-emails" # FIXME: VIUR4: Rename into "viur-email" 

6 

7 

8class EmailSkel(Skeleton): 

9 kindName = KINDNAME 

10 

11 creationdate = None # FIXME: VIUR4: See "creationDate" below! 

12 changedate = None 

13 name = None 

14 

15 sendDate = DateBone() # FIXME: VIUR4: Rename to senddate 

16 creationDate = DateBone() # FIXME: VIUR4: This should become the ordinary creationdate! 

17 

18 sender = EmailBone() 

19 

20 subject = StringBone( 

21 escape_html=False, 

22 ) 

23 

24 body = RawBone( 

25 indexed=False, 

26 ) 

27 

28 dests = EmailBone( 

29 multiple=True, 

30 ) 

31 

32 cc = EmailBone( 

33 multiple=True, 

34 ) 

35 

36 bcc = EmailBone( 

37 multiple=True, 

38 ) 

39 

40 isSend = BooleanBone() # FIXME: VIUR4: Rename into is_send 

41 errorCount = NumericBone() # FIXME: VIUR4: Rename into error_count 

42 transportFuncResult = JsonBone() # FIXME: VIUR4: Rename into transport_func_result 

43 

44 

45class Email(List): 

46 kindName = KINDNAME 

47 

48 default_order = { 

49 "orderby": "creationDate", 

50 "orderdir": "desc", 

51 } 

52 

53 def adminInfo(self): 

54 return { 

55 "name": "E-Mail", 

56 "icon": "envelope-at", 

57 "disabledActions": ["add"], 

58 "views": [ 

59 { 

60 "name": "Sent", 

61 "icon": "envelope-check", 

62 "filter": { 

63 "isSend": True, 

64 } | (self.default_order or {}), 

65 }, 

66 { 

67 "name": "Unsent", 

68 "icon": "envelope-x", 

69 "filter": { 

70 "isSend": False, 

71 } | (self.default_order or {}), 

72 }, 

73 { 

74 "name": "Defective", 

75 "icon": "envelope-exclamation", 

76 "filter": { 

77 "isSend": False, 

78 "errorCount$gt": 0, 

79 } | (self.default_order or {}), 

80 }, 

81 ] 

82 } 

83 

84 roles = { 

85 "admin": "*", 

86 } 

87 

88 def canAdd(self): 

89 return False 

90 

91 def editSkel(self): 

92 return super().editSkel().ensure_is_cloned() # might be modified by canEdit! 

93 

94 def canEdit(self, skel): 

95 if super().canEdit(skel): 

96 if skel["isSend"]: 

97 skel.readonly() 

98 

99 return True 

100 

101 return False