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.
- {slthcore-0.5.7/slthcore.egg-info → slthcore-0.5.8}/PKG-INFO +1 -1
- {slthcore-0.5.7 → slthcore-0.5.8}/setup.py +1 -1
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/application.py +18 -8
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/__init__.py +10 -1
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/queryset.py +5 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/serializer.py +1 -0
- slthcore-0.5.8/slth/static/js/slth.min.js +270 -0
- {slthcore-0.5.7 → slthcore-0.5.8/slthcore.egg-info}/PKG-INFO +1 -1
- slthcore-0.5.7/slth/static/js/slth.min.js +0 -270
- {slthcore-0.5.7 → slthcore-0.5.8}/MANIFEST.in +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/setup.cfg +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/apps.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/configure/__main__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/__main__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/__pycache__/__main__.cpython-312.pyc +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/.DS_Store +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/.gitignore +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/asgi.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/endpoints/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/models.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/settings.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/tests.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/urls.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/api/wsgi.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/entrypoint.sh +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/manage.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/backend/requirements.txt +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/base.env +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/docker-compose.yml +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/frontend/package.json +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/frontend/src/main.jsx +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/frontend/vite.config.js +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/local.env +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/run.sh +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/selenium/run.sh +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/cmd/init/boilerplate/test.sh +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/components.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/db/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/db/generic.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/db/models.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/auth.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/deletion.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/dev.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/email.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/job.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/log.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/profile.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/pushsubscription.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/report.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/role.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/settings.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/task.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/timezone.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/user.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/endpoints/whatsappnotification.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/exceptions.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/factory.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/forms.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/geo/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/deepseek/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/google/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/google/gemini.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/google/places.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/google/vision.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/justvoip/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/mercadopago/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/openai/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/openai/chatgpt.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/viacep/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/integrations/whatsapp/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/management/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/management/commands/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/management/commands/api.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/management/commands/integration_test.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/management/commands/sync.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/management/commands/worker.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/middleware/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/middleware/timezone.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0001_initial.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0002_email_role_pushsubscription_error.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0003_rename_photo_profile_alter_profile_options.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0004_alter_profile_photo.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0005_alter_profile_photo.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0006_user.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0007_deletion_log.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0008_alter_deletion_datetime_alter_log_datetime.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0009_remove_email_from_email_email_action_email_attempt_and_more.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0010_email_key_alter_email_action_alter_email_attempt_and_more.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0011_usertimezone.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0012_timezone_remove_usertimezone_key_and_more.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0013_whatsappnotification.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0014_settings.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/0015_auto_20250412_1126.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/migrations/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/models.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/notifications.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/oauth.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/pdf/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/pdf/tests.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/permissions.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/printer.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/roles.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/selenium/__init__.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/selenium/browser.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/static/.DS_Store +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/static/css/.DS_Store +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/static/css/slth.css +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/static/images/placeholder.png +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/static/js/index.min.js +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/static/js/react.min.js +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/statistics.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/tasks.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/templates/email.html +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/templates/index.html +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/templates/report.html +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/templates/service-worker.js +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/templates/signature.html +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/tests.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/threadlocal.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/timezone.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/urls.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/utils.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slth/views.py +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slthcore.egg-info/SOURCES.txt +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slthcore.egg-info/dependency_links.txt +0 -0
- {slthcore-0.5.7 → slthcore-0.5.8}/slthcore.egg-info/top_level.txt +0 -0
|
@@ -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
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
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:
|