djgentelella 0.4.8__py3-none-any.whl → 0.4.10__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.
- djgentelella/__init__.py +1 -1
- djgentelella/firmador_digital/consumers/sign.py +15 -1
- djgentelella/firmador_digital/utils.py +11 -0
- djgentelella/locale/es/LC_MESSAGES/django.po +1 -0
- djgentelella/locale/es/LC_MESSAGES/djangojs.mo +0 -0
- djgentelella/locale/es/LC_MESSAGES/djangojs.po +9 -0
- djgentelella/serializers/firmador_digital.py +5 -0
- djgentelella/static/djgentelella.readonly.vendors.min.css +9 -5
- djgentelella/static/djgentelella.readonly.vendors.min.js +1 -1
- djgentelella/static/gentelella/css/custom.css +4 -0
- djgentelella/static/gentelella/js/base/digital_signature.js +164 -62
- djgentelella/static/gentelella/js/base/form.common.js +9 -4
- djgentelella/static/gentelella/js/base/select2_wrap.js +15 -1
- djgentelella/static/gentelella/js/base/select2related.js +5 -0
- djgentelella/static/gentelella/js/base.js +192 -65
- djgentelella/static/gentelella/js/custom.js +6 -1
- djgentelella/static/gentelella/js/obj_api_management.js +5 -3
- djgentelella/static/gentelella/js/widgets.js +6 -2
- djgentelella/static/vendors/timeline/css/timeline.css +9 -5
- djgentelella/static/vendors/timeline/js/timeline.js +1 -1
- djgentelella/templates/gentelella/app/sidebar.html +16 -16
- djgentelella/templates/gentelella/widgets/digital_signature.html +5 -3
- djgentelella/views/select2autocomplete.py +40 -0
- djgentelella/widgets/selects.py +47 -0
- {djgentelella-0.4.8.dist-info → djgentelella-0.4.10.dist-info}/METADATA +1 -1
- {djgentelella-0.4.8.dist-info → djgentelella-0.4.10.dist-info}/RECORD +30 -30
- {djgentelella-0.4.8.dist-info → djgentelella-0.4.10.dist-info}/AUTHORS +0 -0
- {djgentelella-0.4.8.dist-info → djgentelella-0.4.10.dist-info}/LICENSE.txt +0 -0
- {djgentelella-0.4.8.dist-info → djgentelella-0.4.10.dist-info}/WHEEL +0 -0
- {djgentelella-0.4.8.dist-info → djgentelella-0.4.10.dist-info}/top_level.txt +0 -0
djgentelella/__init__.py
CHANGED
|
@@ -12,7 +12,7 @@ from djgentelella.firmador_digital.utils import RemoteSignerClient
|
|
|
12
12
|
from djgentelella.serializers.firmador_digital import (
|
|
13
13
|
WSRequest,
|
|
14
14
|
InitialSignatureSerializer,
|
|
15
|
-
CompleteSignatureSerializer,
|
|
15
|
+
CompleteSignatureSerializer, ValidateDocumentSerializer,
|
|
16
16
|
)
|
|
17
17
|
|
|
18
18
|
logger = logging.getLogger("djgentelella")
|
|
@@ -35,6 +35,8 @@ class SignConsumer(JsonWebsocketConsumer):
|
|
|
35
35
|
return InitialSignatureSerializer(data=content)
|
|
36
36
|
if serializer.validated_data["action"] == "complete_signature":
|
|
37
37
|
return CompleteSignatureSerializer(data=content)
|
|
38
|
+
if serializer.validated_data["action"] == "validate_document":
|
|
39
|
+
return ValidateDocumentSerializer(data=content)
|
|
38
40
|
|
|
39
41
|
def disconnect(self, close_code):
|
|
40
42
|
super().disconnect(close_code)
|
|
@@ -55,6 +57,8 @@ class SignConsumer(JsonWebsocketConsumer):
|
|
|
55
57
|
self.do_initial_signature(serializer)
|
|
56
58
|
case "complete_signature":
|
|
57
59
|
self.do_complete_signature(serializer)
|
|
60
|
+
case "validate_document":
|
|
61
|
+
self.do_validate_document(serializer)
|
|
58
62
|
case _:
|
|
59
63
|
self.do_default(serializer)
|
|
60
64
|
else:
|
|
@@ -81,6 +85,16 @@ class SignConsumer(JsonWebsocketConsumer):
|
|
|
81
85
|
})
|
|
82
86
|
logger.error("An unexpected error occurred.", exc_info=e)
|
|
83
87
|
|
|
88
|
+
def do_validate_document(self, serializer):
|
|
89
|
+
signer = RemoteSignerClient(self.scope["user"])
|
|
90
|
+
|
|
91
|
+
response = signer.validate_document(
|
|
92
|
+
instance=serializer.validated_data["instance"],
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
response['socket_id'] = serializer.validated_data['socket_id']
|
|
96
|
+
self.send_json(response)
|
|
97
|
+
|
|
84
98
|
def do_initial_signature(self, serializer):
|
|
85
99
|
signer = RemoteSignerClient(self.scope["user"])
|
|
86
100
|
|
|
@@ -47,6 +47,17 @@ class RemoteSignerClient:
|
|
|
47
47
|
)
|
|
48
48
|
return response.json()
|
|
49
49
|
|
|
50
|
+
def validate_document(self, instance):
|
|
51
|
+
b64doc = self.get_b64document(instance['value'])
|
|
52
|
+
files = {
|
|
53
|
+
"b64Document": b64doc,
|
|
54
|
+
"DocumentExtension": ".pdf",
|
|
55
|
+
}
|
|
56
|
+
response = requests.post(
|
|
57
|
+
settings.FIRMADOR_VALIDA_URL, json=files
|
|
58
|
+
)
|
|
59
|
+
return response.json()
|
|
60
|
+
|
|
50
61
|
def _finalize_signature(self, data_to_sign, task):
|
|
51
62
|
result = None
|
|
52
63
|
error_msg = _("An unexpected error occurred during the signing process.")
|
|
Binary file
|
|
@@ -213,3 +213,12 @@ msgstr ""
|
|
|
213
213
|
|
|
214
214
|
msgid "loading"
|
|
215
215
|
msgstr "Cargando"
|
|
216
|
+
|
|
217
|
+
msgid "Please, sign the document before saving"
|
|
218
|
+
msgstr "Por favor, firme el documento antes de guardar"
|
|
219
|
+
|
|
220
|
+
msgid "The document is not digitally signed. Please sign the document before saving."
|
|
221
|
+
msgstr "El documento no está firmado digitalmente. Por favor, firme el documento antes de guardar."
|
|
222
|
+
|
|
223
|
+
msgid "The document was saved"
|
|
224
|
+
msgstr "El documento se ha guardado"
|
|
@@ -104,3 +104,8 @@ class CompleteSignatureSerializer(serializers.Serializer):
|
|
|
104
104
|
signature = SignatureSerializer()
|
|
105
105
|
logo_url = serializers.CharField(required=False, allow_null=True, allow_blank=True)
|
|
106
106
|
instance = InstanceSerializer()
|
|
107
|
+
|
|
108
|
+
class ValidateDocumentSerializer(serializers.Serializer):
|
|
109
|
+
action = serializers.CharField()
|
|
110
|
+
socket_id = serializers.CharField(required=True)
|
|
111
|
+
instance = InstanceSerializer()
|
|
@@ -808,6 +808,7 @@
|
|
|
808
808
|
position: relative;
|
|
809
809
|
overflow: hidden;
|
|
810
810
|
border-top: 1px solid #e5e5e5;
|
|
811
|
+
direction: ltr;
|
|
811
812
|
}
|
|
812
813
|
.tl-timenav .tl-timenav-line {
|
|
813
814
|
position: absolute;
|
|
@@ -2018,7 +2019,6 @@
|
|
|
2018
2019
|
.tl-slidenav-previous .tl-slidenav-content-container,
|
|
2019
2020
|
.tl-slidenav-next .tl-slidenav-content-container {
|
|
2020
2021
|
width: 100px;
|
|
2021
|
-
position: absolute;
|
|
2022
2022
|
}
|
|
2023
2023
|
.tl-slidenav-previous .tl-slidenav-title,
|
|
2024
2024
|
.tl-slidenav-next .tl-slidenav-title,
|
|
@@ -2104,7 +2104,7 @@
|
|
|
2104
2104
|
.tl-slidenav-next {
|
|
2105
2105
|
text-align: right;
|
|
2106
2106
|
margin-right: 10px;
|
|
2107
|
-
right:
|
|
2107
|
+
right: 0;
|
|
2108
2108
|
}
|
|
2109
2109
|
.tl-slidenav-next .tl-slidenav-title,
|
|
2110
2110
|
.tl-slidenav-next .tl-slidenav-description {
|
|
@@ -2118,6 +2118,7 @@
|
|
|
2118
2118
|
}
|
|
2119
2119
|
.tl-slidenav-previous {
|
|
2120
2120
|
text-align: left;
|
|
2121
|
+
left: 0;
|
|
2121
2122
|
margin-left: 10px;
|
|
2122
2123
|
}
|
|
2123
2124
|
.tl-slidenav-previous .tl-slidenav-icon {
|
|
@@ -2126,6 +2127,12 @@
|
|
|
2126
2127
|
.tl-slidenav-previous .tl-slidenav-icon:before {
|
|
2127
2128
|
content: "\e650";
|
|
2128
2129
|
}
|
|
2130
|
+
[dir="rtl"] .tl-slidenav-previous {
|
|
2131
|
+
direction: ltr;
|
|
2132
|
+
}
|
|
2133
|
+
[dir="rtl"] .tl-slidenav-next:hover .tl-slidenav-icon {
|
|
2134
|
+
margin-right: -4px;
|
|
2135
|
+
}
|
|
2129
2136
|
/* NAVIGATION HOVER
|
|
2130
2137
|
================================================== */
|
|
2131
2138
|
.tl-slidenav-previous:hover .tl-slidenav-title,
|
|
@@ -2154,9 +2161,6 @@
|
|
|
2154
2161
|
.tl-slidenav-previous:focus-visible .tl-slidenav-icon {
|
|
2155
2162
|
margin-left: -4px;
|
|
2156
2163
|
}
|
|
2157
|
-
.tl-skinny .tl-slidenav-next {
|
|
2158
|
-
right: 32px;
|
|
2159
|
-
}
|
|
2160
2164
|
.tl-skinny .tl-slidenav-next .tl-slidenav-icon {
|
|
2161
2165
|
margin-left: 8px;
|
|
2162
2166
|
}
|