slthcore 0.5.7__tar.gz → 0.5.8__tar.gz

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.

Potentially problematic release.


This version of slthcore might be problematic. Click here for more details.

Files changed (129) hide show
  1. {slthcore-0.5.7/slthcore.egg-info → slthcore-0.5.8}/PKG-INFO +1 -1
  2. {slthcore-0.5.7 → slthcore-0.5.8}/setup.py +1 -1
  3. {slthcore-0.5.7 → slthcore-0.5.8}/slth/application.py +18 -8
  4. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/__init__.py +10 -1
  5. {slthcore-0.5.7 → slthcore-0.5.8}/slth/queryset.py +5 -0
  6. {slthcore-0.5.7 → slthcore-0.5.8}/slth/serializer.py +1 -0
  7. slthcore-0.5.8/slth/static/js/slth.min.js +270 -0
  8. {slthcore-0.5.7 → slthcore-0.5.8/slthcore.egg-info}/PKG-INFO +1 -1
  9. slthcore-0.5.7/slth/static/js/slth.min.js +0 -270
  10. {slthcore-0.5.7 → slthcore-0.5.8}/MANIFEST.in +0 -0
  11. {slthcore-0.5.7 → slthcore-0.5.8}/setup.cfg +0 -0
  12. {slthcore-0.5.7 → slthcore-0.5.8}/slth/__init__.py +0 -0
  13. {slthcore-0.5.7 → slthcore-0.5.8}/slth/apps.py +0 -0
  14. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/configure/__main__.py +0 -0
  15. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/__main__.py +0 -0
  16. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/__pycache__/__main__.cpython-312.pyc +0 -0
  17. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/.DS_Store +0 -0
  18. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/.gitignore +0 -0
  19. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/__init__.py +0 -0
  20. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/asgi.py +0 -0
  21. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/endpoints/__init__.py +0 -0
  22. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/models.py +0 -0
  23. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/settings.py +0 -0
  24. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/tests.py +0 -0
  25. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/urls.py +0 -0
  26. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/wsgi.py +0 -0
  27. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/entrypoint.sh +0 -0
  28. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/manage.py +0 -0
  29. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/requirements.txt +0 -0
  30. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/base.env +0 -0
  31. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/docker-compose.yml +0 -0
  32. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/frontend/package.json +0 -0
  33. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/frontend/src/main.jsx +0 -0
  34. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/frontend/vite.config.js +0 -0
  35. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/local.env +0 -0
  36. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/run.sh +0 -0
  37. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/selenium/run.sh +0 -0
  38. {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/test.sh +0 -0
  39. {slthcore-0.5.7 → slthcore-0.5.8}/slth/components.py +0 -0
  40. {slthcore-0.5.7 → slthcore-0.5.8}/slth/db/__init__.py +0 -0
  41. {slthcore-0.5.7 → slthcore-0.5.8}/slth/db/generic.py +0 -0
  42. {slthcore-0.5.7 → slthcore-0.5.8}/slth/db/models.py +0 -0
  43. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/auth.py +0 -0
  44. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/deletion.py +0 -0
  45. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/dev.py +0 -0
  46. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/email.py +0 -0
  47. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/job.py +0 -0
  48. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/log.py +0 -0
  49. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/profile.py +0 -0
  50. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/pushsubscription.py +0 -0
  51. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/report.py +0 -0
  52. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/role.py +0 -0
  53. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/settings.py +0 -0
  54. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/task.py +0 -0
  55. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/timezone.py +0 -0
  56. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/user.py +0 -0
  57. {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/whatsappnotification.py +0 -0
  58. {slthcore-0.5.7 → slthcore-0.5.8}/slth/exceptions.py +0 -0
  59. {slthcore-0.5.7 → slthcore-0.5.8}/slth/factory.py +0 -0
  60. {slthcore-0.5.7 → slthcore-0.5.8}/slth/forms.py +0 -0
  61. {slthcore-0.5.7 → slthcore-0.5.8}/slth/geo/__init__.py +0 -0
  62. {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/__init__.py +0 -0
  63. {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/deepseek/__init__.py +0 -0
  64. {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/google/__init__.py +0 -0
  65. {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/google/gemini.py +0 -0
  66. {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/google/places.py +0 -0
  67. {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/google/vision.py +0 -0
  68. {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/justvoip/__init__.py +0 -0
  69. {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/mercadopago/__init__.py +0 -0
  70. {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/openai/__init__.py +0 -0
  71. {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/openai/chatgpt.py +0 -0
  72. {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/viacep/__init__.py +0 -0
  73. {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/whatsapp/__init__.py +0 -0
  74. {slthcore-0.5.7 → slthcore-0.5.8}/slth/management/__init__.py +0 -0
  75. {slthcore-0.5.7 → slthcore-0.5.8}/slth/management/commands/__init__.py +0 -0
  76. {slthcore-0.5.7 → slthcore-0.5.8}/slth/management/commands/api.py +0 -0
  77. {slthcore-0.5.7 → slthcore-0.5.8}/slth/management/commands/integration_test.py +0 -0
  78. {slthcore-0.5.7 → slthcore-0.5.8}/slth/management/commands/sync.py +0 -0
  79. {slthcore-0.5.7 → slthcore-0.5.8}/slth/management/commands/worker.py +0 -0
  80. {slthcore-0.5.7 → slthcore-0.5.8}/slth/middleware/__init__.py +0 -0
  81. {slthcore-0.5.7 → slthcore-0.5.8}/slth/middleware/timezone.py +0 -0
  82. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0001_initial.py +0 -0
  83. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0002_email_role_pushsubscription_error.py +0 -0
  84. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0003_rename_photo_profile_alter_profile_options.py +0 -0
  85. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0004_alter_profile_photo.py +0 -0
  86. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0005_alter_profile_photo.py +0 -0
  87. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0006_user.py +0 -0
  88. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0007_deletion_log.py +0 -0
  89. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0008_alter_deletion_datetime_alter_log_datetime.py +0 -0
  90. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0009_remove_email_from_email_email_action_email_attempt_and_more.py +0 -0
  91. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0010_email_key_alter_email_action_alter_email_attempt_and_more.py +0 -0
  92. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0011_usertimezone.py +0 -0
  93. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0012_timezone_remove_usertimezone_key_and_more.py +0 -0
  94. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0013_whatsappnotification.py +0 -0
  95. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0014_settings.py +0 -0
  96. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0015_auto_20250412_1126.py +0 -0
  97. {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/__init__.py +0 -0
  98. {slthcore-0.5.7 → slthcore-0.5.8}/slth/models.py +0 -0
  99. {slthcore-0.5.7 → slthcore-0.5.8}/slth/notifications.py +0 -0
  100. {slthcore-0.5.7 → slthcore-0.5.8}/slth/oauth.py +0 -0
  101. {slthcore-0.5.7 → slthcore-0.5.8}/slth/pdf/__init__.py +0 -0
  102. {slthcore-0.5.7 → slthcore-0.5.8}/slth/pdf/tests.py +0 -0
  103. {slthcore-0.5.7 → slthcore-0.5.8}/slth/permissions.py +0 -0
  104. {slthcore-0.5.7 → slthcore-0.5.8}/slth/printer.py +0 -0
  105. {slthcore-0.5.7 → slthcore-0.5.8}/slth/roles.py +0 -0
  106. {slthcore-0.5.7 → slthcore-0.5.8}/slth/selenium/__init__.py +0 -0
  107. {slthcore-0.5.7 → slthcore-0.5.8}/slth/selenium/browser.py +0 -0
  108. {slthcore-0.5.7 → slthcore-0.5.8}/slth/static/.DS_Store +0 -0
  109. {slthcore-0.5.7 → slthcore-0.5.8}/slth/static/css/.DS_Store +0 -0
  110. {slthcore-0.5.7 → slthcore-0.5.8}/slth/static/css/slth.css +0 -0
  111. {slthcore-0.5.7 → slthcore-0.5.8}/slth/static/images/placeholder.png +0 -0
  112. {slthcore-0.5.7 → slthcore-0.5.8}/slth/static/js/index.min.js +0 -0
  113. {slthcore-0.5.7 → slthcore-0.5.8}/slth/static/js/react.min.js +0 -0
  114. {slthcore-0.5.7 → slthcore-0.5.8}/slth/statistics.py +0 -0
  115. {slthcore-0.5.7 → slthcore-0.5.8}/slth/tasks.py +0 -0
  116. {slthcore-0.5.7 → slthcore-0.5.8}/slth/templates/email.html +0 -0
  117. {slthcore-0.5.7 → slthcore-0.5.8}/slth/templates/index.html +0 -0
  118. {slthcore-0.5.7 → slthcore-0.5.8}/slth/templates/report.html +0 -0
  119. {slthcore-0.5.7 → slthcore-0.5.8}/slth/templates/service-worker.js +0 -0
  120. {slthcore-0.5.7 → slthcore-0.5.8}/slth/templates/signature.html +0 -0
  121. {slthcore-0.5.7 → slthcore-0.5.8}/slth/tests.py +0 -0
  122. {slthcore-0.5.7 → slthcore-0.5.8}/slth/threadlocal.py +0 -0
  123. {slthcore-0.5.7 → slthcore-0.5.8}/slth/timezone.py +0 -0
  124. {slthcore-0.5.7 → slthcore-0.5.8}/slth/urls.py +0 -0
  125. {slthcore-0.5.7 → slthcore-0.5.8}/slth/utils.py +0 -0
  126. {slthcore-0.5.7 → slthcore-0.5.8}/slth/views.py +0 -0
  127. {slthcore-0.5.7 → slthcore-0.5.8}/slthcore.egg-info/SOURCES.txt +0 -0
  128. {slthcore-0.5.7 → slthcore-0.5.8}/slthcore.egg-info/dependency_links.txt +0 -0
  129. {slthcore-0.5.7 → slthcore-0.5.8}/slthcore.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: slthcore
3
- Version: 0.5.7
3
+ Version: 0.5.8
4
4
  Summary: API generator based on yml file
5
5
  Home-page: https://github.com/brenokcc
6
6
  Author: Breno Silva
@@ -4,7 +4,7 @@ install_requires = []
4
4
 
5
5
  setup(
6
6
  name='slthcore',
7
- version='0.5.7',
7
+ version='0.5.8',
8
8
  packages=find_packages(),
9
9
  install_requires=install_requires,
10
10
  include_package_data=True,
@@ -206,17 +206,26 @@ class Application(metaclass=ApplicationMetaclass):
206
206
  photo = profile and profile.photo and build_url(request, profile.photo.url) or None
207
207
  else:
208
208
  user = profile = photo = None
209
+
210
+ def contribute(endpoint_list, endpoint_name):
211
+ cls = ENDPOINTS[endpoint_name]
212
+ endpoint = cls().instantiate(request, None)
213
+ if endpoint.check_permission() and endpoint.contribute(entrypoint):
214
+ name = endpoint.get_verbose_name()
215
+ url = build_url(request, cls.get_api_url())
216
+ modal = cls.get_metadata("modal", False)
217
+ icon = cls.get_metadata("icon", None)
218
+ endpoint_list.append(dict(name=name, url=url, modal=modal, icon=icon))
219
+
209
220
  endpoints = {"actions": [], "usermenu": [], "adder": [], "settings": [], "tools": [], "toolbar": []}
210
221
  for entrypoint in endpoints:
211
222
  for endpoint_name in getattr(self.dashboard, entrypoint):
212
- cls = ENDPOINTS[endpoint_name]
213
- endpoint = cls().instantiate(request, None)
214
- if endpoint.check_permission() and endpoint.contribute(entrypoint):
215
- name = endpoint.get_verbose_name()
216
- url = build_url(request, cls.get_api_url())
217
- modal = cls.get_metadata("modal", False)
218
- icon = cls.get_metadata("icon", None)
219
- endpoints[entrypoint].append(dict(name=name, url=url, modal=modal, icon=icon))
223
+ contribute(endpoints[entrypoint], endpoint_name)
224
+
225
+ top = []
226
+ for endpoint_name in self.dashboard.top:
227
+ contribute(top, endpoint_name)
228
+
220
229
  return dict(
221
230
  type="application",
222
231
  icon=icon,
@@ -229,6 +238,7 @@ class Application(metaclass=ApplicationMetaclass):
229
238
  footer=dict(
230
239
  type="footer", version=self.version
231
240
  ),
241
+ top=top,
232
242
  oauth=self.oauth.serialize(),
233
243
  sponsors=self.sponsors
234
244
  )
@@ -364,6 +364,9 @@ class QuerySetEndpoint(Generic[T], ModelEndpoint):
364
364
  modal = False
365
365
 
366
366
  def get(self) -> QuerySet:
367
+ return self.get_queryset()
368
+
369
+ def get_queryset(self):
367
370
  return self.model.objects.contextualize(self.request)
368
371
 
369
372
  def get_verbose_name(self):
@@ -375,6 +378,9 @@ class ListEndpoint(Generic[T], ModelEndpoint):
375
378
  modal = False
376
379
 
377
380
  def get(self) -> QuerySet:
381
+ return self.get_queryset()
382
+
383
+ def get_queryset(self):
378
384
  return self.model.objects.all().contextualize(self.request).actions(*self.get_default_actions())
379
385
 
380
386
  def get_verbose_name(self):
@@ -407,7 +413,7 @@ class AddEndpoint(Generic[T], ModelEndpoint):
407
413
  return self.instance.formfactory()
408
414
 
409
415
  def get_verbose_name(self):
410
- return f'Cadastrar {self.model._meta.verbose_name}'
416
+ return getattr(self.Meta, 'verbose_name', f'Cadastrar {self.model._meta.verbose_name}')
411
417
 
412
418
 
413
419
  class ModelInstanceEndpoint(ModelEndpoint):
@@ -417,6 +423,9 @@ class ModelInstanceEndpoint(ModelEndpoint):
417
423
 
418
424
  def get_instance(self):
419
425
  return self.instance
426
+
427
+ def check_instance(self):
428
+ return self.model.objects.all().filter(pk=self.instance.pk).apply_lookups(self.request.user).exists()
420
429
 
421
430
 
422
431
  class InstanceEndpoint(Generic[T], ModelInstanceEndpoint):
@@ -156,6 +156,11 @@ class QuerySet(models.QuerySet):
156
156
  self.metadata['lookups'] = {}
157
157
  self.metadata['lookups'][role_name] = lookups
158
158
  return self
159
+
160
+ def nolookup(self):
161
+ if 'lookups' in self.metadata:
162
+ self.metadata['lookups'].clear()
163
+ return self
159
164
 
160
165
  def apply_lookups(self, user):
161
166
  from . import permissions
@@ -411,6 +411,7 @@ class Serializer:
411
411
  action = endpoint.get_api_metadata(self.request, base_url, self.obj.pk)
412
412
  else:
413
413
  action = endpoint.get_api_metadata(self.request, base_url)
414
+ action.update(counter=endpoint.get_queryset().apply_lookups(self.request.user).count())
414
415
  todo.append(action)
415
416
  output = dict(type=self.type, title=self.title if self.show_title else None)
416
417
  if info: