epok-toolkit 1.12.4__py3-none-any.whl → 1.12.6__py3-none-any.whl
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 epok-toolkit might be problematic. Click here for more details.
- epok_toolkit/django/cache.py +2 -2
- epok_toolkit/django/viewsets.py +10 -7
- epok_toolkit/messaging/whatsapp_instanced.py +4 -4
- {epok_toolkit-1.12.4.dist-info → epok_toolkit-1.12.6.dist-info}/METADATA +2 -2
- {epok_toolkit-1.12.4.dist-info → epok_toolkit-1.12.6.dist-info}/RECORD +8 -8
- {epok_toolkit-1.12.4.dist-info → epok_toolkit-1.12.6.dist-info}/WHEEL +0 -0
- {epok_toolkit-1.12.4.dist-info → epok_toolkit-1.12.6.dist-info}/licenses/LICENSE +0 -0
- {epok_toolkit-1.12.4.dist-info → epok_toolkit-1.12.6.dist-info}/top_level.txt +0 -0
epok_toolkit/django/cache.py
CHANGED
|
@@ -93,7 +93,7 @@ def cache_get(ttl=_DEFAULT_TTL, key_func=_DEFAULT_KEY):
|
|
|
93
93
|
|
|
94
94
|
@wraps(view_fn)
|
|
95
95
|
def wrapped(*args, **kwargs):
|
|
96
|
-
log.
|
|
96
|
+
log.library(
|
|
97
97
|
f"[📦 cache_get] {view_fn.__qualname__} | ttl={ttl}s"
|
|
98
98
|
)
|
|
99
99
|
# Llamamos directamente a la versión ya decorada,
|
|
@@ -122,7 +122,7 @@ def cache_full(ttl=_DEFAULT_TTL, key_prefix=""):
|
|
|
122
122
|
|
|
123
123
|
@wraps(view_fn)
|
|
124
124
|
def wrapped(self, request, *args, **kwargs):
|
|
125
|
-
log.
|
|
125
|
+
log.library(f"[🚀 cache_full] {view_fn.__qualname__} | ttl={ttl}s | prefix={key_prefix}")
|
|
126
126
|
return decorated_fn(self, request, *args, **kwargs)
|
|
127
127
|
|
|
128
128
|
return wrapped
|
epok_toolkit/django/viewsets.py
CHANGED
|
@@ -38,26 +38,29 @@ class BaseOptimizedViewSet(viewsets.ModelViewSet):
|
|
|
38
38
|
ordering = []
|
|
39
39
|
|
|
40
40
|
def get_queryset(self):
|
|
41
|
+
# aqui heredamos de la libreria estandar
|
|
41
42
|
qs = super().get_queryset()
|
|
42
43
|
model_cls = qs.model
|
|
43
44
|
manager = model_cls._default_manager
|
|
44
45
|
|
|
45
46
|
if hasattr(manager, 'simple') and self.action == 'list':
|
|
46
|
-
log.
|
|
47
|
+
log.library("| LIBRERIA | Usando QS simple")
|
|
47
48
|
qs = manager.simple()
|
|
48
49
|
elif hasattr(manager, 'full'):
|
|
49
|
-
log.
|
|
50
|
+
log.library("| LIBRERIA | Usando QS full")
|
|
50
51
|
qs = manager.full()
|
|
51
52
|
|
|
52
53
|
try:
|
|
53
|
-
log.
|
|
54
|
-
|
|
54
|
+
log.library("| LIBRERIA | Filtrando por created_by")
|
|
55
|
+
qs_created_by= qs.filter(created_by=self.request.user)
|
|
56
|
+
return qs_created_by
|
|
55
57
|
except Exception as e:
|
|
56
58
|
log.error(f"| LIBRERIA | Error al filtrar por created_by: {e}")
|
|
57
59
|
log.info("| LIBRERIA | Filtrado sin created_by")
|
|
58
60
|
return qs
|
|
59
61
|
|
|
60
62
|
|
|
63
|
+
|
|
61
64
|
def get_serializer_class(self):
|
|
62
65
|
|
|
63
66
|
match self.action:
|
|
@@ -70,7 +73,7 @@ class BaseOptimizedViewSet(viewsets.ModelViewSet):
|
|
|
70
73
|
case 'retrieve' if self.full_serializer_class is not None:
|
|
71
74
|
return self.full_serializer_class
|
|
72
75
|
case _ if self.serializer_class is not None:
|
|
73
|
-
log.warning(f"| LIBRERIA | No se encontró serializer específico para la acción '{self.action}', usando el por defecto.")
|
|
76
|
+
# log.warning(f"| LIBRERIA | No se encontró serializer específico para la acción '{self.action}', usando el por defecto.")
|
|
74
77
|
return self.serializer_class
|
|
75
78
|
case _:
|
|
76
79
|
log.error("| LIBRERIA | No se encontró serializer por defecto")
|
|
@@ -78,7 +81,7 @@ class BaseOptimizedViewSet(viewsets.ModelViewSet):
|
|
|
78
81
|
|
|
79
82
|
def perform_create(self, serializer):
|
|
80
83
|
try:
|
|
81
|
-
log.
|
|
84
|
+
log.library("| LIBRERIA |Guardando con created_by y updated_by")
|
|
82
85
|
serializer.save(created_by=self.request.user, updated_by=self.request.user)
|
|
83
86
|
except Exception as e:
|
|
84
87
|
log.error(f"| LIBRERIA | Error al guardar: {e}")
|
|
@@ -87,7 +90,7 @@ class BaseOptimizedViewSet(viewsets.ModelViewSet):
|
|
|
87
90
|
|
|
88
91
|
def perform_update(self, serializer):
|
|
89
92
|
try:
|
|
90
|
-
log.
|
|
93
|
+
log.library("| LIBRERIA | Guardando con updated_by")
|
|
91
94
|
serializer.save(updated_by=self.request.user)
|
|
92
95
|
except Exception as e:
|
|
93
96
|
log.error(f"| LIBRERIA | Error al actualizar: {e}")
|
|
@@ -10,14 +10,14 @@ SERVER_URL = settings.SERVER_URL
|
|
|
10
10
|
|
|
11
11
|
@shared_task
|
|
12
12
|
def send_whatsapp_message_async(number: str, message: str):
|
|
13
|
-
log.
|
|
13
|
+
log.library(f"Enviando mensaje a {number}: '{message}'")
|
|
14
14
|
client = WhatsappClient(api_key=API_KEY, server_url=SERVER_URL, instance_name=INSTANCE)
|
|
15
15
|
return client.send_text(number, message)
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
@shared_task
|
|
19
19
|
def send_whatsapp_media_async(number: str, media_b64: str, filename: str, caption: str, mediatype: str = "document", mimetype: str = "application/pdf"):
|
|
20
|
-
log.
|
|
20
|
+
log.library(f"Enviando media a {number}: '{filename}'")
|
|
21
21
|
client = WhatsappClient(api_key=API_KEY, server_url=SERVER_URL, instance_name=INSTANCE)
|
|
22
22
|
return client.send_media(number, media_b64, filename, caption, mediatype, mimetype)
|
|
23
23
|
|
|
@@ -26,11 +26,11 @@ def send_whatsapp_media_async(number: str, media_b64: str, filename: str, captio
|
|
|
26
26
|
|
|
27
27
|
def send_text(number: str, message: str):
|
|
28
28
|
from colorstreak import log
|
|
29
|
-
log.
|
|
29
|
+
log.library(f"Programando tarea para {number}")
|
|
30
30
|
send_whatsapp_message_async.delay(number, message)
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
def send_media(number: str, media_b64: str, filename: str, caption: str, mediatype: str = "document", mimetype: str = "application/pdf"):
|
|
34
34
|
from colorstreak import log
|
|
35
|
-
log.
|
|
35
|
+
log.library(f"Programando tarea para enviar media a {number}")
|
|
36
36
|
send_whatsapp_media_async.delay(number, media_b64, filename, caption, mediatype, mimetype)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: epok-toolkit
|
|
3
|
-
Version: 1.12.
|
|
3
|
+
Version: 1.12.6
|
|
4
4
|
Summary: Una herramienta para la gestión de tareas y procesos en Django con Celery.
|
|
5
5
|
Author-email: Fernando Leon Franco <fernanlee2131@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -23,7 +23,7 @@ Dynamic: license-file
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
# EPOK Toolkit 'v1.12.
|
|
26
|
+
# EPOK Toolkit 'v1.12.6'
|
|
27
27
|
|
|
28
28
|
EPOK Toolkit es una librería de utilidades para proyectos Django y Python, diseñada para facilitar tareas comunes como envío de emails, mensajería WhatsApp, generación de PDFs y manejo avanzado de caché en APIs.
|
|
29
29
|
|
|
@@ -2,12 +2,12 @@ epok_toolkit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
2
2
|
epok_toolkit/apps.py,sha256=O3q3CcucJOHjlYIS0VgbKsbtim2hpng_FxpKEG_MlWs,486
|
|
3
3
|
epok_toolkit/default_settings.py,sha256=GdDpwMPzRYNDTDK0zcQKUwgiGYVVhj1Pi1NGAxTE1Io,890
|
|
4
4
|
epok_toolkit/django/__init__.py,sha256=noq8F7jlKE_9ikkOt4VnoYHspxm6zGJ-_N2qF_MvLX4,136
|
|
5
|
-
epok_toolkit/django/cache.py,sha256=
|
|
5
|
+
epok_toolkit/django/cache.py,sha256=KpI6-vDIuc9iNNEPH7-G5Ny-2h-7AQkIUCNvfHzNIN8,4111
|
|
6
6
|
epok_toolkit/django/fields.py,sha256=-ajP5qx-4bt9Qz9yW48gTlinTxD1xWPKOEkslqx8cSM,1089
|
|
7
7
|
epok_toolkit/django/manager.py,sha256=3MZcA9wQY4E1KD8XlgZQbzf4wlF9vA8Pntl_gKDWfpA,1350
|
|
8
8
|
epok_toolkit/django/models.py,sha256=E1zj2KetRGszksQvLk3HN5kWkYkEYzJRRmAUOaLJmw8,1090
|
|
9
9
|
epok_toolkit/django/response.py,sha256=O8OHBaKgUQjBeYLLbgTTs669l_4D6swUgAOwswjc-88,1716
|
|
10
|
-
epok_toolkit/django/viewsets.py,sha256=
|
|
10
|
+
epok_toolkit/django/viewsets.py,sha256=ThvpTV8gyyd6xY9ZcpfR6du6NmBWadjbSzEYsTGgdHM,3635
|
|
11
11
|
epok_toolkit/django/utils/__init__.py,sha256=zDuoqm_eksZQpL-Bvd_q2KGMtSXfprBjf4TScZiwV6k,25
|
|
12
12
|
epok_toolkit/django/utils/magic_link.py,sha256=GiDuy0kAGdYohGPlBL7rwpKPMpXuB1wJa1k5LTAOm4w,889
|
|
13
13
|
epok_toolkit/email/__init__.py,sha256=pyJwysyVoq6DuYAG72fulsKFoOuAfjw3aBH7FhmYGHc,35
|
|
@@ -16,7 +16,7 @@ epok_toolkit/email/engine.py,sha256=IIifqRI9z76pHdrO5oSSZ25aP5txOTAgrj1JuVVPlMY,
|
|
|
16
16
|
epok_toolkit/email/templates.py,sha256=8aQ5E3A0q1Uqc7WZf7Tm_ssj6DgAGNHiLsAd6mrZff4,6136
|
|
17
17
|
epok_toolkit/messaging/__init__.py,sha256=lo0URCOr8tR62ljc0MWTtYZ_YR-tecQaAhhAbyGcOxs,53
|
|
18
18
|
epok_toolkit/messaging/whatsapp.py,sha256=TrMSiKzvnhWOotSDEGil1BGgOJ7jLK7h3MXKdW3zCJw,14114
|
|
19
|
-
epok_toolkit/messaging/whatsapp_instanced.py,sha256=
|
|
19
|
+
epok_toolkit/messaging/whatsapp_instanced.py,sha256=dpcZ-uGyDVDk0BBDCTEdUXD-EQsx9aow7eBL2FSbtn0,1422
|
|
20
20
|
epok_toolkit/pdf/__init__.py,sha256=Scb1iOYnVIUEiUVHLNaPmcigyD-jOSBs3ws5RmolMKE,33
|
|
21
21
|
epok_toolkit/pdf/ticket_pdf.py,sha256=jktxxjEL4gFfnvXZW7P7y35bllOe9sJ3S-eOkgPcEQw,8913
|
|
22
22
|
epok_toolkit/pdf/fuentes/Kollektif-Bold.ttf,sha256=MiaucCL_aPGhbDl6M0xA2g2nf84MXHGciOd-XSw0XRo,78780
|
|
@@ -25,8 +25,8 @@ epok_toolkit/pdf/fuentes/Kollektif-Italic.ttf,sha256=1CXPyw43il9u0tQ_7aRzsEaVtg3
|
|
|
25
25
|
epok_toolkit/pdf/fuentes/Kollektif.ttf,sha256=7wTLkVVNUm1giLjIZcWRUH5r2r3o0GjdKic4V1A-pNQ,51128
|
|
26
26
|
epok_toolkit/pdf/plantillas/Ticket_congrats.png,sha256=OSQhVR0j_nLHE6kSJ33BTR-77HM1fNAfJBe2EuX6wVk,157141
|
|
27
27
|
epok_toolkit/pdf/plantillas/Ticket_congrats2.png,sha256=1RBogBdo-8WSMpD3H73HoLgJtr5EC5oVKfOCIWOxPSo,373605
|
|
28
|
-
epok_toolkit-1.12.
|
|
29
|
-
epok_toolkit-1.12.
|
|
30
|
-
epok_toolkit-1.12.
|
|
31
|
-
epok_toolkit-1.12.
|
|
32
|
-
epok_toolkit-1.12.
|
|
28
|
+
epok_toolkit-1.12.6.dist-info/licenses/LICENSE,sha256=iLDbGXdLSIOT5OsxzHCvtmxHtonE21GiFlS3LNkug4A,128
|
|
29
|
+
epok_toolkit-1.12.6.dist-info/METADATA,sha256=XO4eAxy-4J12hoPIsQ3rRaplSCSJkK_rUyKpdjXenho,2217
|
|
30
|
+
epok_toolkit-1.12.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
31
|
+
epok_toolkit-1.12.6.dist-info/top_level.txt,sha256=Wo72AqIFcfWwBGM5F5iGFw9PrO3WBnTSprFZIJk_pNg,13
|
|
32
|
+
epok_toolkit-1.12.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|