django-restit 4.2.132__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 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", 360)
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=["account.Member", "account.Group"]).delete()[0]
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=["account.Member", "account.Group"]).delete()[0]
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=["account.Member", "account.Group"]).delete()[0]
60
+ return PersistentLog.objects.filter(when__lte=before, component__in=ACCOUNT_LOG_COMPONENTS).delete()[0]
59
61
  return 0
60
62
 
61
63
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-restit
3
- Version: 4.2.132
3
+ Version: 4.2.134
4
4
  Summary: A Rest Framework for DJANGO
5
5
  License: MIT
6
6
  Author: Ian Starnes
@@ -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=VNRSD38mmTUCbq3cCSy3qRyquzeVEwW_8zzrtS0-vAA,1817
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=OgzJVspWI6FL92GEhDPtabYoP_Hd3zGNh0E297abz3Y,2415
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
@@ -172,8 +172,9 @@ medialib/fixtures/medialib.json,sha256=Q2-30qjHI6gfHIT-8qsz8_WjL_ldrWIUIOKmJR9eJ
172
172
  medialib/fixtures/medialib_test_fixture.json,sha256=7M7zvGI2S5G3ENV8OQ3Ks4149lEiQ-bjH3nCFLwwRFo,16989
173
173
  medialib/forms.py,sha256=nrE6QTPNPiIeX7Nx4l9DEmAQeQXqFyCg1C3JEDBYJfE,5442
174
174
  medialib/migrations/0001_initial.py,sha256=H3JliH5aw7tiHef8MhrJr_9rGetqgA7UjTF-eKziRSM,20518
175
+ medialib/migrations/0002_alter_mediaitemrendition_bytes.py,sha256=igC1R02smbNoWlk2T4uCi9cNilOsxGKD-D24fQv92dM,414
175
176
  medialib/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
176
- medialib/models.py,sha256=snD9Lyskp6i1YTOcERrclPUPIbINkGOhGOTbDKC8dFk,54791
177
+ medialib/models.py,sha256=hBq-xyUZB0X0TpYmywmMCuLFrOK4Su-zRfSGD1ULvk8,54995
177
178
  medialib/ocr.py,sha256=zlP7-NBiXhW7jR9pljmEPl5xzLVZpLN5QLAELQgU0Fk,1189
178
179
  medialib/pdf.py,sha256=l28WwM0JKbT9boV-b_9TFh9jhvGcrquR8GqC8wfEaLk,1275
179
180
  medialib/qrcode.py,sha256=vHyA5egXOX70EFiUDgr1njI9zcF6bXQJ_hKAQrppRow,545
@@ -376,7 +377,7 @@ pushit/utils.py,sha256=IeTCGa-164nmB1jIsK1lu1O1QzUhS3BKfuXHGjCW-ck,2121
376
377
  rest/.gitignore,sha256=TbEvWRMnAiajCTOdhiNrd9eeCAaIjRp9PRjE_VkMM5g,118
377
378
  rest/README.md,sha256=V3ETc-cJu8PZIbKr9xSe_pA4JEUpC8Dhw4bQeVCDJPw,5460
378
379
  rest/RemoteEvents.py,sha256=nL46U7AuxIrlw2JunphR1tsXyqi-ep_gD9CYGpYbNgE,72
379
- rest/__init__.py,sha256=-RkqJ1C1aVmCpKUVK79846yJzPNqTf7-orNjsU35Rjo,122
380
+ rest/__init__.py,sha256=YSY8pyO-bS3rDXGxnPSjIFrfIY1b-rATlrQzmmOQlMc,122
380
381
  rest/arc4.py,sha256=y644IbF1ec--e4cUJ3KEYsewTCITK0gmlwa5mJruFC0,1967
381
382
  rest/cache.py,sha256=1Qg0rkaCJCaVP0-l5hZg2CIblTdeBSlj_0fP6vlKUpU,83
382
383
  rest/crypto/__init__.py,sha256=Tl0U11rgj1eBYqd6OXJ2_XSdNLumW_JkBZnaJqI6Ldw,72
@@ -409,7 +410,7 @@ rest/middleware/request.py,sha256=JchRNy5L-bGd-7h-KFYekGRvREe2eCkZXKOYqIkP2hI,41
409
410
  rest/middleware/session.py,sha256=zHSoQpIzRLmpqr_JvW406wzpvU3W3gDbm5JhtzLAMlE,10240
410
411
  rest/middleware/session_store.py,sha256=1nSdeXK8PyuYgGgIufqrS6j6QpIrQ7zbMNT0ol75e6U,1901
411
412
  rest/models/__init__.py,sha256=M8pvFDq-WCF-QcM58X7pMufYYe0aaQ3U0PwGe9TKbbY,130
412
- rest/models/base.py,sha256=dLgJcxDzSJDn8wsdZJaH7BkJDYTgkhnJX7-asolO6TA,70968
413
+ rest/models/base.py,sha256=asj1ehoq_LLcm99PbyICGG9I_GQikxilrc52tTs2YBY,71301
413
414
  rest/models/cacher.py,sha256=eKz8TINVhWEqKhJGMsRkKZTtBUIv5rN3NHbZwOC56Uk,578
414
415
  rest/models/metadata.py,sha256=1nQ7CYo9bJHoaXE_hVNaj1-Y7yqhHlf2ZlaD1IfTzic,12904
415
416
  rest/net.py,sha256=LcB2QV6VNRtsSdmiQvYZgwQUDwOPMn_VBdRiZ6OpI-I,2974
@@ -485,7 +486,7 @@ wiki/migrations/0003_page_perms.py,sha256=qJBLI7t5mgiDTKCR9qhticmbhgo2KKYq7WbHax
485
486
  wiki/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
486
487
  wiki/models/__init__.py,sha256=jE-9r_Hqpyo7ysKu9BschXOn5Zg34wUt894GwJpxA28,132
487
488
  wiki/models/faq.py,sha256=nvcEFerllQKT61kIYlasvZzRKwpXyfmQpiqkpHP1V1o,1745
488
- wiki/models/page.py,sha256=06wyZsDX57B-d_wZhSNcrNAOv-ERHlKveJ15MZc9haQ,8751
489
+ wiki/models/page.py,sha256=uIu-jVdf1Y9qXKbb5k15-8RLTltyTtoXobZJFcx8_0A,8836
489
490
  wiki/models/revision.py,sha256=St5-vz8SGvogsDL6jTWqHLE23PS5mp9iA0DUt3hWTsU,729
490
491
  wiki/periodic.py,sha256=t-UgXJIug-OLslJM_r03-5WrNKj39TxrvfuNFjVAhDs,334
491
492
  wiki/renderers/__init__.py,sha256=lLEoJvjU3ezXwBGcjleKk_kMyNeMD9MpfBlEiKayEiM,461
@@ -512,7 +513,7 @@ ws4redis/servers/uwsgi.py,sha256=VyhoCI1DnVFqBiJYHoxqn5Idlf6uJPHvfBKgkjs34mo,172
512
513
  ws4redis/settings.py,sha256=K0yBiLUuY81iDM4Yr-k8hbvjn5VVHu5zQhmMK8Dtz0s,1536
513
514
  ws4redis/utf8validator.py,sha256=S0OlfjeGRP75aO6CzZsF4oTjRQAgR17OWE9rgZdMBZA,5122
514
515
  ws4redis/websocket.py,sha256=R0TUyPsoVRD7Y_oU7w2I6NL4fPwiz5Vl94-fUkZgLHA,14848
515
- django_restit-4.2.132.dist-info/LICENSE.md,sha256=VHN4hhEeVOoFjtG-5fVv4jesA4SWi0Z-KgOzzN6a1ps,1068
516
- django_restit-4.2.132.dist-info/METADATA,sha256=NeQ9W-DZO4uEAlKI7xrNkeWyD8YQ60YuSsK3cxTsxjg,7663
517
- django_restit-4.2.132.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
518
- django_restit-4.2.132.dist-info/RECORD,,
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,,
@@ -0,0 +1,18 @@
1
+ # Generated by Django 4.1.5 on 2024-08-14 19:20
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('medialib', '0001_initial'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name='mediaitemrendition',
15
+ name='bytes',
16
+ field=models.BigIntegerField(help_text='Size of rendition file'),
17
+ ),
18
+ ]
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.new_render()
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 = state
560
- return super(MediaItem, self).save()
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:
@@ -1120,7 +1125,7 @@ class MediaItemRendition(models.Model):
1120
1125
  created = models.DateTimeField(auto_now_add=True, editable=False, help_text="When item was created")
1121
1126
  width = models.IntegerField(null=True, help_text="Width (if available)")
1122
1127
  height = models.IntegerField(null=True, help_text="Height (if available)")
1123
- bytes = models.IntegerField(help_text="Size of rendition file")
1128
+ bytes = models.BigIntegerField(help_text="Size of rendition file")
1124
1129
  kind = models.CharField(max_length=1, choices=RenditionKinds, help_text="Kind of rendition")
1125
1130
  is_original = models.BooleanField(default=False, help_text="Whether is original of kind")
1126
1131
 
rest/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
1
  from .uberdict import UberDict # noqa: F401
2
2
  from .settings_helper import settings # noqa: F401
3
3
 
4
- __version__ = "4.2.132"
4
+ __version__ = "4.2.134"
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):