django-restit 4.2.55__py3-none-any.whl → 4.2.57__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/group.py +1 -0
- account/models/membership.py +24 -0
- account/rpc/group.py +6 -1
- {django_restit-4.2.55.dist-info → django_restit-4.2.57.dist-info}/METADATA +1 -1
- {django_restit-4.2.55.dist-info → django_restit-4.2.57.dist-info}/RECORD +10 -10
- incident/tq.py +4 -0
- rest/__init__.py +1 -1
- rest/requestex.py +4 -1
- {django_restit-4.2.55.dist-info → django_restit-4.2.57.dist-info}/LICENSE.md +0 -0
- {django_restit-4.2.55.dist-info → django_restit-4.2.57.dist-info}/WHEEL +0 -0
account/models/group.py
CHANGED
@@ -448,6 +448,7 @@ class Group(models.Model, RestModel, MetaDataModel):
|
|
448
448
|
if ms is None:
|
449
449
|
ms = Membership(member=member, group=self, role=role)
|
450
450
|
ms.save()
|
451
|
+
ms.on_rest_created(self.getActiveRequest())
|
451
452
|
elif ms.role != role:
|
452
453
|
ms.clearPermissions()
|
453
454
|
if not ms.is_enabled:
|
account/models/membership.py
CHANGED
@@ -127,6 +127,7 @@ class Membership(models.Model, RestModel, MetaDataModel):
|
|
127
127
|
msg = F"{self.member.username} access to {self.group.name} disabled by {by_user}"
|
128
128
|
self.auditLog(msg, "membership_disabled")
|
129
129
|
self.member.auditLog(msg, "membership_disabled")
|
130
|
+
self.group.auditLog(msg, "membership_disabled")
|
130
131
|
self.state = value
|
131
132
|
elif self.state < -10 and value >= -10:
|
132
133
|
request = self.getActiveRequest()
|
@@ -137,6 +138,7 @@ class Membership(models.Model, RestModel, MetaDataModel):
|
|
137
138
|
msg = F"{self.member.username} access to {self.group.name} enabled by {by_user}"
|
138
139
|
self.auditLog(msg, "membership_enabled")
|
139
140
|
self.member.auditLog(msg, "membership_enabled")
|
141
|
+
self.group.auditLog(msg, "membership_enabled")
|
140
142
|
self.state = value
|
141
143
|
else:
|
142
144
|
self.state = value
|
@@ -196,6 +198,28 @@ class Membership(models.Model, RestModel, MetaDataModel):
|
|
196
198
|
for k in value:
|
197
199
|
self.addPermission(k)
|
198
200
|
|
201
|
+
def on_rest_deleted(self, request):
|
202
|
+
# called right before the delete
|
203
|
+
msg = f"{self.member.username} membership deleted for {self.group.name}:{self.group.pk} by {request.member.username}"
|
204
|
+
self.member.auditLog(msg, "membership_deleted")
|
205
|
+
self.group.auditLog(msg, "membership_deleted")
|
206
|
+
# request.member(msg, "deleted_membership")
|
207
|
+
# check if we should delete children
|
208
|
+
if request.DATA.get("delete_children", False, field_type=bool):
|
209
|
+
groups = self.group.getAllChildren(False, True, True)
|
210
|
+
for g in groups:
|
211
|
+
for ms in g.memberships.filter(member=self.member):
|
212
|
+
msg = f"{self.member.username} membership deleted for {ms.group.name}:{ms.group.pk} by {request.member.username}"
|
213
|
+
ms.member.auditLog(msg, "membership_deleted")
|
214
|
+
ms.group.auditLog(msg, "membership_deleted")
|
215
|
+
# request.member(msg, "deleted_membership")
|
216
|
+
ms.delete()
|
217
|
+
|
218
|
+
def on_rest_created(self, request):
|
219
|
+
msg = f"{self.member.username} membership added for {self.group.name}:{self.group.pk} by {request.member.username}"
|
220
|
+
self.member.auditLog(msg, "membership_added")
|
221
|
+
self.group.auditLog(msg, "membership_added")
|
222
|
+
|
199
223
|
def __str__(self):
|
200
224
|
return F"{self.group}:{self.member}:{self.id}"
|
201
225
|
|
account/rpc/group.py
CHANGED
@@ -83,8 +83,13 @@ def rest_on_membership(request, pk=None):
|
|
83
83
|
@rd.login_required
|
84
84
|
def rest_on_users_membership(request, group_id=None):
|
85
85
|
ms = request.member.getMembershipFor(group_id, include_parents=True)
|
86
|
-
if ms is None
|
86
|
+
if ms is None:
|
87
87
|
return rv.restStatus(request, False, error="not found", error_code=404)
|
88
|
+
if not ms.is_enabled:
|
89
|
+
return rv.restPermissionDenied(
|
90
|
+
request,
|
91
|
+
error=f"membership({request.member.username}) has been disabled for this group({group_id})",
|
92
|
+
error_code=410)
|
88
93
|
return ms.restGet(request)
|
89
94
|
|
90
95
|
|
@@ -23,10 +23,10 @@ account/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
|
|
23
23
|
account/models/__init__.py,sha256=cV_lMnT2vL_mjiYtT4hlcIHo52ocFbGSNVkOIHHLXZY,385
|
24
24
|
account/models/device.py,sha256=XipNpByreGubB5-d4ZBOoIV5Xw14b2Btcgn6fXz8HAc,4105
|
25
25
|
account/models/feeds.py,sha256=FXqcZ1Qy4oYOLzai7-GL4WNd7iKPb5Y3ZqvKQunq1Yk,1861
|
26
|
-
account/models/group.py,sha256=
|
26
|
+
account/models/group.py,sha256=4fk-RavG1wNVzfuXMaD2XDiX2DhK1hgL0-OA54Uym18,21576
|
27
27
|
account/models/legacy.py,sha256=zYdtv4LC0ooxPVqWM-uToPwV-lYWQLorSE6p6yn1xDw,2720
|
28
28
|
account/models/member.py,sha256=CxxhNnFCQPEw7MGc5147J8eandYqUj6HhhQ_YRyFQX4,50397
|
29
|
-
account/models/membership.py,sha256=
|
29
|
+
account/models/membership.py,sha256=GJ6bSFLfU1CN9466k0XjSwn1sQIEwFeC8-oUYd2MrSs,9217
|
30
30
|
account/models/notify.py,sha256=YnZujSHJHY7B09e6FIyZIEJRWLPYk1Sk1e92tFzB1IA,12078
|
31
31
|
account/models/passkeys.py,sha256=TJxITUi4DT4_1tW2K7ZlOcRjJuMVl2NtKz7pKQU8-Tw,1516
|
32
32
|
account/models/session.py,sha256=o3t98e8itXEtkknBHdBH_PSq9kuw1A858_wl6ZleXMM,3729
|
@@ -39,7 +39,7 @@ account/periodic.py,sha256=-u0n-7QTJgDOkasGhBAPwHAwjpqWGA-MZLEFkVTqCGU,874
|
|
39
39
|
account/rpc/__init__.py,sha256=SGF0M_-H0dKh3b1apSX29BotNWAvITYccGQVC0MIjL8,336
|
40
40
|
account/rpc/auth.py,sha256=eywdJSjsi_Ds2pM4wnltPJUfjIQqf6r6e99eKS7q3BA,15593
|
41
41
|
account/rpc/device.py,sha256=fbbZFp3cUdhVXvD7gVFOqFWj4hKS3bjZKD_aF5fQxd8,2852
|
42
|
-
account/rpc/group.py,sha256=
|
42
|
+
account/rpc/group.py,sha256=FD9GymgPY68y-gtDLsZxYVdwQJeLGpqcP4hjcDUh-GM,4022
|
43
43
|
account/rpc/member.py,sha256=PU-Uz5KUI_BZFy-F-taDqAfnt_AwONYXSzUvfm7eyTw,1264
|
44
44
|
account/rpc/notify.py,sha256=Q2YWejP36egeF060Hih5uX4Psv_B8NWlLLPi7iDYlIw,3344
|
45
45
|
account/rpc/oauth.py,sha256=ISLVsR5HvKALANokaOFRvF4FTRxWtXPvVnZAYANKxpo,2864
|
@@ -115,7 +115,7 @@ incident/rpc.py,sha256=D7cAPkW94F6ISlCTQ74GxnbLId-I3bMK4Xss0GoHM9w,7934
|
|
115
115
|
incident/templates/email/incident_change.html,sha256=O_5ocWTsnqmmOuQhAtXEiE4rWecnZnJjoKU4MwV6ILo,14178
|
116
116
|
incident/templates/email/incident_new.html,sha256=IPX3CqIrvdrZSn13_jlR6sEb0If8ftvUrUpkzC5G2Gc,15173
|
117
117
|
incident/templates/email/incident_plain.html,sha256=fx4zsoldG1AQEBA6IYx5BJp_MAMizgjjx9EmuR5m4SQ,14727
|
118
|
-
incident/tq.py,sha256=
|
118
|
+
incident/tq.py,sha256=6KjeTFlWAlG_l8LWMlxUGdr8ULU0uE-DB5ex0ERW440,5226
|
119
119
|
location/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
120
120
|
location/admin.py,sha256=6S97Rlgjkk0jM15sbT1OJRPZbgvKn2rn7duCSazOXq4,297
|
121
121
|
location/geolocate.py,sha256=UgV129vmSxnqYFBYJD2RQVOcC1-lJJ1zUaxDqOJRbG4,1694
|
@@ -363,7 +363,7 @@ pushit/utils.py,sha256=IeTCGa-164nmB1jIsK1lu1O1QzUhS3BKfuXHGjCW-ck,2121
|
|
363
363
|
rest/.gitignore,sha256=TbEvWRMnAiajCTOdhiNrd9eeCAaIjRp9PRjE_VkMM5g,118
|
364
364
|
rest/README.md,sha256=V3ETc-cJu8PZIbKr9xSe_pA4JEUpC8Dhw4bQeVCDJPw,5460
|
365
365
|
rest/RemoteEvents.py,sha256=nL46U7AuxIrlw2JunphR1tsXyqi-ep_gD9CYGpYbNgE,72
|
366
|
-
rest/__init__.py,sha256=
|
366
|
+
rest/__init__.py,sha256=lgq1gaLUtdHmzwhYr6xVWzn6uiT3N9nuvNfIXqQte5I,121
|
367
367
|
rest/arc4.py,sha256=y644IbF1ec--e4cUJ3KEYsewTCITK0gmlwa5mJruFC0,1967
|
368
368
|
rest/cache.py,sha256=1Qg0rkaCJCaVP0-l5hZg2CIblTdeBSlj_0fP6vlKUpU,83
|
369
369
|
rest/crypto/__init__.py,sha256=Tl0U11rgj1eBYqd6OXJ2_XSdNLumW_JkBZnaJqI6Ldw,72
|
@@ -400,7 +400,7 @@ rest/models/cacher.py,sha256=eKz8TINVhWEqKhJGMsRkKZTtBUIv5rN3NHbZwOC56Uk,578
|
|
400
400
|
rest/models/metadata.py,sha256=65GvfFbc26_7wJz8qEAzU7fEOZWVz0ttO5j5m_gs4hk,12860
|
401
401
|
rest/net.py,sha256=LcB2QV6VNRtsSdmiQvYZgwQUDwOPMn_VBdRiZ6OpI-I,2974
|
402
402
|
rest/regexes.yaml,sha256=VoGb4E-P_K9f82Yzcpltgzekpt9usRtwu9PYlo46nUw,149463
|
403
|
-
rest/requestex.py,sha256=
|
403
|
+
rest/requestex.py,sha256=N56056vV3zWkAP-QrYsCu7SdpPzE5kLuPoxGIuZAKt0,16127
|
404
404
|
rest/rpc.py,sha256=Z-0Q62VeMViZiS_9vBHKJmbERgemsfg8pnKFjV-DH-w,4200
|
405
405
|
rest/search.py,sha256=QVjk2b5tZLgf1zM2MHvJTyRjwUbY5ZD7HXSTmSPXtvU,8362
|
406
406
|
rest/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -496,7 +496,7 @@ ws4redis/servers/uwsgi.py,sha256=VyhoCI1DnVFqBiJYHoxqn5Idlf6uJPHvfBKgkjs34mo,172
|
|
496
496
|
ws4redis/settings.py,sha256=K0yBiLUuY81iDM4Yr-k8hbvjn5VVHu5zQhmMK8Dtz0s,1536
|
497
497
|
ws4redis/utf8validator.py,sha256=S0OlfjeGRP75aO6CzZsF4oTjRQAgR17OWE9rgZdMBZA,5122
|
498
498
|
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.
|
499
|
+
django_restit-4.2.57.dist-info/LICENSE.md,sha256=VHN4hhEeVOoFjtG-5fVv4jesA4SWi0Z-KgOzzN6a1ps,1068
|
500
|
+
django_restit-4.2.57.dist-info/METADATA,sha256=sxDTnjHMcR9ergS9eCqSS4XCX_DzPUO7UnhI9OirFTs,7594
|
501
|
+
django_restit-4.2.57.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
502
|
+
django_restit-4.2.57.dist-info/RECORD,,
|
incident/tq.py
CHANGED
@@ -126,6 +126,10 @@ def run_cleanup(task):
|
|
126
126
|
Q(incident__state=ia.INCIDENT_STATE_IGNORE) | Q(incident__isnull=True)).delete()
|
127
127
|
if count:
|
128
128
|
task.log(f"deleted {count} old Events")
|
129
|
+
|
130
|
+
count = ia.Incident.objects.filter(created__lte=stale).filter(state=ia.INCIDENT_STATE_IGNORE).delete()
|
131
|
+
if count:
|
132
|
+
task.log(f"deleted {count} old Incidents")
|
129
133
|
|
130
134
|
count = GeoIP.removeDuplicates()
|
131
135
|
if count:
|
rest/__init__.py
CHANGED
rest/requestex.py
CHANGED
@@ -84,7 +84,10 @@ class RequestData(object):
|
|
84
84
|
elif self.request.method == "GET":
|
85
85
|
data = self.request.GET
|
86
86
|
elif self.request.method == "DELETE":
|
87
|
-
|
87
|
+
if self.request.body:
|
88
|
+
data = QueryDict(self.request.body)
|
89
|
+
else:
|
90
|
+
data = objict()
|
88
91
|
elif self.request.method == "PUT":
|
89
92
|
if self.request.content_type == "application/json":
|
90
93
|
data = UberDict.fromJSON(self.request.body, ignore_errors=True)
|
File without changes
|
File without changes
|