slthcore 0.5.6__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 (130) hide show
  1. {slthcore-0.5.6/slthcore.egg-info → slthcore-0.5.8}/PKG-INFO +1 -1
  2. {slthcore-0.5.6 → slthcore-0.5.8}/setup.py +1 -1
  3. {slthcore-0.5.6 → slthcore-0.5.8}/slth/application.py +20 -9
  4. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/__init__.py +10 -1
  5. slthcore-0.5.8/slth/endpoints/role.py +18 -0
  6. {slthcore-0.5.6 → slthcore-0.5.8}/slth/queryset.py +5 -0
  7. {slthcore-0.5.6 → slthcore-0.5.8}/slth/serializer.py +1 -0
  8. slthcore-0.5.8/slth/static/js/slth.min.js +270 -0
  9. {slthcore-0.5.6 → slthcore-0.5.8/slthcore.egg-info}/PKG-INFO +1 -1
  10. slthcore-0.5.6/slth/endpoints/role.py +0 -6
  11. slthcore-0.5.6/slth/static/js/slth.min.js +0 -270
  12. {slthcore-0.5.6 → slthcore-0.5.8}/MANIFEST.in +0 -0
  13. {slthcore-0.5.6 → slthcore-0.5.8}/setup.cfg +0 -0
  14. {slthcore-0.5.6 → slthcore-0.5.8}/slth/__init__.py +0 -0
  15. {slthcore-0.5.6 → slthcore-0.5.8}/slth/apps.py +0 -0
  16. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/configure/__main__.py +0 -0
  17. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/__main__.py +0 -0
  18. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/__pycache__/__main__.cpython-312.pyc +0 -0
  19. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/.DS_Store +0 -0
  20. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/.gitignore +0 -0
  21. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/__init__.py +0 -0
  22. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/asgi.py +0 -0
  23. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/endpoints/__init__.py +0 -0
  24. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/models.py +0 -0
  25. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/settings.py +0 -0
  26. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/tests.py +0 -0
  27. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/urls.py +0 -0
  28. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/wsgi.py +0 -0
  29. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/entrypoint.sh +0 -0
  30. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/manage.py +0 -0
  31. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/requirements.txt +0 -0
  32. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/base.env +0 -0
  33. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/docker-compose.yml +0 -0
  34. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/frontend/package.json +0 -0
  35. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/frontend/src/main.jsx +0 -0
  36. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/frontend/vite.config.js +0 -0
  37. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/local.env +0 -0
  38. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/run.sh +0 -0
  39. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/selenium/run.sh +0 -0
  40. {slthcore-0.5.6 → slthcore-0.5.8}/slth/cmd/init/boilerplate/test.sh +0 -0
  41. {slthcore-0.5.6 → slthcore-0.5.8}/slth/components.py +0 -0
  42. {slthcore-0.5.6 → slthcore-0.5.8}/slth/db/__init__.py +0 -0
  43. {slthcore-0.5.6 → slthcore-0.5.8}/slth/db/generic.py +0 -0
  44. {slthcore-0.5.6 → slthcore-0.5.8}/slth/db/models.py +0 -0
  45. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/auth.py +0 -0
  46. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/deletion.py +0 -0
  47. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/dev.py +0 -0
  48. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/email.py +0 -0
  49. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/job.py +0 -0
  50. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/log.py +0 -0
  51. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/profile.py +0 -0
  52. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/pushsubscription.py +0 -0
  53. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/report.py +0 -0
  54. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/settings.py +0 -0
  55. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/task.py +0 -0
  56. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/timezone.py +0 -0
  57. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/user.py +0 -0
  58. {slthcore-0.5.6 → slthcore-0.5.8}/slth/endpoints/whatsappnotification.py +0 -0
  59. {slthcore-0.5.6 → slthcore-0.5.8}/slth/exceptions.py +0 -0
  60. {slthcore-0.5.6 → slthcore-0.5.8}/slth/factory.py +0 -0
  61. {slthcore-0.5.6 → slthcore-0.5.8}/slth/forms.py +0 -0
  62. {slthcore-0.5.6 → slthcore-0.5.8}/slth/geo/__init__.py +0 -0
  63. {slthcore-0.5.6 → slthcore-0.5.8}/slth/integrations/__init__.py +0 -0
  64. {slthcore-0.5.6 → slthcore-0.5.8}/slth/integrations/deepseek/__init__.py +0 -0
  65. {slthcore-0.5.6 → slthcore-0.5.8}/slth/integrations/google/__init__.py +0 -0
  66. {slthcore-0.5.6 → slthcore-0.5.8}/slth/integrations/google/gemini.py +0 -0
  67. {slthcore-0.5.6 → slthcore-0.5.8}/slth/integrations/google/places.py +0 -0
  68. {slthcore-0.5.6 → slthcore-0.5.8}/slth/integrations/google/vision.py +0 -0
  69. {slthcore-0.5.6 → slthcore-0.5.8}/slth/integrations/justvoip/__init__.py +0 -0
  70. {slthcore-0.5.6 → slthcore-0.5.8}/slth/integrations/mercadopago/__init__.py +0 -0
  71. {slthcore-0.5.6 → slthcore-0.5.8}/slth/integrations/openai/__init__.py +0 -0
  72. {slthcore-0.5.6 → slthcore-0.5.8}/slth/integrations/openai/chatgpt.py +0 -0
  73. {slthcore-0.5.6 → slthcore-0.5.8}/slth/integrations/viacep/__init__.py +0 -0
  74. {slthcore-0.5.6 → slthcore-0.5.8}/slth/integrations/whatsapp/__init__.py +0 -0
  75. {slthcore-0.5.6 → slthcore-0.5.8}/slth/management/__init__.py +0 -0
  76. {slthcore-0.5.6 → slthcore-0.5.8}/slth/management/commands/__init__.py +0 -0
  77. {slthcore-0.5.6 → slthcore-0.5.8}/slth/management/commands/api.py +0 -0
  78. {slthcore-0.5.6 → slthcore-0.5.8}/slth/management/commands/integration_test.py +0 -0
  79. {slthcore-0.5.6 → slthcore-0.5.8}/slth/management/commands/sync.py +0 -0
  80. {slthcore-0.5.6 → slthcore-0.5.8}/slth/management/commands/worker.py +0 -0
  81. {slthcore-0.5.6 → slthcore-0.5.8}/slth/middleware/__init__.py +0 -0
  82. {slthcore-0.5.6 → slthcore-0.5.8}/slth/middleware/timezone.py +0 -0
  83. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0001_initial.py +0 -0
  84. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0002_email_role_pushsubscription_error.py +0 -0
  85. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0003_rename_photo_profile_alter_profile_options.py +0 -0
  86. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0004_alter_profile_photo.py +0 -0
  87. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0005_alter_profile_photo.py +0 -0
  88. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0006_user.py +0 -0
  89. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0007_deletion_log.py +0 -0
  90. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0008_alter_deletion_datetime_alter_log_datetime.py +0 -0
  91. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0009_remove_email_from_email_email_action_email_attempt_and_more.py +0 -0
  92. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0010_email_key_alter_email_action_alter_email_attempt_and_more.py +0 -0
  93. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0011_usertimezone.py +0 -0
  94. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0012_timezone_remove_usertimezone_key_and_more.py +0 -0
  95. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0013_whatsappnotification.py +0 -0
  96. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0014_settings.py +0 -0
  97. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/0015_auto_20250412_1126.py +0 -0
  98. {slthcore-0.5.6 → slthcore-0.5.8}/slth/migrations/__init__.py +0 -0
  99. {slthcore-0.5.6 → slthcore-0.5.8}/slth/models.py +0 -0
  100. {slthcore-0.5.6 → slthcore-0.5.8}/slth/notifications.py +0 -0
  101. {slthcore-0.5.6 → slthcore-0.5.8}/slth/oauth.py +0 -0
  102. {slthcore-0.5.6 → slthcore-0.5.8}/slth/pdf/__init__.py +0 -0
  103. {slthcore-0.5.6 → slthcore-0.5.8}/slth/pdf/tests.py +0 -0
  104. {slthcore-0.5.6 → slthcore-0.5.8}/slth/permissions.py +0 -0
  105. {slthcore-0.5.6 → slthcore-0.5.8}/slth/printer.py +0 -0
  106. {slthcore-0.5.6 → slthcore-0.5.8}/slth/roles.py +0 -0
  107. {slthcore-0.5.6 → slthcore-0.5.8}/slth/selenium/__init__.py +0 -0
  108. {slthcore-0.5.6 → slthcore-0.5.8}/slth/selenium/browser.py +0 -0
  109. {slthcore-0.5.6 → slthcore-0.5.8}/slth/static/.DS_Store +0 -0
  110. {slthcore-0.5.6 → slthcore-0.5.8}/slth/static/css/.DS_Store +0 -0
  111. {slthcore-0.5.6 → slthcore-0.5.8}/slth/static/css/slth.css +0 -0
  112. {slthcore-0.5.6 → slthcore-0.5.8}/slth/static/images/placeholder.png +0 -0
  113. {slthcore-0.5.6 → slthcore-0.5.8}/slth/static/js/index.min.js +0 -0
  114. {slthcore-0.5.6 → slthcore-0.5.8}/slth/static/js/react.min.js +0 -0
  115. {slthcore-0.5.6 → slthcore-0.5.8}/slth/statistics.py +0 -0
  116. {slthcore-0.5.6 → slthcore-0.5.8}/slth/tasks.py +0 -0
  117. {slthcore-0.5.6 → slthcore-0.5.8}/slth/templates/email.html +0 -0
  118. {slthcore-0.5.6 → slthcore-0.5.8}/slth/templates/index.html +0 -0
  119. {slthcore-0.5.6 → slthcore-0.5.8}/slth/templates/report.html +0 -0
  120. {slthcore-0.5.6 → slthcore-0.5.8}/slth/templates/service-worker.js +0 -0
  121. {slthcore-0.5.6 → slthcore-0.5.8}/slth/templates/signature.html +0 -0
  122. {slthcore-0.5.6 → slthcore-0.5.8}/slth/tests.py +0 -0
  123. {slthcore-0.5.6 → slthcore-0.5.8}/slth/threadlocal.py +0 -0
  124. {slthcore-0.5.6 → slthcore-0.5.8}/slth/timezone.py +0 -0
  125. {slthcore-0.5.6 → slthcore-0.5.8}/slth/urls.py +0 -0
  126. {slthcore-0.5.6 → slthcore-0.5.8}/slth/utils.py +0 -0
  127. {slthcore-0.5.6 → slthcore-0.5.8}/slth/views.py +0 -0
  128. {slthcore-0.5.6 → slthcore-0.5.8}/slthcore.egg-info/SOURCES.txt +0 -0
  129. {slthcore-0.5.6 → slthcore-0.5.8}/slthcore.egg-info/dependency_links.txt +0 -0
  130. {slthcore-0.5.6 → 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.6
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.6',
7
+ version='0.5.8',
8
8
  packages=find_packages(),
9
9
  install_requires=install_requires,
10
10
  include_package_data=True,
@@ -191,6 +191,7 @@ class Application(metaclass=ApplicationMetaclass):
191
191
  self.menu:Menu = Menu()
192
192
  self.dashboard = Dashboard()
193
193
  self.theme:Theme = Theme()
194
+ self.sponsors:List = List()
194
195
 
195
196
  def load(self):
196
197
  pass
@@ -205,17 +206,26 @@ class Application(metaclass=ApplicationMetaclass):
205
206
  photo = profile and profile.photo and build_url(request, profile.photo.url) or None
206
207
  else:
207
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
+
208
220
  endpoints = {"actions": [], "usermenu": [], "adder": [], "settings": [], "tools": [], "toolbar": []}
209
221
  for entrypoint in endpoints:
210
222
  for endpoint_name in getattr(self.dashboard, entrypoint):
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
- 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
+
219
229
  return dict(
220
230
  type="application",
221
231
  icon=icon,
@@ -228,8 +238,9 @@ class Application(metaclass=ApplicationMetaclass):
228
238
  footer=dict(
229
239
  type="footer", version=self.version
230
240
  ),
241
+ top=top,
231
242
  oauth=self.oauth.serialize(),
232
- sponsors=[]
243
+ sponsors=self.sponsors
233
244
  )
234
245
 
235
246
  @staticmethod
@@ -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):
@@ -0,0 +1,18 @@
1
+ from . import ListEndpoint, DeleteEndpoint
2
+ from ..models import Role
3
+
4
+
5
+ class Roles(ListEndpoint[Role]):
6
+ def get(self):
7
+ return super().get().actions('role.delete')
8
+
9
+
10
+ class Delete(DeleteEndpoint[Role]):
11
+ class Meta:
12
+ icon = 'x'
13
+ verbose_name = 'Excluir Papel'
14
+
15
+ def get(self):
16
+ return (
17
+ super().get()
18
+ )
@@ -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: