slthcore 0.3.1__tar.gz → 0.3.3__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 (104) hide show
  1. {slthcore-0.3.1/slthcore.egg-info → slthcore-0.3.3}/PKG-INFO +1 -1
  2. {slthcore-0.3.1 → slthcore-0.3.3}/setup.py +1 -1
  3. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/backend/api/settings.py +3 -3
  4. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/backend/api/urls.py +4 -3
  5. {slthcore-0.3.1 → slthcore-0.3.3}/slth/components.py +9 -1
  6. {slthcore-0.3.1 → slthcore-0.3.3}/slth/endpoints/__init__.py +6 -1
  7. {slthcore-0.3.1 → slthcore-0.3.3}/slth/endpoints/profile.py +2 -1
  8. {slthcore-0.3.1 → slthcore-0.3.3}/slth/models.py +12 -1
  9. {slthcore-0.3.1 → slthcore-0.3.3}/slth/queryset.py +5 -1
  10. {slthcore-0.3.1 → slthcore-0.3.3}/slth/static/js/slth.min.js +18 -18
  11. {slthcore-0.3.1 → slthcore-0.3.3}/slth/views.py +10 -0
  12. {slthcore-0.3.1 → slthcore-0.3.3/slthcore.egg-info}/PKG-INFO +1 -1
  13. {slthcore-0.3.1 → slthcore-0.3.3}/MANIFEST.in +0 -0
  14. {slthcore-0.3.1 → slthcore-0.3.3}/setup.cfg +0 -0
  15. {slthcore-0.3.1 → slthcore-0.3.3}/slth/__init__.py +0 -0
  16. {slthcore-0.3.1 → slthcore-0.3.3}/slth/apps.py +0 -0
  17. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/configure/__main__.py +0 -0
  18. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/__main__.py +0 -0
  19. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/__pycache__/__main__.cpython-312.pyc +0 -0
  20. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/.DS_Store +0 -0
  21. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/.gitignore +0 -0
  22. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/backend/api/__init__.py +0 -0
  23. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/backend/api/asgi.py +0 -0
  24. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/backend/api/endpoints/__init__.py +0 -0
  25. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/backend/api/models.py +0 -0
  26. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/backend/api/tests.py +0 -0
  27. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/backend/api/wsgi.py +0 -0
  28. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/backend/application.yml +0 -0
  29. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/backend/entrypoint.sh +0 -0
  30. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/backend/manage.py +0 -0
  31. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/backend/requirements.txt +0 -0
  32. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/base.env +0 -0
  33. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/docker-compose.yml +0 -0
  34. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/frontend/package.json +0 -0
  35. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/frontend/src/main.jsx +0 -0
  36. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/frontend/vite.config.js +0 -0
  37. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/local.env +0 -0
  38. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/run.sh +0 -0
  39. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/selenium/run.sh +0 -0
  40. {slthcore-0.3.1 → slthcore-0.3.3}/slth/cmd/init/boilerplate/test.sh +0 -0
  41. {slthcore-0.3.1 → slthcore-0.3.3}/slth/db/__init__.py +0 -0
  42. {slthcore-0.3.1 → slthcore-0.3.3}/slth/db/generic.py +0 -0
  43. {slthcore-0.3.1 → slthcore-0.3.3}/slth/db/models.py +0 -0
  44. {slthcore-0.3.1 → slthcore-0.3.3}/slth/endpoints/auth.py +0 -0
  45. {slthcore-0.3.1 → slthcore-0.3.3}/slth/endpoints/deletion.py +0 -0
  46. {slthcore-0.3.1 → slthcore-0.3.3}/slth/endpoints/dev.py +0 -0
  47. {slthcore-0.3.1 → slthcore-0.3.3}/slth/endpoints/email.py +0 -0
  48. {slthcore-0.3.1 → slthcore-0.3.3}/slth/endpoints/job.py +0 -0
  49. {slthcore-0.3.1 → slthcore-0.3.3}/slth/endpoints/log.py +0 -0
  50. {slthcore-0.3.1 → slthcore-0.3.3}/slth/endpoints/pushsubscription.py +0 -0
  51. {slthcore-0.3.1 → slthcore-0.3.3}/slth/endpoints/report.py +0 -0
  52. {slthcore-0.3.1 → slthcore-0.3.3}/slth/endpoints/role.py +0 -0
  53. {slthcore-0.3.1 → slthcore-0.3.3}/slth/endpoints/task.py +0 -0
  54. {slthcore-0.3.1 → slthcore-0.3.3}/slth/endpoints/user.py +0 -0
  55. {slthcore-0.3.1 → slthcore-0.3.3}/slth/exceptions.py +0 -0
  56. {slthcore-0.3.1 → slthcore-0.3.3}/slth/factory.py +0 -0
  57. {slthcore-0.3.1 → slthcore-0.3.3}/slth/forms.py +0 -0
  58. {slthcore-0.3.1 → slthcore-0.3.3}/slth/management/__init__.py +0 -0
  59. {slthcore-0.3.1 → slthcore-0.3.3}/slth/management/commands/__init__.py +0 -0
  60. {slthcore-0.3.1 → slthcore-0.3.3}/slth/management/commands/integration_test.py +0 -0
  61. {slthcore-0.3.1 → slthcore-0.3.3}/slth/management/commands/sync.py +0 -0
  62. {slthcore-0.3.1 → slthcore-0.3.3}/slth/management/commands/worker.py +0 -0
  63. {slthcore-0.3.1 → slthcore-0.3.3}/slth/middleware/__init__.py +0 -0
  64. {slthcore-0.3.1 → slthcore-0.3.3}/slth/middleware/timezone.py +0 -0
  65. {slthcore-0.3.1 → slthcore-0.3.3}/slth/migrations/0001_initial.py +0 -0
  66. {slthcore-0.3.1 → slthcore-0.3.3}/slth/migrations/0002_email_role_pushsubscription_error.py +0 -0
  67. {slthcore-0.3.1 → slthcore-0.3.3}/slth/migrations/0003_rename_photo_profile_alter_profile_options.py +0 -0
  68. {slthcore-0.3.1 → slthcore-0.3.3}/slth/migrations/0004_alter_profile_photo.py +0 -0
  69. {slthcore-0.3.1 → slthcore-0.3.3}/slth/migrations/0005_alter_profile_photo.py +0 -0
  70. {slthcore-0.3.1 → slthcore-0.3.3}/slth/migrations/0006_user.py +0 -0
  71. {slthcore-0.3.1 → slthcore-0.3.3}/slth/migrations/0007_deletion_log.py +0 -0
  72. {slthcore-0.3.1 → slthcore-0.3.3}/slth/migrations/0008_alter_deletion_datetime_alter_log_datetime.py +0 -0
  73. {slthcore-0.3.1 → slthcore-0.3.3}/slth/migrations/0009_remove_email_from_email_email_action_email_attempt_and_more.py +0 -0
  74. {slthcore-0.3.1 → slthcore-0.3.3}/slth/migrations/0010_email_key_alter_email_action_alter_email_attempt_and_more.py +0 -0
  75. {slthcore-0.3.1 → slthcore-0.3.3}/slth/migrations/__init__.py +0 -0
  76. {slthcore-0.3.1 → slthcore-0.3.3}/slth/notifications.py +0 -0
  77. {slthcore-0.3.1 → slthcore-0.3.3}/slth/oauth.py +0 -0
  78. {slthcore-0.3.1 → slthcore-0.3.3}/slth/pdf/__init__.py +0 -0
  79. {slthcore-0.3.1 → slthcore-0.3.3}/slth/pdf/tests.py +0 -0
  80. {slthcore-0.3.1 → slthcore-0.3.3}/slth/permissions.py +0 -0
  81. {slthcore-0.3.1 → slthcore-0.3.3}/slth/printer.py +0 -0
  82. {slthcore-0.3.1 → slthcore-0.3.3}/slth/roles.py +0 -0
  83. {slthcore-0.3.1 → slthcore-0.3.3}/slth/selenium/__init__.py +0 -0
  84. {slthcore-0.3.1 → slthcore-0.3.3}/slth/selenium/browser.py +0 -0
  85. {slthcore-0.3.1 → slthcore-0.3.3}/slth/serializer.py +0 -0
  86. {slthcore-0.3.1 → slthcore-0.3.3}/slth/static/.DS_Store +0 -0
  87. {slthcore-0.3.1 → slthcore-0.3.3}/slth/static/css/.DS_Store +0 -0
  88. {slthcore-0.3.1 → slthcore-0.3.3}/slth/static/css/slth.css +0 -0
  89. {slthcore-0.3.1 → slthcore-0.3.3}/slth/static/js/index.min.js +0 -0
  90. {slthcore-0.3.1 → slthcore-0.3.3}/slth/static/js/react.min.js +0 -0
  91. {slthcore-0.3.1 → slthcore-0.3.3}/slth/statistics.py +0 -0
  92. {slthcore-0.3.1 → slthcore-0.3.3}/slth/tasks.py +0 -0
  93. {slthcore-0.3.1 → slthcore-0.3.3}/slth/templates/email.html +0 -0
  94. {slthcore-0.3.1 → slthcore-0.3.3}/slth/templates/index.html +0 -0
  95. {slthcore-0.3.1 → slthcore-0.3.3}/slth/templates/report.html +0 -0
  96. {slthcore-0.3.1 → slthcore-0.3.3}/slth/templates/service-worker.js +0 -0
  97. {slthcore-0.3.1 → slthcore-0.3.3}/slth/templates/signature.html +0 -0
  98. {slthcore-0.3.1 → slthcore-0.3.3}/slth/tests.py +0 -0
  99. {slthcore-0.3.1 → slthcore-0.3.3}/slth/threadlocal.py +0 -0
  100. {slthcore-0.3.1 → slthcore-0.3.3}/slth/urls.py +0 -0
  101. {slthcore-0.3.1 → slthcore-0.3.3}/slth/utils.py +0 -0
  102. {slthcore-0.3.1 → slthcore-0.3.3}/slthcore.egg-info/SOURCES.txt +0 -0
  103. {slthcore-0.3.1 → slthcore-0.3.3}/slthcore.egg-info/dependency_links.txt +0 -0
  104. {slthcore-0.3.1 → slthcore-0.3.3}/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.3.1
3
+ Version: 0.3.3
4
4
  Summary: API generator based on yml file
5
5
  Home-page: https://github.com/brenokcc
6
6
  Author: Breno Silva
@@ -5,7 +5,7 @@ install_requires = []
5
5
 
6
6
  setup(
7
7
  name='slthcore',
8
- version='0.3.1',
8
+ version='0.3.3',
9
9
  packages=find_packages(),
10
10
  install_requires=install_requires,
11
11
  include_package_data=True,
@@ -100,11 +100,11 @@ TIME_ZONE = 'America/Recife'
100
100
  USE_I18N = True
101
101
  USE_L10N = True
102
102
  USE_TZ = False
103
- MEDIA_ROOT = 'media'
103
+ MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
104
104
  MEDIA_URL = 'media/'
105
105
  SITE_URL = os.environ.get('SITE_URL', 'http://localhost:8000')
106
- STATIC_ROOT = 'static'
107
- STATIC_URL = os.path.join(SITE_URL, 'static/')
106
+ STATIC_ROOT = os.path.join(BASE_DIR, 'static')
107
+ STATIC_URL = 'static/'
108
108
  ALLOWED_HOSTS = ['selenium', '127.0.0.1', 'localhost', '*']
109
109
  SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
110
110
  X_FRAME_OPTIONS = 'ALLOWALL'
@@ -1,7 +1,7 @@
1
1
  from django.urls import path, re_path, include
2
2
  from slth import urls
3
3
  from django.conf import settings
4
- from slth.views import dispatcher, index, service_worker
4
+ from slth.views import dispatcher, index, service_worker, media
5
5
  from django.conf.urls.static import static
6
6
 
7
7
  urlpatterns = [
@@ -9,5 +9,6 @@ urlpatterns = [
9
9
  path('service-worker.js', service_worker),
10
10
  re_path(r'^app/(?P<path>.*)/$', index),
11
11
  path('api/', include(urls)),
12
- path('', dispatcher)
13
- ] + static('media', document_root=settings.MEDIA_ROOT)
12
+ path('', dispatcher),
13
+ path('media/<path:file_path>/', media, name='secure_media')
14
+ ]
@@ -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.icon or super().get_icon()
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
  )
@@ -1,6 +1,7 @@
1
1
  from .. import endpoints
2
2
  from .. import forms
3
3
  from ..models import Profile
4
+ from ..components import Response
4
5
 
5
6
 
6
7
  class UserProfile(endpoints.Endpoint):
@@ -27,7 +28,7 @@ class UserProfile(endpoints.Endpoint):
27
28
  self.request.user.save()
28
29
  else:
29
30
  raise forms.ValidationError('Repita a mesma senha.')
30
- return super().post()
31
+ return Response(message="Ação realizada com sucesso", store=dict(application=None), redirect='/api/dashboard/')
31
32
 
32
33
  def get_profile(self):
33
34
  return Profile.objects.get_or_create(user=self.request.user, defaults=dict(photo=None))[0]
@@ -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.order_by('-id').rows()
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
- data = dict(name=name, type=field_type, value=value, label=str(field.verbose_name).title(), required=False, mask=None)
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