django-restit 4.2.133__py3-none-any.whl → 4.2.134__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- account/rpc/member.py +12 -0
- auditlog/tq.py +6 -4
- {django_restit-4.2.133.dist-info → django_restit-4.2.134.dist-info}/METADATA +1 -1
- {django_restit-4.2.133.dist-info → django_restit-4.2.134.dist-info}/RECORD +10 -10
- medialib/models.py +10 -5
- rest/__init__.py +1 -1
- rest/models/base.py +9 -0
- wiki/models/page.py +2 -0
- {django_restit-4.2.133.dist-info → django_restit-4.2.134.dist-info}/LICENSE.md +0 -0
- {django_restit-4.2.133.dist-info → django_restit-4.2.134.dist-info}/WHEEL +0 -0
account/rpc/member.py
CHANGED
@@ -12,6 +12,18 @@ def rest_on_member(request, pk=None):
|
|
12
12
|
return am.Member.on_rest_request(request, pk)
|
13
13
|
|
14
14
|
|
15
|
+
@rd.urlPOST('member/motd/reset')
|
16
|
+
@rd.perm_required('manage_members')
|
17
|
+
def rest_on_clear_motd(request):
|
18
|
+
key = request.DATA.get("key")
|
19
|
+
if key.startswith("viewed."):
|
20
|
+
key = key.split('.')[-1]
|
21
|
+
am.MemberMetaData.objects.filter(key=key, category="viewed").delete()
|
22
|
+
else:
|
23
|
+
am.MemberMetaData.objects.filter(key="saw_motd", category__isnull=True).delete()
|
24
|
+
return restStatus(request, True)
|
25
|
+
|
26
|
+
|
15
27
|
@rd.url(r'^member/me$')
|
16
28
|
@rd.login_optional
|
17
29
|
def member_me_action(request):
|
auditlog/tq.py
CHANGED
@@ -10,10 +10,12 @@ from rest import settings
|
|
10
10
|
|
11
11
|
AUDITLOG_PRUNE_DAYS = settings.get("AUDITLOG_PRUNE_DAYS", 90)
|
12
12
|
REST_LOG_PRUNE_DAYS = settings.get("REST_LOG_PRUNE_DAYS", 90)
|
13
|
-
ACCOUNT_LOG_PRUNE_DAYS = settings.get("ACCOUNT_LOG_PRUNE_DAYS",
|
13
|
+
ACCOUNT_LOG_PRUNE_DAYS = settings.get("ACCOUNT_LOG_PRUNE_DAYS", 640)
|
14
14
|
ASYNC_LOG_PRUNE_DAYS = settings.get("ASYNC_LOG_PRUNE_DAYS", 14)
|
15
15
|
SESSION_PRUNE_DAYS = settings.get("SESSION_PRUNE_DAYS", 180)
|
16
16
|
|
17
|
+
ACCOUNT_LOG_COMPONENTS = settings.get("ACCOUNT_LOG_COMPONENTS", ["account.Member", "account.Group"])
|
18
|
+
|
17
19
|
|
18
20
|
def on_cleanup(task):
|
19
21
|
# cleanup log files in the var directory
|
@@ -41,21 +43,21 @@ def on_cleanup(task):
|
|
41
43
|
def cleanupAuditLogs():
|
42
44
|
if AUDITLOG_PRUNE_DAYS:
|
43
45
|
before = datetime.now() - timedelta(days=AUDITLOG_PRUNE_DAYS)
|
44
|
-
return PersistentLog.objects.filter(when__lte=before).exclude(component__in=
|
46
|
+
return PersistentLog.objects.filter(when__lte=before).exclude(component__in=ACCOUNT_LOG_COMPONENTS).delete()[0]
|
45
47
|
return 0
|
46
48
|
|
47
49
|
|
48
50
|
def cleanupRestLogs():
|
49
51
|
if REST_LOG_PRUNE_DAYS:
|
50
52
|
before = datetime.now() - timedelta(days=REST_LOG_PRUNE_DAYS)
|
51
|
-
return PersistentLog.objects.filter(when__lte=before, component__in=["rest", "action"]).exclude(component__in=
|
53
|
+
return PersistentLog.objects.filter(when__lte=before, component__in=["rest", "action"]).exclude(component__in=ACCOUNT_LOG_COMPONENTS).delete()[0]
|
52
54
|
return 0
|
53
55
|
|
54
56
|
|
55
57
|
def cleanupAccountLogs():
|
56
58
|
if ACCOUNT_LOG_PRUNE_DAYS:
|
57
59
|
before = datetime.now() - timedelta(days=ACCOUNT_LOG_PRUNE_DAYS)
|
58
|
-
return PersistentLog.objects.filter(when__lte=before, component__in=
|
60
|
+
return PersistentLog.objects.filter(when__lte=before, component__in=ACCOUNT_LOG_COMPONENTS).delete()[0]
|
59
61
|
return 0
|
60
62
|
|
61
63
|
|
@@ -45,7 +45,7 @@ account/rpc/__init__.py,sha256=SGF0M_-H0dKh3b1apSX29BotNWAvITYccGQVC0MIjL8,336
|
|
45
45
|
account/rpc/auth.py,sha256=p62tyihWvSY2zn7eaVxKcCG9qLnnZBIkwdRH81sS5_Y,16615
|
46
46
|
account/rpc/device.py,sha256=lU2BHNPreHV0dDTjAPc7Sc-5m2JP8SiWVqiKuBfV7Fo,2281
|
47
47
|
account/rpc/group.py,sha256=riymUK6ttv8G6SG6K-v7UCvM40WQy3HaGSeF_sEiaU0,4929
|
48
|
-
account/rpc/member.py,sha256=
|
48
|
+
account/rpc/member.py,sha256=8XnJX-iri0Om4nc-V2_tDJzfCSzziKLw6dUx9egtEZE,2236
|
49
49
|
account/rpc/notify.py,sha256=Q2YWejP36egeF060Hih5uX4Psv_B8NWlLLPi7iDYlIw,3344
|
50
50
|
account/rpc/oauth.py,sha256=ISLVsR5HvKALANokaOFRvF4FTRxWtXPvVnZAYANKxpo,2864
|
51
51
|
account/rpc/passkeys.py,sha256=5x28nYILJUMMSwfVuWYL66hfoGUXahMqOwiHhM4I3Do,1729
|
@@ -72,7 +72,7 @@ auditlog/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
|
|
72
72
|
auditlog/models.py,sha256=skDAiuzR4chC-WNIaH2nm_VVcbnDD6ZtUxBwhk7UY8U,16517
|
73
73
|
auditlog/periodic.py,sha256=AUhDeVsZtC47BJ-lklvYEegHoxAzj1RpIvRFSsM7g5E,363
|
74
74
|
auditlog/rpc.py,sha256=gJgj3Wiar5pVsw8tuhy0jXLkqFkOr3Z-oI2DKelMRAQ,5592
|
75
|
-
auditlog/tq.py,sha256=
|
75
|
+
auditlog/tq.py,sha256=ROcCjQhCavOgW3-8yjLrboNTAYEC5Pu2UCoenom0Law,2478
|
76
76
|
auditlog/urls.py,sha256=GNqpN74EpYlMND2UFUdPt5rOkTYYrdbTV0W3fg4zLfQ,163
|
77
77
|
inbox/README.md,sha256=jsklDrzD5d94r7cwgaU6Gi1HCjBDfWq7jd92qB0JYPU,2169
|
78
78
|
inbox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -174,7 +174,7 @@ medialib/forms.py,sha256=nrE6QTPNPiIeX7Nx4l9DEmAQeQXqFyCg1C3JEDBYJfE,5442
|
|
174
174
|
medialib/migrations/0001_initial.py,sha256=H3JliH5aw7tiHef8MhrJr_9rGetqgA7UjTF-eKziRSM,20518
|
175
175
|
medialib/migrations/0002_alter_mediaitemrendition_bytes.py,sha256=igC1R02smbNoWlk2T4uCi9cNilOsxGKD-D24fQv92dM,414
|
176
176
|
medialib/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
177
|
-
medialib/models.py,sha256=
|
177
|
+
medialib/models.py,sha256=hBq-xyUZB0X0TpYmywmMCuLFrOK4Su-zRfSGD1ULvk8,54995
|
178
178
|
medialib/ocr.py,sha256=zlP7-NBiXhW7jR9pljmEPl5xzLVZpLN5QLAELQgU0Fk,1189
|
179
179
|
medialib/pdf.py,sha256=l28WwM0JKbT9boV-b_9TFh9jhvGcrquR8GqC8wfEaLk,1275
|
180
180
|
medialib/qrcode.py,sha256=vHyA5egXOX70EFiUDgr1njI9zcF6bXQJ_hKAQrppRow,545
|
@@ -377,7 +377,7 @@ pushit/utils.py,sha256=IeTCGa-164nmB1jIsK1lu1O1QzUhS3BKfuXHGjCW-ck,2121
|
|
377
377
|
rest/.gitignore,sha256=TbEvWRMnAiajCTOdhiNrd9eeCAaIjRp9PRjE_VkMM5g,118
|
378
378
|
rest/README.md,sha256=V3ETc-cJu8PZIbKr9xSe_pA4JEUpC8Dhw4bQeVCDJPw,5460
|
379
379
|
rest/RemoteEvents.py,sha256=nL46U7AuxIrlw2JunphR1tsXyqi-ep_gD9CYGpYbNgE,72
|
380
|
-
rest/__init__.py,sha256=
|
380
|
+
rest/__init__.py,sha256=YSY8pyO-bS3rDXGxnPSjIFrfIY1b-rATlrQzmmOQlMc,122
|
381
381
|
rest/arc4.py,sha256=y644IbF1ec--e4cUJ3KEYsewTCITK0gmlwa5mJruFC0,1967
|
382
382
|
rest/cache.py,sha256=1Qg0rkaCJCaVP0-l5hZg2CIblTdeBSlj_0fP6vlKUpU,83
|
383
383
|
rest/crypto/__init__.py,sha256=Tl0U11rgj1eBYqd6OXJ2_XSdNLumW_JkBZnaJqI6Ldw,72
|
@@ -410,7 +410,7 @@ rest/middleware/request.py,sha256=JchRNy5L-bGd-7h-KFYekGRvREe2eCkZXKOYqIkP2hI,41
|
|
410
410
|
rest/middleware/session.py,sha256=zHSoQpIzRLmpqr_JvW406wzpvU3W3gDbm5JhtzLAMlE,10240
|
411
411
|
rest/middleware/session_store.py,sha256=1nSdeXK8PyuYgGgIufqrS6j6QpIrQ7zbMNT0ol75e6U,1901
|
412
412
|
rest/models/__init__.py,sha256=M8pvFDq-WCF-QcM58X7pMufYYe0aaQ3U0PwGe9TKbbY,130
|
413
|
-
rest/models/base.py,sha256=
|
413
|
+
rest/models/base.py,sha256=asj1ehoq_LLcm99PbyICGG9I_GQikxilrc52tTs2YBY,71301
|
414
414
|
rest/models/cacher.py,sha256=eKz8TINVhWEqKhJGMsRkKZTtBUIv5rN3NHbZwOC56Uk,578
|
415
415
|
rest/models/metadata.py,sha256=1nQ7CYo9bJHoaXE_hVNaj1-Y7yqhHlf2ZlaD1IfTzic,12904
|
416
416
|
rest/net.py,sha256=LcB2QV6VNRtsSdmiQvYZgwQUDwOPMn_VBdRiZ6OpI-I,2974
|
@@ -486,7 +486,7 @@ wiki/migrations/0003_page_perms.py,sha256=qJBLI7t5mgiDTKCR9qhticmbhgo2KKYq7WbHax
|
|
486
486
|
wiki/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
487
487
|
wiki/models/__init__.py,sha256=jE-9r_Hqpyo7ysKu9BschXOn5Zg34wUt894GwJpxA28,132
|
488
488
|
wiki/models/faq.py,sha256=nvcEFerllQKT61kIYlasvZzRKwpXyfmQpiqkpHP1V1o,1745
|
489
|
-
wiki/models/page.py,sha256=
|
489
|
+
wiki/models/page.py,sha256=uIu-jVdf1Y9qXKbb5k15-8RLTltyTtoXobZJFcx8_0A,8836
|
490
490
|
wiki/models/revision.py,sha256=St5-vz8SGvogsDL6jTWqHLE23PS5mp9iA0DUt3hWTsU,729
|
491
491
|
wiki/periodic.py,sha256=t-UgXJIug-OLslJM_r03-5WrNKj39TxrvfuNFjVAhDs,334
|
492
492
|
wiki/renderers/__init__.py,sha256=lLEoJvjU3ezXwBGcjleKk_kMyNeMD9MpfBlEiKayEiM,461
|
@@ -513,7 +513,7 @@ ws4redis/servers/uwsgi.py,sha256=VyhoCI1DnVFqBiJYHoxqn5Idlf6uJPHvfBKgkjs34mo,172
|
|
513
513
|
ws4redis/settings.py,sha256=K0yBiLUuY81iDM4Yr-k8hbvjn5VVHu5zQhmMK8Dtz0s,1536
|
514
514
|
ws4redis/utf8validator.py,sha256=S0OlfjeGRP75aO6CzZsF4oTjRQAgR17OWE9rgZdMBZA,5122
|
515
515
|
ws4redis/websocket.py,sha256=R0TUyPsoVRD7Y_oU7w2I6NL4fPwiz5Vl94-fUkZgLHA,14848
|
516
|
-
django_restit-4.2.
|
517
|
-
django_restit-4.2.
|
518
|
-
django_restit-4.2.
|
519
|
-
django_restit-4.2.
|
516
|
+
django_restit-4.2.134.dist-info/LICENSE.md,sha256=VHN4hhEeVOoFjtG-5fVv4jesA4SWi0Z-KgOzzN6a1ps,1068
|
517
|
+
django_restit-4.2.134.dist-info/METADATA,sha256=LxqKyOSlOPA71uj2Qp3pJYUjXAliEynIVPEeOE_sNSc,7663
|
518
|
+
django_restit-4.2.134.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
519
|
+
django_restit-4.2.134.dist-info/RECORD,,
|
medialib/models.py
CHANGED
@@ -458,7 +458,10 @@ class MediaItem(models.Model, RestModel, MetaDataModel):
|
|
458
458
|
return f's3://{settings.AWS_S3_BUCKET}'
|
459
459
|
|
460
460
|
def set_rendernow(self, value):
|
461
|
-
self.
|
461
|
+
if self.kind == "*":
|
462
|
+
self.saveState(200)
|
463
|
+
return
|
464
|
+
self.new_render(force_task=(self.kind == "V"))
|
462
465
|
|
463
466
|
def uses(self):
|
464
467
|
"""
|
@@ -475,8 +478,8 @@ class MediaItem(models.Model, RestModel, MetaDataModel):
|
|
475
478
|
def async_render(self, files={}):
|
476
479
|
return self.new_render()
|
477
480
|
|
478
|
-
def new_render(self, files={}):
|
479
|
-
if TASKQUEUE_RENDERING:
|
481
|
+
def new_render(self, files={}, force_task=False):
|
482
|
+
if TASKQUEUE_RENDERING or force_task:
|
480
483
|
Task.Publish("medialib", "on_render", {"id": self.id, "name": self.name, "kind": self.kind}, channel="tq_app_handler_medialib")
|
481
484
|
else:
|
482
485
|
self.createRenditions()
|
@@ -556,8 +559,10 @@ class MediaItem(models.Model, RestModel, MetaDataModel):
|
|
556
559
|
self.kind = '*'
|
557
560
|
|
558
561
|
def saveState(self, state):
|
559
|
-
self.state
|
560
|
-
|
562
|
+
if self.state != state:
|
563
|
+
self.state = state
|
564
|
+
return super(MediaItem, self).save()
|
565
|
+
return True
|
561
566
|
|
562
567
|
def save(self, *args, **kwargs):
|
563
568
|
if self.pk is None:
|
rest/__init__.py
CHANGED
rest/models/base.py
CHANGED
@@ -881,6 +881,15 @@ class RestModel(object):
|
|
881
881
|
response_params=dict(graph=graph),
|
882
882
|
**cls.getGraph(graph))
|
883
883
|
|
884
|
+
@classmethod
|
885
|
+
def restListSort(cls, request, qset):
|
886
|
+
from rest.serializers.collection import sort_list
|
887
|
+
sort = request.DATA.get("sort", getattr(cls.RestMeta, "DEFAULT_SORT", "-id"))
|
888
|
+
sort = request.DATA.get("sort")
|
889
|
+
if sort:
|
890
|
+
qset, sort_args = sort_list(qset, sort)
|
891
|
+
return qset
|
892
|
+
|
884
893
|
@classmethod
|
885
894
|
def toList(cls, qset, graph=None, totals=None, request=None):
|
886
895
|
if request is None:
|
wiki/models/page.py
CHANGED
@@ -176,6 +176,8 @@ class Page(dm.Model, rm.RestModel, rm.MetaDataModel):
|
|
176
176
|
|
177
177
|
@classmethod
|
178
178
|
def on_rest_list_ready(cls, request, qset=None):
|
179
|
+
# need to first sort our list
|
180
|
+
qset = cls.restListSort(request, qset)
|
179
181
|
out = []
|
180
182
|
for page in qset:
|
181
183
|
if page.on_rest_can_get(request):
|
File without changes
|
File without changes
|