django-restit 4.2.58__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.58.dist-info → django_restit-4.2.60.dist-info}/METADATA +1 -1
- {django_restit-4.2.58.dist-info → django_restit-4.2.60.dist-info}/RECORD +10 -9
- 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
- location/models/address.py +2 -0
- rest/__init__.py +1 -1
- {django_restit-4.2.58.dist-info → django_restit-4.2.60.dist-info}/LICENSE.md +0 -0
- {django_restit-4.2.58.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
|
@@ -125,7 +126,7 @@ location/migrations/0003_address_postalcode_suffix.py,sha256=DT8voJeMiSQyUhH-69N
|
|
125
126
|
location/migrations/0004_remove_address_modified_by_address_group_and_more.py,sha256=Xq0q8oVoElVYbPC779empO4GIQKuRWOyBCUmWg9Wzo4,1270
|
126
127
|
location/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
127
128
|
location/models/__init__.py,sha256=rZhldkoKmoJQXjBAK1IIQn7K_OOJvFtIGOGVl_szqbE,230
|
128
|
-
location/models/address.py,sha256=
|
129
|
+
location/models/address.py,sha256=moUbICzerO1FSJ_tc__2S7Wtc15Ccyp3qI1Xl0QdY-4,3149
|
129
130
|
location/models/ip.py,sha256=ZaBFdW1tL1Q3bnS5gIY9SseiQ5xeeP_oyP1hp3czFeA,5984
|
130
131
|
location/models/legacy.py,sha256=8ROsUSZrjGQkUyXeJvoxPdKAWaKfUH-AL9TIeJb7krg,1994
|
131
132
|
location/models/location.py,sha256=01dJPJecbp5orExsIGWOsBC_KkwFRIW0rGDIwyx1r0w,2316
|
@@ -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>
|
location/models/address.py
CHANGED
rest/__init__.py
CHANGED
File without changes
|
File without changes
|