slthcore 0.5.1__tar.gz → 0.5.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.
- {slthcore-0.5.1 → slthcore-0.5.3}/PKG-INFO +1 -1
- {slthcore-0.5.1 → slthcore-0.5.3}/setup.py +1 -1
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/__init__.py +2 -2
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/auth.py +6 -3
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/models.py +3 -5
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/oauth.py +4 -5
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/serializer.py +2 -2
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/templates/index.html +1 -1
- {slthcore-0.5.1 → slthcore-0.5.3}/slthcore.egg-info/PKG-INFO +1 -1
- {slthcore-0.5.1 → slthcore-0.5.3}/MANIFEST.in +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/setup.cfg +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/application.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/apps.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/configure/__main__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/__main__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/__pycache__/__main__.cpython-312.pyc +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/.DS_Store +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/.gitignore +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/backend/api/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/backend/api/asgi.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/backend/api/endpoints/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/backend/api/models.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/backend/api/settings.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/backend/api/tests.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/backend/api/urls.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/backend/api/wsgi.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/backend/entrypoint.sh +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/backend/manage.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/backend/requirements.txt +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/base.env +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/docker-compose.yml +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/frontend/package.json +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/frontend/src/main.jsx +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/frontend/vite.config.js +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/local.env +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/run.sh +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/selenium/run.sh +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/test.sh +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/components.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/db/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/db/generic.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/db/models.py +2 -2
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/deletion.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/dev.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/email.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/job.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/log.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/profile.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/pushsubscription.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/report.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/role.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/settings.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/task.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/timezone.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/user.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/endpoints/whatsappnotification.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/exceptions.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/factory.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/forms.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/integrations/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/integrations/deepseek/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/integrations/google/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/integrations/google/gemini.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/integrations/google/places.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/integrations/google/vision.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/integrations/justvoip/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/integrations/mercadopago/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/integrations/openai/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/integrations/openai/chatgpt.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/integrations/viacep/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/integrations/whatsapp/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/management/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/management/commands/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/management/commands/api.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/management/commands/integration_test.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/management/commands/sync.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/management/commands/worker.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/middleware/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/middleware/timezone.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0001_initial.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0002_email_role_pushsubscription_error.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0003_rename_photo_profile_alter_profile_options.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0004_alter_profile_photo.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0005_alter_profile_photo.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0006_user.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0007_deletion_log.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0008_alter_deletion_datetime_alter_log_datetime.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0009_remove_email_from_email_email_action_email_attempt_and_more.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0010_email_key_alter_email_action_alter_email_attempt_and_more.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0011_usertimezone.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0012_timezone_remove_usertimezone_key_and_more.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0013_whatsappnotification.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0014_settings.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0015_auto_20250412_1126.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/notifications.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/pdf/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/pdf/tests.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/permissions.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/printer.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/queryset.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/roles.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/selenium/__init__.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/selenium/browser.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/static/.DS_Store +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/static/css/.DS_Store +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/static/css/slth.css +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/static/images/placeholder.png +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/static/js/index.min.js +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/static/js/react.min.js +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/static/js/slth.min.js +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/statistics.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/tasks.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/templates/email.html +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/templates/report.html +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/templates/service-worker.js +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/templates/signature.html +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/tests.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/threadlocal.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/timezone.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/urls.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/utils.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slth/views.py +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slthcore.egg-info/SOURCES.txt +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slthcore.egg-info/dependency_links.txt +0 -0
- {slthcore-0.5.1 → slthcore-0.5.3}/slthcore.egg-info/top_level.txt +0 -0
|
@@ -92,7 +92,7 @@ class Endpoint(metaclass=EnpointMetaclass):
|
|
|
92
92
|
return self.formfactory().fields(*fields) if fields else {}
|
|
93
93
|
|
|
94
94
|
def post(self):
|
|
95
|
-
redirect = '.' if 'only' in self.request.GET else self.form._redirect
|
|
95
|
+
redirect = '.' if 'only' in self.request.GET else (self.form and self.form._redirect or None)
|
|
96
96
|
return Response(message="Ação realizada com sucesso", redirect=redirect)
|
|
97
97
|
|
|
98
98
|
def check_permission(self):
|
|
@@ -163,7 +163,7 @@ class Endpoint(metaclass=EnpointMetaclass):
|
|
|
163
163
|
else:
|
|
164
164
|
self.cleaned_data = self.form.submit()
|
|
165
165
|
if self.form._message or self.form._redirect or self.form._dispose:
|
|
166
|
-
redirect = '.' if 'only' in self.request.GET else self.form._redirect
|
|
166
|
+
redirect = '.' if 'only' in self.request.GET else (self.form and self.form._redirect or None)
|
|
167
167
|
return Response(self.form._message, redirect, dispose=self.form._dispose)
|
|
168
168
|
else:
|
|
169
169
|
return self.post()
|
|
@@ -41,9 +41,12 @@ class Login(PublicEndpoint):
|
|
|
41
41
|
def get(self):
|
|
42
42
|
code = self.request.GET.get("code")
|
|
43
43
|
if code:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
try:
|
|
45
|
+
user = oauth.authenticate(code)
|
|
46
|
+
if user:
|
|
47
|
+
return login_response(user)
|
|
48
|
+
except ValidationError:
|
|
49
|
+
self.redirect('/api/auth/login/')
|
|
47
50
|
return self.formfactory().fields("username", "password")
|
|
48
51
|
|
|
49
52
|
def post(self):
|
|
@@ -388,10 +388,10 @@ class WhatsappNotification(models.Model):
|
|
|
388
388
|
verbose_name = 'Whatsapp Notification'
|
|
389
389
|
verbose_name_plural = 'Whatsapp Notifications'
|
|
390
390
|
|
|
391
|
-
objects =
|
|
391
|
+
objects = WhatsappNotificationQuerySet()
|
|
392
392
|
|
|
393
393
|
def __str__(self):
|
|
394
|
-
return f'
|
|
394
|
+
return f'Whatsapp Notification {self.title} to {self.to}'
|
|
395
395
|
|
|
396
396
|
def send(self, preview=False):
|
|
397
397
|
self.attempt = self.attempt + 1
|
|
@@ -611,9 +611,7 @@ class TimeZone(models.Model):
|
|
|
611
611
|
return self.name
|
|
612
612
|
|
|
613
613
|
def localtime(self, value):
|
|
614
|
-
|
|
615
|
-
value_in_default_time_zone = timezone.get_current_timezone().localize(value).astimezone(timezone.get_default_timezone()).replace(tzinfo=None)
|
|
616
|
-
return value_in_default_time_zone.astimezone(pytz.timezone(self.name)).replace(tzinfo=None)
|
|
614
|
+
return timezone.get_timezone(self.name).localize(value).astimezone(timezone.get_default_timezone()).replace(tzinfo=None) if value else None
|
|
617
615
|
|
|
618
616
|
|
|
619
617
|
class UserTimeZone(models.Model):
|
|
@@ -18,7 +18,7 @@ def authenticate(code):
|
|
|
18
18
|
client_id=provider['client_id'], client_secret=client_secret
|
|
19
19
|
)
|
|
20
20
|
response = requests.post(provider['access_token_url'], data=access_token_request_data, verify=False)
|
|
21
|
-
print(response.text)
|
|
21
|
+
# print(response.text)
|
|
22
22
|
if response.status_code == 200:
|
|
23
23
|
data = json.loads(response.text)
|
|
24
24
|
headers = {
|
|
@@ -26,11 +26,10 @@ def authenticate(code):
|
|
|
26
26
|
'x-api-key': client_secret
|
|
27
27
|
}
|
|
28
28
|
if provider.get('user_data_method', 'GET').upper() == 'POST':
|
|
29
|
-
response = requests.post(provider['user_data_url'], data={'scope': data.get('scope')}, headers=headers)
|
|
29
|
+
response = requests.post(provider['user_data_url'], data={'scope': data.get('scope')}, headers=headers, verify=False)
|
|
30
30
|
else:
|
|
31
|
-
response = requests.get(provider['user_data_url'], data={'scope': data.get('scope')}, headers=headers)
|
|
32
|
-
print(response.text)
|
|
33
|
-
breakpoint()
|
|
31
|
+
response = requests.get(provider['user_data_url'], data={'scope': data.get('scope')}, headers=headers, verify=False)
|
|
32
|
+
# print(response.text)
|
|
34
33
|
if response.status_code == 200:
|
|
35
34
|
data = json.loads(response.text)
|
|
36
35
|
username = data[provider['user_username']]
|
|
@@ -250,7 +250,7 @@ class Serializer:
|
|
|
250
250
|
return self.request.user.is_superuser or not names or Role.objects.filter(username=self.request.user.username, name__in=names).exists()
|
|
251
251
|
|
|
252
252
|
def to_dict(self, debug=False):
|
|
253
|
-
base_url = absolute_url(self.request)
|
|
253
|
+
base_url = absolute_url(self.request).replace('?only=actions', '')
|
|
254
254
|
if self.request is None and self.serializer:
|
|
255
255
|
self.request = self.serializer.request
|
|
256
256
|
if self.ignore_only:
|
|
@@ -378,7 +378,7 @@ class Serializer:
|
|
|
378
378
|
data = serialize(returned)
|
|
379
379
|
if lazy:
|
|
380
380
|
data['title'] = endpoint.get_verbose_name()
|
|
381
|
-
if isinstance(data, dict):
|
|
381
|
+
if isinstance(data, dict) and data.get('type') is None:
|
|
382
382
|
data['url'] = absolute_url(self.request, 'only={}'.format('__'.join(path)))
|
|
383
383
|
if leaf: raise JsonResponseException(data)
|
|
384
384
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{slthcore-0.5.1 → slthcore-0.5.3}/slth/cmd/init/boilerplate/backend/api/endpoints/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -114,10 +114,10 @@ class TextField(TextField):
|
|
|
114
114
|
class DateTimeField(DateTimeField):
|
|
115
115
|
|
|
116
116
|
def get_db_prep_value(self, value, *args, **kwargs):
|
|
117
|
-
return timezone.
|
|
117
|
+
return timezone.get_default_timezone().localize(value).astimezone(timezone.get_current_timezone()).replace(tzinfo=None) if value else None
|
|
118
118
|
|
|
119
119
|
def from_db_value(self, value, *args, **kwargs):
|
|
120
|
-
return timezone.
|
|
120
|
+
return timezone.get_current_timezone().localize(value).astimezone(timezone.get_default_timezone()).replace(tzinfo=None) if value else None
|
|
121
121
|
|
|
122
122
|
|
|
123
123
|
class TaskFied(TextField):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0003_rename_photo_profile_alter_profile_options.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0008_alter_deletion_datetime_alter_log_datetime.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{slthcore-0.5.1 → slthcore-0.5.3}/slth/migrations/0012_timezone_remove_usertimezone_key_and_more.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|