django-restit 4.2.59__py3-none-any.whl → 4.2.60__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {django_restit-4.2.59.dist-info → django_restit-4.2.60.dist-info}/METADATA +1 -1
- {django_restit-4.2.59.dist-info → django_restit-4.2.60.dist-info}/RECORD +9 -8
- incident/models/incident.py +28 -0
- incident/rpc.py +1 -1
- incident/templates/email/incident_change.html +0 -6
- incident/templates/email/incident_msg.html +347 -0
- rest/__init__.py +1 -1
- {django_restit-4.2.59.dist-info → django_restit-4.2.60.dist-info}/LICENSE.md +0 -0
- {django_restit-4.2.59.dist-info → django_restit-4.2.60.dist-info}/WHEEL +0 -0
@@ -104,15 +104,16 @@ incident/migrations/0014_event_group_alter_rulecheck_index.py,sha256=v3gm5k0LVoa
|
|
104
104
|
incident/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
105
105
|
incident/models/__init__.py,sha256=NMphuhb0RTMf7Ov4QkNv7iv6_I8Wtr3xQ54yjX_a31M,209
|
106
106
|
incident/models/event.py,sha256=qa6BIlellU7uUQcA2c4Botd2x7JLL8b7IjSfxyi5iHk,7306
|
107
|
-
incident/models/incident.py,sha256=
|
107
|
+
incident/models/incident.py,sha256=IRgu_G_3kuNyKWvwIpJJUCq8PJ1D-2lp4VOtFl54L1o,19472
|
108
108
|
incident/models/ossec.py,sha256=p1ptr-8lnaj1EP_VmPR58b2LmaYBGaYYKAMqhWK5yZM,2227
|
109
109
|
incident/models/rules.py,sha256=uT5GhW6Flso287lJGphAlWwL20NRnHDAZoGrWBBQfeE,6260
|
110
110
|
incident/models/ticket.py,sha256=S3kqGQpYLE6Y4M9IKu_60sgW-f592xNr8uufqHnvDoU,2302
|
111
111
|
incident/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
112
112
|
incident/parsers/ossec.py,sha256=Bc82n0AeXMBxMxzfAR-1puHyxldcikqeu5MeGRk1zMc,7142
|
113
113
|
incident/periodic.py,sha256=eX1rQK6v65A9ugofTvJPSmAWei6C-3EYgzCMuGZ03jM,381
|
114
|
-
incident/rpc.py,sha256=
|
115
|
-
incident/templates/email/incident_change.html,sha256=
|
114
|
+
incident/rpc.py,sha256=jGh1XaxDrTBIUK8Mw0ixqgPo-lqeP-MmUG1ApboAd1I,7933
|
115
|
+
incident/templates/email/incident_change.html,sha256=UjFpZF1v310dWo1Kqu7SSvnEBwLSUgl0XWaCRSW8kkc,13883
|
116
|
+
incident/templates/email/incident_msg.html,sha256=I2W3tXTcAQfFDoK024P77NIhFM-NnWhsJwwXTc7iGNk,13768
|
116
117
|
incident/templates/email/incident_new.html,sha256=IPX3CqIrvdrZSn13_jlR6sEb0If8ftvUrUpkzC5G2Gc,15173
|
117
118
|
incident/templates/email/incident_plain.html,sha256=fx4zsoldG1AQEBA6IYx5BJp_MAMizgjjx9EmuR5m4SQ,14727
|
118
119
|
incident/tq.py,sha256=6KjeTFlWAlG_l8LWMlxUGdr8ULU0uE-DB5ex0ERW440,5226
|
@@ -363,7 +364,7 @@ pushit/utils.py,sha256=IeTCGa-164nmB1jIsK1lu1O1QzUhS3BKfuXHGjCW-ck,2121
|
|
363
364
|
rest/.gitignore,sha256=TbEvWRMnAiajCTOdhiNrd9eeCAaIjRp9PRjE_VkMM5g,118
|
364
365
|
rest/README.md,sha256=V3ETc-cJu8PZIbKr9xSe_pA4JEUpC8Dhw4bQeVCDJPw,5460
|
365
366
|
rest/RemoteEvents.py,sha256=nL46U7AuxIrlw2JunphR1tsXyqi-ep_gD9CYGpYbNgE,72
|
366
|
-
rest/__init__.py,sha256=
|
367
|
+
rest/__init__.py,sha256=xVTT7_J9EmlL-rLoFGbIiVtP0BuY_r0I8O41VkCbu9g,121
|
367
368
|
rest/arc4.py,sha256=y644IbF1ec--e4cUJ3KEYsewTCITK0gmlwa5mJruFC0,1967
|
368
369
|
rest/cache.py,sha256=1Qg0rkaCJCaVP0-l5hZg2CIblTdeBSlj_0fP6vlKUpU,83
|
369
370
|
rest/crypto/__init__.py,sha256=Tl0U11rgj1eBYqd6OXJ2_XSdNLumW_JkBZnaJqI6Ldw,72
|
@@ -496,7 +497,7 @@ ws4redis/servers/uwsgi.py,sha256=VyhoCI1DnVFqBiJYHoxqn5Idlf6uJPHvfBKgkjs34mo,172
|
|
496
497
|
ws4redis/settings.py,sha256=K0yBiLUuY81iDM4Yr-k8hbvjn5VVHu5zQhmMK8Dtz0s,1536
|
497
498
|
ws4redis/utf8validator.py,sha256=S0OlfjeGRP75aO6CzZsF4oTjRQAgR17OWE9rgZdMBZA,5122
|
498
499
|
ws4redis/websocket.py,sha256=R0TUyPsoVRD7Y_oU7w2I6NL4fPwiz5Vl94-fUkZgLHA,14848
|
499
|
-
django_restit-4.2.
|
500
|
-
django_restit-4.2.
|
501
|
-
django_restit-4.2.
|
502
|
-
django_restit-4.2.
|
500
|
+
django_restit-4.2.60.dist-info/LICENSE.md,sha256=VHN4hhEeVOoFjtG-5fVv4jesA4SWi0Z-KgOzzN6a1ps,1068
|
501
|
+
django_restit-4.2.60.dist-info/METADATA,sha256=fQdJgYROlYOW-VuJLMmyHhQd9mdEy5tOI4IjkQSPY2Y,7594
|
502
|
+
django_restit-4.2.60.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
503
|
+
django_restit-4.2.60.dist-info/RECORD,,
|
incident/models/incident.py
CHANGED
@@ -101,6 +101,11 @@ class Incident(models.Model, rm.RestModel, rm.MetaDataModel):
|
|
101
101
|
return self.created < (datetime.now() - timedelta(minutes=self.rule.bundle))
|
102
102
|
return True
|
103
103
|
|
104
|
+
def get_action_perm(self):
|
105
|
+
if self.rule and ":" in self.rule.action:
|
106
|
+
return self.rule.action.split(":")
|
107
|
+
return None, None
|
108
|
+
|
104
109
|
def set_action(self, value):
|
105
110
|
if value == "merge":
|
106
111
|
request = self.getActiveRequest()
|
@@ -368,6 +373,25 @@ class Incident(models.Model, rm.RestModel, rm.MetaDataModel):
|
|
368
373
|
subject=F"Updated Incident #{self.id}",
|
369
374
|
history=h)
|
370
375
|
|
376
|
+
def notifyMessage(self, message, by):
|
377
|
+
action, perm = self.get_action_perm()
|
378
|
+
if perm is None:
|
379
|
+
perm = "notify.incident_alerts"
|
380
|
+
subject = F"New Message for Incident #{self.pk}"
|
381
|
+
context = dict(
|
382
|
+
incident=self,
|
383
|
+
portal_url=settings.INCIDENT_PORTAL_URL,
|
384
|
+
message=message,
|
385
|
+
by=by)
|
386
|
+
template = "email/incident_msg.html"
|
387
|
+
Member.notifyWith(
|
388
|
+
perm,
|
389
|
+
subject,
|
390
|
+
template=template,
|
391
|
+
context=context,
|
392
|
+
email_only=True,
|
393
|
+
from_email=INCIDENT_EMAIL_FROM)
|
394
|
+
|
371
395
|
def notifyWatchers(self, subject, history=None):
|
372
396
|
action = None
|
373
397
|
perm = "notify.incident_alerts"
|
@@ -476,3 +500,7 @@ class IncidentHistory(models.Model, rm.RestModel):
|
|
476
500
|
note = models.TextField(blank=True, null=True, default=None)
|
477
501
|
media = models.ForeignKey("medialib.MediaItem", related_name="+", null=True, default=None, on_delete=models.CASCADE)
|
478
502
|
|
503
|
+
def on_rest_created(self, request):
|
504
|
+
# self.group.sendEvent("chat_message", None, custom=dict(pk=self.pk, by=request.member.id, kind=self.kind))
|
505
|
+
if self.kind in ["note", "message"]:
|
506
|
+
self.parent.notifyMessage(self.note, self.by)
|
incident/rpc.py
CHANGED
@@ -221,7 +221,7 @@ def rest_firewall_block(request):
|
|
221
221
|
metadata = request.DATA.asDict()
|
222
222
|
metadata.username = request.member.username
|
223
223
|
record_block(ip, action, "all", metadata)
|
224
|
-
Task.Publish("incident", f"firewall_{action}", dict(ip=ip), channel="
|
224
|
+
Task.Publish("incident", f"firewall_{action}", dict(ip=ip), channel="tq_firewall")
|
225
225
|
return rv.restStatus(request, True)
|
226
226
|
|
227
227
|
|
@@ -193,12 +193,6 @@
|
|
193
193
|
</div>
|
194
194
|
</td>
|
195
195
|
</tr>
|
196
|
-
<tr>
|
197
|
-
<td>
|
198
|
-
<pre style="font-size: 16px; overflow-x: scroll; word-wrap: normal; max-width: 980px; padding: 8px;">{{incident.first_event.details_by_category}}
|
199
|
-
</pre>
|
200
|
-
</td>
|
201
|
-
</tr>
|
202
196
|
{% if history %}
|
203
197
|
<tr>
|
204
198
|
<td>
|
@@ -0,0 +1,347 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
|
3
|
+
|
4
|
+
<head>
|
5
|
+
<title>INCIDENT EMAIL</title>
|
6
|
+
<!--[if !mso]><!-- -->
|
7
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
8
|
+
<!--<![endif]-->
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
10
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
11
|
+
<style type="text/css">
|
12
|
+
#outlook a {
|
13
|
+
padding: 0;
|
14
|
+
}
|
15
|
+
|
16
|
+
body {
|
17
|
+
margin: 0;
|
18
|
+
padding: 0;
|
19
|
+
-webkit-text-size-adjust: 100%;
|
20
|
+
-ms-text-size-adjust: 100%;
|
21
|
+
}
|
22
|
+
|
23
|
+
table,
|
24
|
+
td {
|
25
|
+
border-collapse: collapse;
|
26
|
+
mso-table-lspace: 0pt;
|
27
|
+
mso-table-rspace: 0pt;
|
28
|
+
}
|
29
|
+
|
30
|
+
img {
|
31
|
+
border: 0;
|
32
|
+
height: auto;
|
33
|
+
line-height: 100%;
|
34
|
+
outline: none;
|
35
|
+
text-decoration: none;
|
36
|
+
-ms-interpolation-mode: bicubic;
|
37
|
+
}
|
38
|
+
|
39
|
+
p {
|
40
|
+
display: block;
|
41
|
+
margin: 13px 0;
|
42
|
+
}
|
43
|
+
</style>
|
44
|
+
<!--[if mso]>
|
45
|
+
<xml>
|
46
|
+
<o:OfficeDocumentSettings>
|
47
|
+
<o:AllowPNG/>
|
48
|
+
<o:PixelsPerInch>96</o:PixelsPerInch>
|
49
|
+
</o:OfficeDocumentSettings>
|
50
|
+
</xml>
|
51
|
+
<![endif]-->
|
52
|
+
<!--[if lte mso 11]>
|
53
|
+
<style type="text/css">
|
54
|
+
.mj-outlook-group-fix { width:100% !important; }
|
55
|
+
</style>
|
56
|
+
<![endif]-->
|
57
|
+
<!--[if !mso]><!-->
|
58
|
+
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,700" rel="stylesheet" type="text/css">
|
59
|
+
<style type="text/css">
|
60
|
+
@import url(https://fonts.googleapis.com/css?family=Roboto:100,300,400,700);
|
61
|
+
</style>
|
62
|
+
<!--<![endif]-->
|
63
|
+
<style type="text/css">
|
64
|
+
@media only screen and (min-width:480px) {
|
65
|
+
.mj-column-per-100 {
|
66
|
+
width: 100% !important;
|
67
|
+
max-width: 100%;
|
68
|
+
}
|
69
|
+
}
|
70
|
+
</style>
|
71
|
+
<style type="text/css">
|
72
|
+
@media only screen and (max-width:480px) {
|
73
|
+
table.mj-full-width-mobile {
|
74
|
+
width: 100% !important;
|
75
|
+
}
|
76
|
+
|
77
|
+
td.mj-full-width-mobile {
|
78
|
+
width: auto !important;
|
79
|
+
}
|
80
|
+
}
|
81
|
+
</style>
|
82
|
+
<style type="text/css">
|
83
|
+
a,
|
84
|
+
span,
|
85
|
+
td,
|
86
|
+
th {
|
87
|
+
-webkit-font-smoothing: antialiased !important;
|
88
|
+
-moz-osx-font-smoothing: grayscale !important;
|
89
|
+
}
|
90
|
+
</style>
|
91
|
+
</head>
|
92
|
+
|
93
|
+
<body style="background-color:white;">
|
94
|
+
|
95
|
+
<div style="display:none;font-size:1px;color:#ffffff;line-height:1px;max-height:0px;max-width:0px;opacity:0;overflow:hidden;"> {{incident.description}} </div>
|
96
|
+
<div style="background-color:white;">
|
97
|
+
<!--[if mso | IE]>
|
98
|
+
<table
|
99
|
+
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
|
100
|
+
>
|
101
|
+
<tr>
|
102
|
+
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
|
103
|
+
<![endif]-->
|
104
|
+
<div style="margin:0px auto;max-width:800px;">
|
105
|
+
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
|
106
|
+
<tbody>
|
107
|
+
<tr>
|
108
|
+
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
|
109
|
+
<!--[if mso | IE]>
|
110
|
+
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
|
111
|
+
|
112
|
+
<tr>
|
113
|
+
|
114
|
+
<td
|
115
|
+
class="" style="vertical-align:top;width:600px;"
|
116
|
+
>
|
117
|
+
<![endif]-->
|
118
|
+
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
|
119
|
+
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
|
120
|
+
<tr>
|
121
|
+
<td style="font-size:0px;word-break:break-word;">
|
122
|
+
<!--[if mso | IE]>
|
123
|
+
|
124
|
+
<table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td height="20" style="vertical-align:top;height:20px;">
|
125
|
+
|
126
|
+
<![endif]-->
|
127
|
+
<div style="height:20px;"> </div>
|
128
|
+
<!--[if mso | IE]>
|
129
|
+
|
130
|
+
</td></tr></table>
|
131
|
+
|
132
|
+
<![endif]-->
|
133
|
+
</td>
|
134
|
+
</tr>
|
135
|
+
</table>
|
136
|
+
</div>
|
137
|
+
<!--[if mso | IE]>
|
138
|
+
</td>
|
139
|
+
|
140
|
+
</tr>
|
141
|
+
|
142
|
+
</table>
|
143
|
+
<![endif]-->
|
144
|
+
</td>
|
145
|
+
</tr>
|
146
|
+
</tbody>
|
147
|
+
</table>
|
148
|
+
</div>
|
149
|
+
<!--[if mso | IE]>
|
150
|
+
</td>
|
151
|
+
</tr>
|
152
|
+
</table>
|
153
|
+
|
154
|
+
<table
|
155
|
+
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
|
156
|
+
>
|
157
|
+
<tr>
|
158
|
+
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
|
159
|
+
<![endif]-->
|
160
|
+
<div style="background:#4f82f6;background-color:#4f82f6;margin:0px auto;border-radius:4px;max-width:800px;">
|
161
|
+
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#4f82f6;background-color:#4f82f6;width:100%;border-radius:4px;border-bottom:1px solid black;">
|
162
|
+
<tbody>
|
163
|
+
<tr>
|
164
|
+
<td style="direction:ltr;font-size:0px;padding:0;text-align:center;">
|
165
|
+
<!--[if mso | IE]>
|
166
|
+
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
|
167
|
+
|
168
|
+
<tr>
|
169
|
+
|
170
|
+
<td
|
171
|
+
class="" style="vertical-align:top;width:600px;"
|
172
|
+
>
|
173
|
+
<![endif]-->
|
174
|
+
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
|
175
|
+
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
|
176
|
+
<tr>
|
177
|
+
<td style="padding:10px;width:64px;">
|
178
|
+
<img src="https://i.imgur.com/bQM8aTE.png" alt="">
|
179
|
+
</td>
|
180
|
+
<td align="left" style="font-size:0px;padding:0;word-break:break-word;">
|
181
|
+
<div style="font-family:Roboto, Helvetica, Arial, sans-serif;font-size:30px;font-weight:300;line-height:30px;text-align:left;color:#FFFFFF;">
|
182
|
+
|
183
|
+
Incident #{{incident.pk}} on {{incident.hostname}}</div>
|
184
|
+
|
185
|
+
</td>
|
186
|
+
</tr>
|
187
|
+
</table>
|
188
|
+
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;background: #FFFFFF;background-color: #FFFFFF;margin: 0;" width="100%">
|
189
|
+
<tr>
|
190
|
+
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;text-align: center;background: #e4e4e4; background-color: #e4e4e4;">
|
191
|
+
<div style="font-family:Roboto, Helvetica, Arial, sans-serif;font-size:20px;font-weight:300;font-style:italic;line-height:30px;text-align:center;color:#000000;">
|
192
|
+
{{incident.description}}
|
193
|
+
</div>
|
194
|
+
</td>
|
195
|
+
</tr>
|
196
|
+
<tr>
|
197
|
+
<td>
|
198
|
+
<pre style="font-size: 16px; overflow-x: scroll; word-wrap: normal; max-width: 980px; padding: 8px;">
|
199
|
+
New Message:
|
200
|
+
|
201
|
+
{{message}}
|
202
|
+
-{{by.display_name}}
|
203
|
+
</pre>
|
204
|
+
</td>
|
205
|
+
</tr>
|
206
|
+
<tr>
|
207
|
+
<td>
|
208
|
+
<div style="font-family:Roboto, Helvetica, Arial, sans-serif;font-size:16;font-weight:300;font-style:italic;line-height:30px;text-align:left;">
|
209
|
+
You can respond to this email with notes or actions. Make sure to leave to blank lines at the end of your email. For actions just include one of these words on its own line: "open", "close", "pause", "ignore".
|
210
|
+
</div>
|
211
|
+
</td>
|
212
|
+
</tr>
|
213
|
+
|
214
|
+
<tr>
|
215
|
+
<td align="center" vertical-align="middle" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
216
|
+
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:separate;line-height:100%;">
|
217
|
+
<tr>
|
218
|
+
<td align="center" bgcolor="#4f82f6" role="presentation" style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:8px 16px;background:#4f82f6;" valign="middle">
|
219
|
+
<a href="{{portal_url}}" style="display: inline-block; background: #4f82f6; color: white; font-family: Roboto, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: bold; line-height: 16px; margin: 0; text-decoration: none; text-transform: none; padding: 12px 20px; mso-padding-alt: 0px; border-radius: 3px;" target="_blank"> VIEW ON PORTAL </a>
|
220
|
+
</td>
|
221
|
+
</tr>
|
222
|
+
</table>
|
223
|
+
</td>
|
224
|
+
</tr>
|
225
|
+
|
226
|
+
|
227
|
+
</table>
|
228
|
+
</div>
|
229
|
+
<!--[if mso | IE]>
|
230
|
+
</td>
|
231
|
+
|
232
|
+
</tr>
|
233
|
+
|
234
|
+
</table>
|
235
|
+
<![endif]-->
|
236
|
+
</td>
|
237
|
+
</tr>
|
238
|
+
</tbody>
|
239
|
+
</table>
|
240
|
+
</div>
|
241
|
+
<!--[if mso | IE]>
|
242
|
+
</td>
|
243
|
+
</tr>
|
244
|
+
</table>
|
245
|
+
|
246
|
+
<table
|
247
|
+
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
|
248
|
+
>
|
249
|
+
<tr>
|
250
|
+
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
|
251
|
+
<![endif]-->
|
252
|
+
<div style="margin:20px auto;max-width:800px;">
|
253
|
+
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
|
254
|
+
<tbody>
|
255
|
+
<tr>
|
256
|
+
<td style="direction:ltr;font-size:0px;padding:0;text-align:center;">
|
257
|
+
<!--[if mso | IE]>
|
258
|
+
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
|
259
|
+
|
260
|
+
<tr>
|
261
|
+
|
262
|
+
<td
|
263
|
+
class="" style="vertical-align:top;width:600px;"
|
264
|
+
>
|
265
|
+
<![endif]-->
|
266
|
+
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
|
267
|
+
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
|
268
|
+
<tr>
|
269
|
+
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
270
|
+
<div style="text-align: center;">
|
271
|
+
<img src="{{SITE_LOGO}}" height=40>
|
272
|
+
</div>
|
273
|
+
<div style="font-family:Roboto, Helvetica, Arial, sans-serif;font-size:14px;font-weight:300;line-height:20px;text-align:center;color:#000000;">
|
274
|
+
<!-- <a href="#" style="color:#fafafa">Privacy Policy</a> | <a href="#" style="color:#fafafa">Contact Support</a> | <a href="#" style="color:#fafafa">Unsubscribe</a><br /> --> Powered by {{SITE_LABEL}}<br> © 2023 {{settings.COMPANY_LABEL}}
|
275
|
+
</div>
|
276
|
+
</td>
|
277
|
+
</tr>
|
278
|
+
<tr>
|
279
|
+
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
280
|
+
<div style="font-family:Roboto, Helvetica, Arial, sans-serif;font-size:14px;font-weight:300;line-height:20px;text-align:center;color:#000000;">
|
281
|
+
Don't like these emails? <a style="color: #c0c1ff;font-weight: bold;text-decoration: none;" href="{{BASE_URL}}member/unsubscribe/">Unsubscribe</a>.
|
282
|
+
</div>
|
283
|
+
</td>
|
284
|
+
</tr>
|
285
|
+
<tr>
|
286
|
+
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
287
|
+
|
288
|
+
<table
|
289
|
+
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
|
290
|
+
>
|
291
|
+
<tr>
|
292
|
+
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
|
293
|
+
<![endif]-->
|
294
|
+
<div style="margin:0px auto;max-width:800px;">
|
295
|
+
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
|
296
|
+
<tbody>
|
297
|
+
<tr>
|
298
|
+
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
|
299
|
+
<!--[if mso | IE]>
|
300
|
+
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
|
301
|
+
|
302
|
+
<tr>
|
303
|
+
|
304
|
+
<td
|
305
|
+
class="" style="vertical-align:top;width:600px;"
|
306
|
+
>
|
307
|
+
<![endif]-->
|
308
|
+
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
|
309
|
+
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
|
310
|
+
<tr>
|
311
|
+
<td style="font-size:0px;word-break:break-word;">
|
312
|
+
<!--[if mso | IE]>
|
313
|
+
|
314
|
+
<table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td height="1" style="vertical-align:top;height:1px;">
|
315
|
+
|
316
|
+
<![endif]-->
|
317
|
+
<div style="height:1px;"> </div>
|
318
|
+
<!--[if mso | IE]>
|
319
|
+
|
320
|
+
</td></tr></table>
|
321
|
+
|
322
|
+
<![endif]-->
|
323
|
+
</td>
|
324
|
+
</tr>
|
325
|
+
</table>
|
326
|
+
</div>
|
327
|
+
<!--[if mso | IE]>
|
328
|
+
</td>
|
329
|
+
|
330
|
+
</tr>
|
331
|
+
|
332
|
+
</table>
|
333
|
+
<![endif]-->
|
334
|
+
</td>
|
335
|
+
</tr>
|
336
|
+
</tbody>
|
337
|
+
</table>
|
338
|
+
</div>
|
339
|
+
<!--[if mso | IE]>
|
340
|
+
</td>
|
341
|
+
</tr>
|
342
|
+
</table>
|
343
|
+
<![endif]-->
|
344
|
+
</div>
|
345
|
+
</body>
|
346
|
+
|
347
|
+
</html>
|
rest/__init__.py
CHANGED
File without changes
|
File without changes
|