slthcore 0.3.1__tar.gz → 0.3.2__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.3.1/slthcore.egg-info → slthcore-0.3.2}/PKG-INFO +1 -1
- {slthcore-0.3.1 → slthcore-0.3.2}/setup.py +1 -1
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/components.py +9 -1
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/endpoints/__init__.py +6 -1
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/models.py +12 -1
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/queryset.py +5 -1
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/static/js/slth.min.js +18 -18
- {slthcore-0.3.1 → slthcore-0.3.2/slthcore.egg-info}/PKG-INFO +1 -1
- {slthcore-0.3.1 → slthcore-0.3.2}/MANIFEST.in +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/setup.cfg +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/__init__.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/apps.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/configure/__main__.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/__main__.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/__pycache__/__main__.cpython-312.pyc +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/.DS_Store +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/.gitignore +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/backend/api/__init__.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/backend/api/asgi.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/backend/api/endpoints/__init__.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/backend/api/models.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/backend/api/settings.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/backend/api/tests.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/backend/api/urls.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/backend/api/wsgi.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/backend/application.yml +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/backend/entrypoint.sh +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/backend/manage.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/backend/requirements.txt +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/base.env +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/docker-compose.yml +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/frontend/package.json +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/frontend/src/main.jsx +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/frontend/vite.config.js +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/local.env +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/run.sh +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/selenium/run.sh +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/cmd/init/boilerplate/test.sh +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/db/__init__.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/db/generic.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/db/models.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/endpoints/auth.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/endpoints/deletion.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/endpoints/dev.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/endpoints/email.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/endpoints/job.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/endpoints/log.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/endpoints/profile.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/endpoints/pushsubscription.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/endpoints/report.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/endpoints/role.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/endpoints/task.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/endpoints/user.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/exceptions.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/factory.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/forms.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/management/__init__.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/management/commands/__init__.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/management/commands/integration_test.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/management/commands/sync.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/management/commands/worker.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/middleware/__init__.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/middleware/timezone.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/migrations/0001_initial.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/migrations/0002_email_role_pushsubscription_error.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/migrations/0003_rename_photo_profile_alter_profile_options.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/migrations/0004_alter_profile_photo.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/migrations/0005_alter_profile_photo.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/migrations/0006_user.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/migrations/0007_deletion_log.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/migrations/0008_alter_deletion_datetime_alter_log_datetime.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/migrations/0009_remove_email_from_email_email_action_email_attempt_and_more.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/migrations/0010_email_key_alter_email_action_alter_email_attempt_and_more.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/migrations/__init__.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/notifications.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/oauth.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/pdf/__init__.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/pdf/tests.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/permissions.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/printer.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/roles.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/selenium/__init__.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/selenium/browser.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/serializer.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/static/.DS_Store +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/static/css/.DS_Store +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/static/css/slth.css +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/static/js/index.min.js +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/static/js/react.min.js +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/statistics.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/tasks.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/templates/email.html +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/templates/index.html +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/templates/report.html +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/templates/service-worker.js +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/templates/signature.html +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/tests.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/threadlocal.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/urls.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/utils.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slth/views.py +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slthcore.egg-info/SOURCES.txt +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slthcore.egg-info/dependency_links.txt +0 -0
- {slthcore-0.3.1 → slthcore-0.3.2}/slthcore.egg-info/top_level.txt +0 -0
|
@@ -169,6 +169,13 @@ class Table(dict):
|
|
|
169
169
|
)
|
|
170
170
|
|
|
171
171
|
|
|
172
|
+
class HtmlContent(dict):
|
|
173
|
+
def __init__(self, content, autoreload=None):
|
|
174
|
+
self["type"] = "html"
|
|
175
|
+
self["content"] = content
|
|
176
|
+
self["autoreload"] = autoreload * 1000 if autoreload else None
|
|
177
|
+
|
|
178
|
+
|
|
172
179
|
class TemplateContent(dict):
|
|
173
180
|
def __init__(self, name, context, autoreload=None):
|
|
174
181
|
self["type"] = "html"
|
|
@@ -217,12 +224,13 @@ class ZoomMeet(dict):
|
|
|
217
224
|
|
|
218
225
|
|
|
219
226
|
class Navbar(dict):
|
|
220
|
-
def __init__(self, title, subtitle=None, logo=None, user=None, search=False, roles=None):
|
|
227
|
+
def __init__(self, title, subtitle=None, logo=None, user=None, photo=None, search=False, roles=None):
|
|
221
228
|
self["type"] = "navbar"
|
|
222
229
|
self["title"] = title
|
|
223
230
|
self["subtitle"] = subtitle
|
|
224
231
|
self["logo"] = logo
|
|
225
232
|
self["user"] = user
|
|
233
|
+
self["photo"] = photo
|
|
226
234
|
self["usermenu"] = []
|
|
227
235
|
self["adder"] = []
|
|
228
236
|
self["tools"] = []
|
|
@@ -331,7 +331,7 @@ class ModelEndpoint(Endpoint):
|
|
|
331
331
|
super().__init__()
|
|
332
332
|
|
|
333
333
|
def get_icon(self):
|
|
334
|
-
return self.model._meta
|
|
334
|
+
return super().get_icon() or getattr(self.model._meta, 'icon', None)
|
|
335
335
|
|
|
336
336
|
|
|
337
337
|
class QuerySetEndpoint(Generic[T], ModelEndpoint):
|
|
@@ -564,17 +564,22 @@ class Dashboard(Endpoint):
|
|
|
564
564
|
class Application(PublicEndpoint):
|
|
565
565
|
def get(self):
|
|
566
566
|
user = None
|
|
567
|
+
photo = None
|
|
567
568
|
navbar = None
|
|
568
569
|
menu = None
|
|
569
570
|
icon = build_url(self.request, APPLICATON["logo"])
|
|
570
571
|
logo = build_url(self.request, APPLICATON["logo"])
|
|
571
572
|
if self.request.user.is_authenticated:
|
|
572
573
|
user = self.request.user.username.split()[0].split("@")[0]
|
|
574
|
+
profile = Profile.objects.filter(user=self.request.user).first()
|
|
575
|
+
photo = profile and profile.photo and build_url(self.request, profile.photo.url)
|
|
576
|
+
|
|
573
577
|
navbar = Navbar(
|
|
574
578
|
title=APPLICATON["title"],
|
|
575
579
|
subtitle=APPLICATON["subtitle"],
|
|
576
580
|
logo=logo,
|
|
577
581
|
user=user,
|
|
582
|
+
photo=photo,
|
|
578
583
|
search=False,
|
|
579
584
|
roles=' | '.join((str(role) for role in self.objects('slth.role').filter(username=self.request.user.username)))
|
|
580
585
|
)
|
|
@@ -18,6 +18,7 @@ from django.core import serializers
|
|
|
18
18
|
from django.template.loader import render_to_string
|
|
19
19
|
from django.core.mail import EmailMultiAlternatives
|
|
20
20
|
from .notifications import send_push_web_notification
|
|
21
|
+
from .components import HtmlContent
|
|
21
22
|
|
|
22
23
|
from slth import APPLICATON
|
|
23
24
|
from django.contrib.auth.models import BaseUserManager
|
|
@@ -327,7 +328,7 @@ class PushNotification(models.Model):
|
|
|
327
328
|
|
|
328
329
|
class EmailManager(models.Manager):
|
|
329
330
|
def all(self):
|
|
330
|
-
return self.
|
|
331
|
+
return self.fields('subject', 'to', 'content', 'send_at', 'sent_at').search('subject', 'content', 'to').filters('send_at__gte', 'send_at__lte', 'sent_at__gte', 'sent_at__lte').rows().order_by('-id')
|
|
331
332
|
|
|
332
333
|
def create(self, to, subject, content, send_at=None, action=None, url=None, key=None):
|
|
333
334
|
to = [to] if isinstance(to, str) else list(to)
|
|
@@ -391,6 +392,16 @@ class Email(models.Model):
|
|
|
391
392
|
).fieldset(
|
|
392
393
|
'Botão', ('action', 'url')
|
|
393
394
|
)
|
|
395
|
+
|
|
396
|
+
def serializer(self):
|
|
397
|
+
return super().serializer().fieldset(
|
|
398
|
+
'Dados Gerais', ('subject', 'to', 'get_content', ('send_at', 'sent_at'))
|
|
399
|
+
).fieldset(
|
|
400
|
+
'Botão', ('action', 'url')
|
|
401
|
+
)
|
|
402
|
+
|
|
403
|
+
def get_content(self):
|
|
404
|
+
return HtmlContent(self.content)
|
|
394
405
|
|
|
395
406
|
|
|
396
407
|
class Profile(models.Model):
|
|
@@ -407,6 +407,7 @@ class QuerySet(models.QuerySet):
|
|
|
407
407
|
field = None
|
|
408
408
|
value = None
|
|
409
409
|
ignore = 'icontains', 'contains', 'gt', 'gte', 'lt', 'lte', 'id', 'year', 'month'
|
|
410
|
+
symbols = dict(gt=' >', gte=' ⋝', lt=' <', lte=' ⋜')
|
|
410
411
|
tmp = []
|
|
411
412
|
for lookup in name.split('__'):
|
|
412
413
|
if lookup in ignore:
|
|
@@ -441,7 +442,10 @@ class QuerySet(models.QuerySet):
|
|
|
441
442
|
choices = [{'id': '', 'value':''}]
|
|
442
443
|
choices.extend([{'id': k, 'value': v} for k, v in field.choices])
|
|
443
444
|
choices.append({'id': 'null', 'value':'Nulo'})
|
|
444
|
-
|
|
445
|
+
label = str(field.verbose_name).title()
|
|
446
|
+
symbol = symbols.get(suffix) if suffix else None
|
|
447
|
+
label = label + symbol if symbol else label
|
|
448
|
+
data = dict(name=name, type=field_type, value=value, label=label, required=False, mask=None)
|
|
445
449
|
if choices:
|
|
446
450
|
data.update(choices=choices)
|
|
447
451
|
return data
|