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
« 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
5KINDNAME = "viur-emails" # FIXME: VIUR4: Rename into "viur-email"
8class EmailSkel(Skeleton):
9 kindName = KINDNAME
11 creationdate = None # FIXME: VIUR4: See "creationDate" below!
12 changedate = None
13 name = None
15 sendDate = DateBone() # FIXME: VIUR4: Rename to senddate
16 creationDate = DateBone() # FIXME: VIUR4: This should become the ordinary creationdate!
18 sender = EmailBone()
20 subject = StringBone(
21 escape_html=False,
22 )
24 body = RawBone(
25 indexed=False,
26 )
28 dests = EmailBone(
29 multiple=True,
30 )
32 cc = EmailBone(
33 multiple=True,
34 )
36 bcc = EmailBone(
37 multiple=True,
38 )
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
45class Email(List):
46 kindName = KINDNAME
48 default_order = {
49 "orderby": "creationDate",
50 "orderdir": "desc",
51 }
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 }
84 roles = {
85 "admin": "*",
86 }
88 def canAdd(self):
89 return False
91 def editSkel(self):
92 return super().editSkel().ensure_is_cloned() # might be modified by canEdit!
94 def canEdit(self, skel):
95 if super().canEdit(skel):
96 if skel["isSend"]:
97 skel.readonly()
99 return True
101 return False