django-restit 4.2.73__py3-none-any.whl → 4.2.74__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.
- account/models/member.py +25 -6
- account/models/notify.py +81 -3
- account/rpc/auth.py +1 -1
- account/rpc/member.py +13 -1
- account/templates/email/base.html +1 -1
- account/templates/email/invite.html +0 -5
- account/templates/email/plain/invite.html +0 -7
- account/templates/email/plain/reset_code.html +0 -7
- account/templates/email/reset_code.html +0 -5
- account/templates/email/simple/invite.html +0 -7
- account/templates/email/simple/reset_code.html +0 -7
- account/templates/unsubscribed.html +68 -0
- {django_restit-4.2.73.dist-info → django_restit-4.2.74.dist-info}/METADATA +1 -1
- {django_restit-4.2.73.dist-info → django_restit-4.2.74.dist-info}/RECORD +25 -24
- inbox/utils/render.py +1 -0
- incident/models/incident.py +1 -1
- incident/templates/email/incident_change.html +1 -1
- incident/templates/email/incident_msg.html +1 -1
- incident/templates/email/incident_new.html +1 -1
- incident/templates/email/incident_plain.html +1 -1
- metrics/rpc.py +8 -2
- rest/helpers.py +3 -1
- rest/serializers/response.py +8 -0
- {django_restit-4.2.73.dist-info → django_restit-4.2.74.dist-info}/LICENSE.md +0 -0
- {django_restit-4.2.73.dist-info → django_restit-4.2.74.dist-info}/WHEEL +0 -0
account/models/member.py
CHANGED
@@ -224,7 +224,11 @@ class Member(User, RestModel, MetaDataModel):
|
|
224
224
|
|
225
225
|
@property
|
226
226
|
def force_single_session(self):
|
227
|
-
return self.
|
227
|
+
return self.hasPermission("force_single_session")
|
228
|
+
|
229
|
+
@property
|
230
|
+
def email_disabled(self):
|
231
|
+
return self.hasPermission("email_disabled")
|
228
232
|
|
229
233
|
@property
|
230
234
|
def has_totp(self):
|
@@ -622,7 +626,11 @@ class Member(User, RestModel, MetaDataModel):
|
|
622
626
|
email = self.email
|
623
627
|
valid_email = email is not None and "@" in email and "invalid" not in email
|
624
628
|
allow_sms = not email_only and phone and (force or via in ["all", "sms"])
|
625
|
-
|
629
|
+
if not force:
|
630
|
+
allow_email = not self.email_disabled and valid_email and (force or via in ["all", "email"])
|
631
|
+
else:
|
632
|
+
allow_email = valid_email
|
633
|
+
|
626
634
|
if not allow_email and not allow_sms:
|
627
635
|
return False
|
628
636
|
|
@@ -1049,7 +1057,7 @@ class Member(User, RestModel, MetaDataModel):
|
|
1049
1057
|
return Member.objects.filter(phone_number=phone_number.lower()).last()
|
1050
1058
|
|
1051
1059
|
@staticmethod
|
1052
|
-
def GetWithPermission(perm, email_list=False):
|
1060
|
+
def GetWithPermission(perm, email_list=False, ignore_disabled_email=True):
|
1053
1061
|
if type(perm) is list:
|
1054
1062
|
queries = [Q(properties__category="permissions", properties__key=p, properties__value="1") for p in perm]
|
1055
1063
|
query = queries.pop()
|
@@ -1059,12 +1067,17 @@ class Member(User, RestModel, MetaDataModel):
|
|
1059
1067
|
else:
|
1060
1068
|
qset = Member.objects.filter(is_active=True).filter(properties__category="permissions", properties__key=perm, properties__value="1")
|
1061
1069
|
|
1070
|
+
if not ignore_disabled_email:
|
1071
|
+
qset = qset.exclude(
|
1072
|
+
properties__category="permissions",
|
1073
|
+
properties__key="email_disabled",
|
1074
|
+
properties__int_value=1)
|
1062
1075
|
if email_list:
|
1063
1076
|
return list(qset.exclude(email__icontains="invalid").values_list('email', flat=True))
|
1064
1077
|
return qset
|
1065
1078
|
|
1066
1079
|
@staticmethod
|
1067
|
-
def GetWithNotification(perm, email_list=False, exclude_member=None):
|
1080
|
+
def GetWithNotification(perm, email_list=False, exclude_member=None, ignore_disabled_email=True):
|
1068
1081
|
qset = Member.objects.filter(is_active=True)
|
1069
1082
|
if exclude_member:
|
1070
1083
|
qset = qset.exclude(pk=exclude_member.pk)
|
@@ -1087,6 +1100,11 @@ class Member(User, RestModel, MetaDataModel):
|
|
1087
1100
|
properties__key=perm,
|
1088
1101
|
properties__int_value=1)
|
1089
1102
|
|
1103
|
+
if not ignore_disabled_email:
|
1104
|
+
qset = qset.exclude(
|
1105
|
+
properties__category="permissions",
|
1106
|
+
properties__key="email_disabled",
|
1107
|
+
properties__int_value=1)
|
1090
1108
|
if email_list:
|
1091
1109
|
return list(qset.exclude(email__icontains="invalid").values_list('email', flat=True))
|
1092
1110
|
return qset
|
@@ -1133,7 +1151,7 @@ class Member(User, RestModel, MetaDataModel):
|
|
1133
1151
|
email_only=False, sms_msg=None, force=False, from_email=None):
|
1134
1152
|
NotificationRecord = RestModel.getModel("account", "NotificationRecord")
|
1135
1153
|
NotificationRecord.notify(
|
1136
|
-
Member.GetWithPermission(perm), subject, message,
|
1154
|
+
Member.GetWithPermission(perm, ignore_disabled_email=True), subject, message,
|
1137
1155
|
template, context, email_only, sms_msg, force,
|
1138
1156
|
from_email=from_email)
|
1139
1157
|
|
@@ -1143,7 +1161,8 @@ class Member(User, RestModel, MetaDataModel):
|
|
1143
1161
|
exclude_member=None):
|
1144
1162
|
NotificationRecord = RestModel.getModel("account", "NotificationRecord")
|
1145
1163
|
NotificationRecord.notify(
|
1146
|
-
Member.GetWithNotification(setting, exclude_member=exclude_member
|
1164
|
+
Member.GetWithNotification(setting, exclude_member=exclude_member, ignore_disabled_email=True),
|
1165
|
+
subject, message,
|
1147
1166
|
template, context, email_only, sms_msg, force,
|
1148
1167
|
from_email=from_email)
|
1149
1168
|
|
account/models/notify.py
CHANGED
@@ -151,12 +151,90 @@ class NotificationRecord(models.Model, RestModel):
|
|
151
151
|
members = Member.objects.filter(email__in=emails)
|
152
152
|
cls.notify(members, subject, message, template, context, email_only, sms_msg, force, from_email, attachments)
|
153
153
|
|
154
|
+
|
154
155
|
@classmethod
|
155
156
|
def notify(cls, notify_users, subject, message=None,
|
156
157
|
template=None, context=None, email_only=False,
|
157
158
|
sms_msg=None, force=False,
|
158
159
|
from_email=settings.DEFAULT_FROM_EMAIL,
|
159
160
|
attachments=[]):
|
161
|
+
dup_list = []
|
162
|
+
email_to = []
|
163
|
+
sms_to = []
|
164
|
+
for member in notify_users:
|
165
|
+
via = member.getProperty("notify_via", "all")
|
166
|
+
phone = member.getProperty("phone")
|
167
|
+
email = member.email
|
168
|
+
valid_email = email is not None and "@" in email and "invalid" not in email
|
169
|
+
allow_sms = not email_only and phone and (force or via in ["all", "sms"])
|
170
|
+
allow_email = not member.email_disabled and valid_email and (force or via in ["all", "email"])
|
171
|
+
if not allow_email and not allow_sms:
|
172
|
+
continue
|
173
|
+
if allow_email and email not in dup_list:
|
174
|
+
dup_list.append(email)
|
175
|
+
email_to.append(member)
|
176
|
+
if not email_only and allow_sms and phone not in dup_list:
|
177
|
+
dup_list.append(phone)
|
178
|
+
sms_to.append(phone)
|
179
|
+
|
180
|
+
if len(dup_list) == 0:
|
181
|
+
return
|
182
|
+
|
183
|
+
if not message and not template and subject:
|
184
|
+
message = subject
|
185
|
+
if not sms_msg and subject:
|
186
|
+
sms_msg = subject
|
187
|
+
if not sms_msg and message:
|
188
|
+
sms_msg = message
|
189
|
+
|
190
|
+
if subject and len(subject) > 80:
|
191
|
+
epos = subject.find('. ') + 1
|
192
|
+
if epos > 10:
|
193
|
+
subject = subject[:epos]
|
194
|
+
if len(subject) > 80:
|
195
|
+
subject = subject[:80]
|
196
|
+
subject = subject[:subject.rfind(' ')] + "..."
|
197
|
+
|
198
|
+
if sms_to:
|
199
|
+
for phone in sms_to:
|
200
|
+
SMS.send(phone, sms_msg)
|
201
|
+
|
202
|
+
if not email_to:
|
203
|
+
return
|
204
|
+
for member in email_to:
|
205
|
+
cls._notifyViaEmail(member, subject, message, template, context, attachments, from_email)
|
206
|
+
|
207
|
+
@classmethod
|
208
|
+
def _notifyViaEmail(cls, member, subject, message, template, context,
|
209
|
+
attachments, from_email=None):
|
210
|
+
# lets verify the db is working
|
211
|
+
if template:
|
212
|
+
if context is None:
|
213
|
+
context = {}
|
214
|
+
if message is not None:
|
215
|
+
context["body"] = message
|
216
|
+
context["unsubscribe_token"] = member.getUUID()
|
217
|
+
message = inbox.utils.renderTemplate(template, context)
|
218
|
+
|
219
|
+
nr = NotificationMemberRecord(member=member, to_addr=member.email)
|
220
|
+
email_record = NotificationRecord(
|
221
|
+
method="email",
|
222
|
+
subject=subject,
|
223
|
+
from_addr=from_email,
|
224
|
+
body=message)
|
225
|
+
try:
|
226
|
+
email_record.save()
|
227
|
+
email_record.addAttachments(attachments)
|
228
|
+
email_record.send([nr])
|
229
|
+
except Exception as err:
|
230
|
+
rh.log_exception("email send failed", email_to)
|
231
|
+
|
232
|
+
@classmethod
|
233
|
+
def notifyLegacy(cls, notify_users, subject, message=None,
|
234
|
+
template=None, context=None, email_only=False,
|
235
|
+
sms_msg=None, force=False,
|
236
|
+
from_email=settings.DEFAULT_FROM_EMAIL,
|
237
|
+
attachments=[]):
|
160
238
|
# this will create a record for each email address message is sent to
|
161
239
|
from telephony.models import SMS
|
162
240
|
email_to = []
|
@@ -165,7 +243,6 @@ class NotificationRecord(models.Model, RestModel):
|
|
165
243
|
|
166
244
|
if not message and not template and subject:
|
167
245
|
message = subject
|
168
|
-
|
169
246
|
if not sms_msg and subject:
|
170
247
|
sms_msg = subject
|
171
248
|
if not sms_msg and message:
|
@@ -197,7 +274,7 @@ class NotificationRecord(models.Model, RestModel):
|
|
197
274
|
email = member.email
|
198
275
|
valid_email = email is not None and "@" in email and "invalid" not in email
|
199
276
|
allow_sms = not email_only and phone and (force or via in ["all", "sms"])
|
200
|
-
allow_email = valid_email and (force or via in ["all", "email"])
|
277
|
+
allow_email = not member.email_disabled and valid_email and (force or via in ["all", "email"])
|
201
278
|
if not allow_email and not allow_sms:
|
202
279
|
continue
|
203
280
|
if allow_email and email not in email_list:
|
@@ -226,7 +303,7 @@ class NotificationRecord(models.Model, RestModel):
|
|
226
303
|
email_record.addAttachments(attachments)
|
227
304
|
email_record.send(email_to)
|
228
305
|
except Exception as err:
|
229
|
-
|
306
|
+
rh.log_exception("email send failed", email_to)
|
230
307
|
# we need to send emails the old way
|
231
308
|
addrs = []
|
232
309
|
for to in email_to:
|
@@ -302,6 +379,7 @@ class BounceHistory(models.Model, RestModel):
|
|
302
379
|
if bounce_count > 2:
|
303
380
|
# TODO notify support an account has been disabled because of bounce
|
304
381
|
user.setProperty("notify_via", "off")
|
382
|
+
user.addPermission("email_disabled")
|
305
383
|
user.log("disabled", "notifications disabled because email bounced", method="notify")
|
306
384
|
else:
|
307
385
|
# TODO notify support of unknown bounce
|
account/rpc/auth.py
CHANGED
@@ -58,7 +58,7 @@ def jwt_login(request):
|
|
58
58
|
|
59
59
|
|
60
60
|
def on_complete_jwt(request, member):
|
61
|
-
if member.security_token is None or member.security_token == JWT_KEY:
|
61
|
+
if member.security_token is None or member.security_token == JWT_KEY or member.force_single_session:
|
62
62
|
member.refreshSecurityToken()
|
63
63
|
|
64
64
|
member.log(
|
account/rpc/member.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
from rest import decorators as rd
|
2
|
-
from rest.views import restPermissionDenied, restStatus
|
2
|
+
from rest.views import restPermissionDenied, restStatus, restHTML
|
3
|
+
from rest import helpers as rh
|
3
4
|
from account import models as am
|
4
5
|
|
5
6
|
|
@@ -39,3 +40,14 @@ def rest_on_authtoken(request, pk=None):
|
|
39
40
|
def rest_on_session(request, pk=None):
|
40
41
|
return am.AuthSession.on_rest_request(request, pk)
|
41
42
|
|
43
|
+
|
44
|
+
@rd.urlGET('unsubscribe')
|
45
|
+
@rd.requires_params(["t"])
|
46
|
+
def rest_on_member(request):
|
47
|
+
t = request.DATA.get("t")
|
48
|
+
m = am.Member.objects.filter(uuid=t).last()
|
49
|
+
if m is not None:
|
50
|
+
m.addPermission("email_disabled")
|
51
|
+
m.reportIncident("email", f"{m.email} has unsubscribed to all email")
|
52
|
+
context = rh.getContext(request, member=m)
|
53
|
+
return restHTML(request, template="unsubscribed.html", context=context)
|
@@ -281,7 +281,7 @@
|
|
281
281
|
<a href="{{settings.BASE_URL}}">{{settings.SITE_LABEL}}</a>
|
282
282
|
</div>
|
283
283
|
{% endblock %}
|
284
|
-
<p style="text-align: center; font-size: 10px;">Don't want to get notifications? <a href="{{
|
284
|
+
<p style="text-align: center; font-size: 10px;">Don't want to get notifications? <a href="{{UNSUBSCRIBE_URL}}?t={{unsubscribe_token}}">Unsubscribe</a>
|
285
285
|
</p>
|
286
286
|
<div>
|
287
287
|
|
@@ -387,11 +387,6 @@
|
|
387
387
|
<!-- START FOOTER -->
|
388
388
|
<div class="footer">
|
389
389
|
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
|
390
|
-
<tr>
|
391
|
-
<td class="content-block">
|
392
|
-
<br> Don't like these emails? <a href="{{BASE_URL}}member/unsubscribe/">Unsubscribe</a>.
|
393
|
-
</td>
|
394
|
-
</tr>
|
395
390
|
<tr>
|
396
391
|
<td class="content-block powered-by">
|
397
392
|
<div>Powered by {{SITE_LABEL}}</div>
|
@@ -295,13 +295,6 @@
|
|
295
295
|
{% endif %}
|
296
296
|
<tr>
|
297
297
|
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
298
|
-
<div style="font-family:Roboto, Helvetica, Arial, sans-serif;font-size:14px;font-weight:300;line-height:20px;text-align:center;color:#000000;">
|
299
|
-
Don't like these emails? <a style="color: #c0c1ff;font-weight: bold;text-decoration: none;" href="{{BASE_URL}}member/unsubscribe/">Unsubscribe</a>.
|
300
|
-
</div>
|
301
|
-
</td>
|
302
|
-
</tr>
|
303
|
-
<tr>
|
304
|
-
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
305
298
|
|
306
299
|
<table
|
307
300
|
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
|
@@ -284,13 +284,6 @@
|
|
284
284
|
</tr>
|
285
285
|
<tr>
|
286
286
|
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
287
|
-
<div style="font-family:Roboto, Helvetica, Arial, sans-serif;font-size:14px;font-weight:300;line-height:20px;text-align:center;color:#000000;">
|
288
|
-
Don't like these emails? <a style="color: #c0c1ff;font-weight: bold;text-decoration: none;" href="{{BASE_URL}}member/unsubscribe/">Unsubscribe</a>.
|
289
|
-
</div>
|
290
|
-
</td>
|
291
|
-
</tr>
|
292
|
-
<tr>
|
293
|
-
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
294
287
|
|
295
288
|
<table
|
296
289
|
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
|
@@ -377,11 +377,6 @@
|
|
377
377
|
<!-- START FOOTER -->
|
378
378
|
<div class="footer">
|
379
379
|
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
|
380
|
-
<tr>
|
381
|
-
<td class="content-block">
|
382
|
-
<br> Don't like these emails? <a href="{{BASE_URL}}member/unsubscribe/">Unsubscribe</a>.
|
383
|
-
</td>
|
384
|
-
</tr>
|
385
380
|
<tr>
|
386
381
|
<td class="content-block powered-by">
|
387
382
|
<div>Powered by {{SITE_LABEL}}</div>
|
@@ -293,13 +293,6 @@
|
|
293
293
|
</tr>
|
294
294
|
<tr>
|
295
295
|
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
296
|
-
<div style="font-family:Roboto, Helvetica, Arial, sans-serif;font-size:14px;font-weight:300;line-height:20px;text-align:center;color:#fafafa;">
|
297
|
-
Don't like these emails? <a style="color: #c0c1ff;font-weight: bold;text-decoration: none;" href="{{BASE_URL}}member/unsubscribe/">Unsubscribe</a>.
|
298
|
-
</div>
|
299
|
-
</td>
|
300
|
-
</tr>
|
301
|
-
<tr>
|
302
|
-
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
303
296
|
|
304
297
|
<table
|
305
298
|
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
|
@@ -284,13 +284,6 @@
|
|
284
284
|
</tr>
|
285
285
|
<tr>
|
286
286
|
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
287
|
-
<div style="font-family:Roboto, Helvetica, Arial, sans-serif;font-size:14px;font-weight:300;line-height:20px;text-align:center;color:#fafafa;">
|
288
|
-
Don't like these emails? <a style="color: #c0c1ff;font-weight: bold;text-decoration: none;" href="{{BASE_URL}}member/unsubscribe/">Unsubscribe</a>.
|
289
|
-
</div>
|
290
|
-
</td>
|
291
|
-
</tr>
|
292
|
-
<tr>
|
293
|
-
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
294
287
|
|
295
288
|
<table
|
296
289
|
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
|
@@ -0,0 +1,68 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>Unsubscription Successful</title>
|
7
|
+
<style>
|
8
|
+
body {
|
9
|
+
font-family: 'Arial', sans-serif;
|
10
|
+
background-color: #EDFEFD;
|
11
|
+
margin: 0;
|
12
|
+
padding: 0;
|
13
|
+
display: flex;
|
14
|
+
justify-content: center;
|
15
|
+
align-items: center;
|
16
|
+
height: 100vh;
|
17
|
+
color: #333;
|
18
|
+
}
|
19
|
+
.container {
|
20
|
+
/* background-color: white;*/
|
21
|
+
padding: 40px 60px;
|
22
|
+
/* border-radius: 10px;*/
|
23
|
+
/* box-shadow: 0 4px 8px rgba(0,0,0,0.1);*/
|
24
|
+
text-align: center;
|
25
|
+
max-width: 500px;
|
26
|
+
}
|
27
|
+
.footer {
|
28
|
+
padding: 40px 60px;
|
29
|
+
text-align: center;
|
30
|
+
}
|
31
|
+
h1 {
|
32
|
+
color: #4CAF50;
|
33
|
+
margin: 0;
|
34
|
+
}
|
35
|
+
h3 {
|
36
|
+
color: #4CAF50;
|
37
|
+
margin-top: 5px;
|
38
|
+
}
|
39
|
+
p {
|
40
|
+
margin-top: 20px;
|
41
|
+
font-size: 16px;
|
42
|
+
}
|
43
|
+
</style>
|
44
|
+
</head>
|
45
|
+
<body>
|
46
|
+
<div>
|
47
|
+
<div class="container">
|
48
|
+
<svg width="200" height="211" viewBox="0 0 200 211" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
49
|
+
<image id="Layer" x="11" y="0" width="179" height="211" xlink:href="data:image/png;base64, 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"/>
|
50
|
+
</svg>
|
51
|
+
{% if member %}
|
52
|
+
<h1>{{member.display_name}}</h1>
|
53
|
+
<h3>You Have Unsubscribed Successfully</h3>
|
54
|
+
{% else %}
|
55
|
+
<h1>Unsubscribed Successfully</h1>
|
56
|
+
{% endif %}
|
57
|
+
|
58
|
+
<p>You have been successfully unsubscribed from all notification. You will no longer receive any further communications from us. If this was a mistake, you can resubscribe at any time.</p>
|
59
|
+
</div>
|
60
|
+
<div class="footer">
|
61
|
+
<div style="font-family:Roboto, Helvetica, Arial, sans-serif;font-size:14px;font-weight:300;line-height:20px;text-align:center">
|
62
|
+
<div>Powered by {{SITE_LABEL}}</div>
|
63
|
+
<div>© 2023 {{COMPANY_LABEL}}</div>
|
64
|
+
</div>
|
65
|
+
</div>
|
66
|
+
</div>
|
67
|
+
</body>
|
68
|
+
</html>
|
@@ -28,9 +28,9 @@ account/models/device.py,sha256=TloXvvrx3khF3BeGFuVYn6DhXjOW0AMZb4F9Fl5nBII,5491
|
|
28
28
|
account/models/feeds.py,sha256=vI7fG4ASY1M0Zjke24RdnfDcuWeATl_yR_25jPmT64g,2011
|
29
29
|
account/models/group.py,sha256=iDD_oSgswKV_t_gXZuVK80MvICrZZqdANm2jtGtOFy8,21985
|
30
30
|
account/models/legacy.py,sha256=zYdtv4LC0ooxPVqWM-uToPwV-lYWQLorSE6p6yn1xDw,2720
|
31
|
-
account/models/member.py,sha256=
|
31
|
+
account/models/member.py,sha256=_T2A1XoyJuGEiKnhFmqHihz5iEU7U_j0tpocr4-SBOo,51781
|
32
32
|
account/models/membership.py,sha256=90EpAhOsGaqphDAkONP6j_qQ0OWSRaQsI8H7E7fgMkE,9249
|
33
|
-
account/models/notify.py,sha256=
|
33
|
+
account/models/notify.py,sha256=Qzi8gLsVi8nDx8gpL4dyr0MPExYYGIDxZvHFUdCs7H4,15072
|
34
34
|
account/models/passkeys.py,sha256=TJxITUi4DT4_1tW2K7ZlOcRjJuMVl2NtKz7pKQU8-Tw,1516
|
35
35
|
account/models/session.py,sha256=ELkWjB_2KXQvPtRPrvuGJpJsqrxCQX_4J53SbqGz_2U,3737
|
36
36
|
account/models/settings.py,sha256=gOyRWBVd3BQpjfj_hJPtqX3H46ztyRAFxBrPbv11lQg,2137
|
@@ -40,23 +40,24 @@ account/passkeys/__init__.py,sha256=FwXYJXwSJXfkLojGBcVpF1dFpgFhzDdd9N_3naYQ0cc,
|
|
40
40
|
account/passkeys/core.py,sha256=xj-vXjSrfWDvc5MYtEmXzwaMkNHl-cXrQKVrN9soRCg,4126
|
41
41
|
account/periodic.py,sha256=-u0n-7QTJgDOkasGhBAPwHAwjpqWGA-MZLEFkVTqCGU,874
|
42
42
|
account/rpc/__init__.py,sha256=SGF0M_-H0dKh3b1apSX29BotNWAvITYccGQVC0MIjL8,336
|
43
|
-
account/rpc/auth.py,sha256=
|
43
|
+
account/rpc/auth.py,sha256=3BJMQZ6dxE0U3HvFbedx0kBGzLzZjP8XkkcUcBobRTk,16483
|
44
44
|
account/rpc/device.py,sha256=mB14a6qvJIBnCa9ivLhPXwEt5Gk2foyqsKBtZxC506k,3070
|
45
45
|
account/rpc/group.py,sha256=FD9GymgPY68y-gtDLsZxYVdwQJeLGpqcP4hjcDUh-GM,4022
|
46
|
-
account/rpc/member.py,sha256=
|
46
|
+
account/rpc/member.py,sha256=6QfhEnYuT_TMivkUUte7_DxAWW1JYjcloKRh9qQwWUY,1731
|
47
47
|
account/rpc/notify.py,sha256=Q2YWejP36egeF060Hih5uX4Psv_B8NWlLLPi7iDYlIw,3344
|
48
48
|
account/rpc/oauth.py,sha256=ISLVsR5HvKALANokaOFRvF4FTRxWtXPvVnZAYANKxpo,2864
|
49
49
|
account/rpc/passkeys.py,sha256=5x28nYILJUMMSwfVuWYL66hfoGUXahMqOwiHhM4I3Do,1729
|
50
50
|
account/rpc/settings.py,sha256=EvPuwW63Gp_Va0ANIPAZ894tnS_JCctQ0FzqYRdKUNM,271
|
51
51
|
account/settings.py,sha256=XEvZdcA6p_iUpDq9NmICK8rxzIQ8NViKfrpyuYgSV4o,53
|
52
|
-
account/templates/email/base.html,sha256=
|
53
|
-
account/templates/email/invite.html,sha256=
|
52
|
+
account/templates/email/base.html,sha256=GUuatccaZtO_hLLNZmMQQKew1Bjfz3e6Z7p3dM6BrWk,9669
|
53
|
+
account/templates/email/invite.html,sha256=PnhMpf3KCnZ_2vRxRAGsRnGQU27xz0ZQhnn87_F9IFc,10346
|
54
54
|
account/templates/email/plain/base.html,sha256=TTV8pqYGaKgzxJ7W8oZbMt2B_cNh8delFPHh-HynNv4,12600
|
55
|
-
account/templates/email/plain/invite.html,sha256=
|
56
|
-
account/templates/email/plain/reset_code.html,sha256=
|
57
|
-
account/templates/email/reset_code.html,sha256=
|
58
|
-
account/templates/email/simple/invite.html,sha256=
|
59
|
-
account/templates/email/simple/reset_code.html,sha256=
|
55
|
+
account/templates/email/plain/invite.html,sha256=5WznpzALEWU5tRfKBdZXRMEq_Fe1Nqvl8qJpeiVZgzI,14692
|
56
|
+
account/templates/email/plain/reset_code.html,sha256=d-p0S2zav2RoJ7wAtsNIzsMxpapVhN3kyCacdjghcYI,13411
|
57
|
+
account/templates/email/reset_code.html,sha256=OxXSU4Whlqt7tVReA1LLZzhOgVXmkiAD6-96-upZtNk,10040
|
58
|
+
account/templates/email/simple/invite.html,sha256=mGXatb2n7UzcOU4KWFwxB_UQxbbFUXdpP90vSFmF_Z0,14604
|
59
|
+
account/templates/email/simple/reset_code.html,sha256=o07xdV_2em8dWfJtrgUv-xVfb48QnlnuPfbAc2ssTeM,13401
|
60
|
+
account/templates/unsubscribed.html,sha256=NywlWhgV8SAWOExwPb76bL-cQfEoYhXw2-LPdwnKJTw,57098
|
60
61
|
auditlog/README,sha256=q4DXhdz5CuMyuxYISHXzhlHnIkRJlojwOMchLzW2qOI,520
|
61
62
|
auditlog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
62
63
|
auditlog/admin.py,sha256=-q7fstdFjNeDFfbwdrxVqy0WGKxMpBwrsM7AyG1p80g,1006
|
@@ -87,7 +88,7 @@ inbox/models/template.py,sha256=i5vf0vsM1U0251UmVsF61MDCV_c7xt-zdCdx1SiKOG0,1013
|
|
87
88
|
inbox/rpc.py,sha256=7JXvpXlEGKG7by_NkANPGYLCzagyCnTIGM4rme_htpk,1534
|
88
89
|
inbox/utils/__init__.py,sha256=P_UR2rGK3L0tZNlTN-mf99tpeYM-tLkA18iDKXSSLDM,89
|
89
90
|
inbox/utils/parsing.py,sha256=ae8JKm10qg6Q3dGhC29oDKKycN3yeDxI6e9SryPKxcY,4615
|
90
|
-
inbox/utils/render.py,sha256=
|
91
|
+
inbox/utils/render.py,sha256=CU_F2qUBQE7mjb9Q6Dn9ro5CS_O_zEY-wDMHEClKkIA,4331
|
91
92
|
inbox/utils/sending.py,sha256=BKelTZnbkdSLGpjOY6IRTrzj-Hnw2pPZ7RYQGwe-tqk,2179
|
92
93
|
incident/README.md,sha256=4vbZTJj7uUmq8rogYngxqNYjFTlBOujfWUGheLoFKMc,1114
|
93
94
|
incident/__init__.py,sha256=xgdt3z3z7ygjWv5HxhiWgBtB2W3IUJmmR88NSyUeHuo,3455
|
@@ -108,7 +109,7 @@ incident/migrations/0014_event_group_alter_rulecheck_index.py,sha256=v3gm5k0LVoa
|
|
108
109
|
incident/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
109
110
|
incident/models/__init__.py,sha256=NMphuhb0RTMf7Ov4QkNv7iv6_I8Wtr3xQ54yjX_a31M,209
|
110
111
|
incident/models/event.py,sha256=WRNzvjo0jypdnQNBksOOyi-_0kVT4qWUrDZf0Aw_MPM,7355
|
111
|
-
incident/models/incident.py,sha256=
|
112
|
+
incident/models/incident.py,sha256=HPbi6J9qm7_-FMjnDUPV9NcbmP_60WU-IO9HJSpoLTY,19360
|
112
113
|
incident/models/ossec.py,sha256=p1ptr-8lnaj1EP_VmPR58b2LmaYBGaYYKAMqhWK5yZM,2227
|
113
114
|
incident/models/rules.py,sha256=SMlDRw_r3fGv-vmRojRLmsklqRRxDcjrSLVBIz-gadA,6884
|
114
115
|
incident/models/ticket.py,sha256=S3kqGQpYLE6Y4M9IKu_60sgW-f592xNr8uufqHnvDoU,2302
|
@@ -116,10 +117,10 @@ incident/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
|
|
116
117
|
incident/parsers/ossec.py,sha256=Bc82n0AeXMBxMxzfAR-1puHyxldcikqeu5MeGRk1zMc,7142
|
117
118
|
incident/periodic.py,sha256=eX1rQK6v65A9ugofTvJPSmAWei6C-3EYgzCMuGZ03jM,381
|
118
119
|
incident/rpc.py,sha256=jGh1XaxDrTBIUK8Mw0ixqgPo-lqeP-MmUG1ApboAd1I,7933
|
119
|
-
incident/templates/email/incident_change.html,sha256=
|
120
|
-
incident/templates/email/incident_msg.html,sha256=
|
121
|
-
incident/templates/email/incident_new.html,sha256=
|
122
|
-
incident/templates/email/incident_plain.html,sha256=
|
120
|
+
incident/templates/email/incident_change.html,sha256=tQYphypwLukkVdwH0TB2Szz2VEJ7GnsfRS3_ZJ-MYeE,13895
|
121
|
+
incident/templates/email/incident_msg.html,sha256=MZdKhTddUF2MpiH8Z3RTQEmW_ko1n3ajeZ11KLtiLlU,13780
|
122
|
+
incident/templates/email/incident_new.html,sha256=W6nwFQROnyDfMlXub8s02ws4hGnJp16pfgp9xTm_aEc,15185
|
123
|
+
incident/templates/email/incident_plain.html,sha256=AyTv_3ITUwHoAO7Tv_xCODzWQXTV61EdtlphFum0BnM,14739
|
123
124
|
incident/tq.py,sha256=6KjeTFlWAlG_l8LWMlxUGdr8ULU0uE-DB5ex0ERW440,5226
|
124
125
|
location/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
125
126
|
location/admin.py,sha256=6S97Rlgjkk0jM15sbT1OJRPZbgvKn2rn7duCSazOXq4,297
|
@@ -349,7 +350,7 @@ metrics/models.py,sha256=lD9nVzfwdav70ENulqJ8rE8Ui8EWlzdVp05rg8bAlMA,13444
|
|
349
350
|
metrics/periodic.py,sha256=VmL0YG05D6k5fcNsF4QqPEU-BBPbZXjbOrp3b8EHZ-U,651
|
350
351
|
metrics/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
351
352
|
metrics/providers/aws.py,sha256=RDM5RLeFADHexm4cHaJdAm3K6iz1NwMSNcV9GYuGtjY,7432
|
352
|
-
metrics/rpc.py,sha256=
|
353
|
+
metrics/rpc.py,sha256=aPgE1yEIHM_9rdj0onMQZngxduq2Dr8EU8P2eFXPCBk,20558
|
353
354
|
metrics/settings.py,sha256=wwHA9Z7BAHNeu3tFVn8Fh5j46KR-eGx0E8r5dzCFlAU,132
|
354
355
|
metrics/tq.py,sha256=WHBRYSinmTuxF9l-_-lx0yfzEYkb0ffVMt_uvCj9bYo,825
|
355
356
|
metrics/utils.py,sha256=w6H2v8zjlOZ5uqZsJOQvZoN-2Kyv1h8PN76gMGow7AE,11995
|
@@ -383,7 +384,7 @@ rest/extra/__init__.py,sha256=YzmNsch5H5FFLkUK9mIAKyoRK_rJCA9HGb0kubp4h30,54
|
|
383
384
|
rest/extra/json_metadata.py,sha256=p_ffzmANmOFix_oC3voR6_NNTjcn7-T7aXcH-I4_Npg,1078
|
384
385
|
rest/fields.py,sha256=_v1TJVc6vyWlqmwFRJ6mtuR5Fo-lS0KcUhPWIrzKZUo,9719
|
385
386
|
rest/forms.py,sha256=66Wm5cdy8tKib_mGicjq_yd-gNVMFWRECnrDksnNnwU,6316
|
386
|
-
rest/helpers.py,sha256=
|
387
|
+
rest/helpers.py,sha256=l_vA0mdY4gZmOwzmqt-qB3DcF3aKkmteerXzJd2Qq7Q,28369
|
387
388
|
rest/joke.py,sha256=0PpKaX2iN7jlS62kgjfmmqkFBYLPURz15aQ8R7OJkJ8,260
|
388
389
|
rest/jwtoken.py,sha256=2BjRrnQSzm7ydHgYl6LIjfGW1YPmqjt-gDIo21O0WTk,2388
|
389
390
|
rest/log.py,sha256=hd1_4HBOS395sfXJIL6BTw9yekm1SLgBwYx_PdfIhKA,20930
|
@@ -417,7 +418,7 @@ rest/serializers/legacy.py,sha256=a5O-x2PqMKX8wYWrhCmdcivVbkPnru7UdyLbrhCaAdY,61
|
|
417
418
|
rest/serializers/localizers.py,sha256=BegaCvTQVaruhWzvGHq3zWeVFmtBChatquRqAtkke10,410
|
418
419
|
rest/serializers/model.py,sha256=08HJeqpmytjxvyiJFfsSRRG0uH-iK2mXCw6w0oMfWrI,8598
|
419
420
|
rest/serializers/profiler.py,sha256=OxOimhEyvCAuzUBC9Q1dz2xaakjAqmSnekMATsjduXM,997
|
420
|
-
rest/serializers/response.py,sha256=
|
421
|
+
rest/serializers/response.py,sha256=nUUFITnTKPDtqD5qtSRzYHFqhsG1TxO7thH81Bq-8Vk,7602
|
421
422
|
rest/serializers/util.py,sha256=-In89fpuVTd6_Ul8nwEUt3DjVKdpeoEyAxudlyB8K6Y,2734
|
422
423
|
rest/settings_helper.py,sha256=_Vn9nmL5_GPss9zIsXzacbTQkn99NbO42CqvOZC3ge4,1532
|
423
424
|
rest/ssl_check.py,sha256=kH4Pk4upUEwKTAnBLR0DIKezNJHjkW3g2TdQAObEgW4,1419
|
@@ -501,7 +502,7 @@ ws4redis/servers/uwsgi.py,sha256=VyhoCI1DnVFqBiJYHoxqn5Idlf6uJPHvfBKgkjs34mo,172
|
|
501
502
|
ws4redis/settings.py,sha256=K0yBiLUuY81iDM4Yr-k8hbvjn5VVHu5zQhmMK8Dtz0s,1536
|
502
503
|
ws4redis/utf8validator.py,sha256=S0OlfjeGRP75aO6CzZsF4oTjRQAgR17OWE9rgZdMBZA,5122
|
503
504
|
ws4redis/websocket.py,sha256=R0TUyPsoVRD7Y_oU7w2I6NL4fPwiz5Vl94-fUkZgLHA,14848
|
504
|
-
django_restit-4.2.
|
505
|
-
django_restit-4.2.
|
506
|
-
django_restit-4.2.
|
507
|
-
django_restit-4.2.
|
505
|
+
django_restit-4.2.74.dist-info/LICENSE.md,sha256=VHN4hhEeVOoFjtG-5fVv4jesA4SWi0Z-KgOzzN6a1ps,1068
|
506
|
+
django_restit-4.2.74.dist-info/METADATA,sha256=K4wtNqkXOw54ocU3LPiqrQ4f_peO9BlHQVneeYuVH1M,7645
|
507
|
+
django_restit-4.2.74.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
508
|
+
django_restit-4.2.74.dist-info/RECORD,,
|
inbox/utils/render.py
CHANGED
@@ -80,6 +80,7 @@ def renderTemplate(template, context, group=None):
|
|
80
80
|
context["BASE_URL"] = settings.BASE_URL
|
81
81
|
context["SITE_LOGO"] = settings.SITE_LOGO
|
82
82
|
context["SERVER_NAME"] = settings.SERVER_NAME
|
83
|
+
context["UNSUBSCRIBE_URL"] = settings.get("UNSUBSCRIBE_URL", f"{settings.BASE_URL}/api/account/unsubscribe")
|
83
84
|
context["version"] = settings.VERSION
|
84
85
|
if "COMPANY_NAME" not in context and settings.COMPANY_NAME:
|
85
86
|
context["COMPANY_NAME"] = settings.COMPANY_NAME
|
incident/models/incident.py
CHANGED
@@ -424,7 +424,7 @@ class Incident(models.Model, rm.RestModel, rm.MetaDataModel):
|
|
424
424
|
else:
|
425
425
|
# notitfy everyone but the sender
|
426
426
|
if history.by is None:
|
427
|
-
members = Member.GetWithPermission(perm).exclude(pk=history.by.pk)
|
427
|
+
members = Member.GetWithPermission(perm, ignore_disabled_email=True).exclude(pk=history.by.pk)
|
428
428
|
if members.count() == 0:
|
429
429
|
return
|
430
430
|
NotificationRecord = Incident.getModel("account", "NotificationRecord")
|
@@ -279,7 +279,7 @@ updated by: {% if history %}{{history.by.username}}{% else %}system{% endif %}
|
|
279
279
|
<tr>
|
280
280
|
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
281
281
|
<div style="font-family:Roboto, Helvetica, Arial, sans-serif;font-size:14px;font-weight:300;line-height:20px;text-align:center;color:#000000;">
|
282
|
-
Don't like these emails? <a style="color: #c0c1ff;font-weight: bold;text-decoration: none;" href="{{
|
282
|
+
Don't like these emails? <a style="color: #c0c1ff;font-weight: bold;text-decoration: none;" href="{{UNSUBSCRIBE_URL}}?t={{unsubscribe_token}}">Unsubscribe</a>.
|
283
283
|
</div>
|
284
284
|
</td>
|
285
285
|
</tr>
|
@@ -278,7 +278,7 @@ New Message:
|
|
278
278
|
<tr>
|
279
279
|
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
280
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="{{
|
281
|
+
Don't like these emails? <a style="color: #c0c1ff;font-weight: bold;text-decoration: none;" href="{{UNSUBSCRIBE_URL}}?t={{unsubscribe_token}}">Unsubscribe</a>.
|
282
282
|
</div>
|
283
283
|
</td>
|
284
284
|
</tr>
|
@@ -296,7 +296,7 @@
|
|
296
296
|
<tr>
|
297
297
|
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
298
298
|
<div style="font-family:Roboto, Helvetica, Arial, sans-serif;font-size:14px;font-weight:300;line-height:20px;text-align:center;color:#000000;">
|
299
|
-
Don't like these emails? <a style="color: #c0c1ff;font-weight: bold;text-decoration: none;" href="{{
|
299
|
+
Don't like these emails? <a style="color: #c0c1ff;font-weight: bold;text-decoration: none;" href="{{UNSUBSCRIBE_URL}}?t={{unsubscribe_token}}">Unsubscribe</a>.
|
300
300
|
</div>
|
301
301
|
</td>
|
302
302
|
</tr>
|
@@ -297,7 +297,7 @@ updated by: {% if history %}{{history.by.username}}{% else %}system{% endif %}
|
|
297
297
|
<tr>
|
298
298
|
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
|
299
299
|
<div style="font-family:Roboto, Helvetica, Arial, sans-serif;font-size:14px;font-weight:300;line-height:20px;text-align:center;color:#000000;">
|
300
|
-
Don't like these emails? <a style="color: #c0c1ff;font-weight: bold;text-decoration: none;" href="{{
|
300
|
+
Don't like these emails? <a style="color: #c0c1ff;font-weight: bold;text-decoration: none;" href="{{UNSUBSCRIBE_URL}}?t={{unsubscribe_token}}">Unsubscribe</a>.
|
301
301
|
</div>
|
302
302
|
</td>
|
303
303
|
</tr>
|
metrics/rpc.py
CHANGED
@@ -296,11 +296,17 @@ def rest_on_ec2_restit_stats(request, pk=None):
|
|
296
296
|
host = f"{name}.{hostname}"
|
297
297
|
else:
|
298
298
|
host = f"{name}.{hostname}"
|
299
|
-
resp = net.REQUEST(
|
299
|
+
resp = net.REQUEST(
|
300
|
+
"GET", host,
|
301
|
+
f"/{REST_PREFIX}versions",
|
302
|
+
params=dict(detailed=1),
|
303
|
+
timeout=5.0)
|
300
304
|
if resp.status:
|
301
305
|
resp.data.id = host
|
302
306
|
resp.data.hostname = host
|
303
307
|
data.append(resp.data)
|
308
|
+
else:
|
309
|
+
data.append(dict(id=host, hostname=host))
|
304
310
|
return rv.restReturn(request, dict(data=data))
|
305
311
|
|
306
312
|
|
@@ -594,7 +600,7 @@ def rest_on_ec2_logs(request, pk=None):
|
|
594
600
|
resp = net.REQUEST(
|
595
601
|
"GET", host,
|
596
602
|
f"/{REST_PREFIX}metrics/logs/nginx",
|
597
|
-
headers=headers, params=params)
|
603
|
+
headers=headers, params=params, timeout=30.0)
|
598
604
|
if resp.status and resp.data:
|
599
605
|
logs.extend(resp.data)
|
600
606
|
return rv.restReturn(request, dict(data=logs, size=len(logs), count=len(logs)))
|
rest/helpers.py
CHANGED
@@ -471,7 +471,9 @@ def getContext(request, *args, **kwargs):
|
|
471
471
|
"SITE_LOGO":settings.SITE_LOGO,
|
472
472
|
"SERVER_NAME":settings.SERVER_NAME,
|
473
473
|
"BASE_URL":settings.BASE_URL,
|
474
|
-
"DISCLAIMER": settings.REST_DISCLAIMER
|
474
|
+
"DISCLAIMER": settings.REST_DISCLAIMER,
|
475
|
+
"COMPANY_LABEL": settings.COMPANY_LABEL,
|
476
|
+
"UNSUBSCRIBE_URL": settings.get("UNSUBSCRIBE_URL", f"{settings.BASE_URL}api/account/unsubscribe")
|
475
477
|
}
|
476
478
|
|
477
479
|
if request:
|
rest/serializers/response.py
CHANGED
@@ -147,6 +147,14 @@ def restExcel(request, qset, fields, name, size=10000, localize=None, **kwargs):
|
|
147
147
|
return excel.qsetToExcel(request, qset[:size], fields, name)
|
148
148
|
|
149
149
|
|
150
|
+
def restHTML(request, html_content=None, template=None, context=None, status=200):
|
151
|
+
if not html_content and not template:
|
152
|
+
return HttpResponse("<html><body><h1>Hello, World!</h1><p>Welcome to my site.</p></body></html>")
|
153
|
+
if template:
|
154
|
+
return render(request, template, context, status=status)
|
155
|
+
return HttpResponse(html_content, status=status)
|
156
|
+
|
157
|
+
|
150
158
|
def parse_accept_list(request):
|
151
159
|
if request and hasattr(request, "DATA") and request.DATA.get('_type', None) is not None:
|
152
160
|
accept_list = [request.DATA.get('_type')]
|
File without changes
|
File without changes
|