djgentelella 0.3.29__py3-none-any.whl → 0.4.0__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.
Files changed (72) hide show
  1. djgentelella/__init__.py +4 -1
  2. djgentelella/admin.py +4 -3
  3. djgentelella/fields/files.py +27 -1
  4. djgentelella/firmador_digital/__init__.py +0 -0
  5. djgentelella/firmador_digital/config/__init__.py +0 -0
  6. djgentelella/firmador_digital/config/asgi_config.py +32 -0
  7. djgentelella/firmador_digital/config/asgi_worker.py +5 -0
  8. djgentelella/firmador_digital/config/websocket_urls.py +4 -0
  9. djgentelella/firmador_digital/consumers/__init__.py +0 -0
  10. djgentelella/firmador_digital/consumers/pdf_render.py +8 -0
  11. djgentelella/firmador_digital/consumers/sign.py +148 -0
  12. djgentelella/firmador_digital/forms.py +28 -0
  13. djgentelella/firmador_digital/gunicorn/config_asgi.py +12 -0
  14. djgentelella/firmador_digital/gunicorn/config_wsgi.py +13 -0
  15. djgentelella/firmador_digital/models.py +33 -0
  16. djgentelella/firmador_digital/signvalue_utils.py +41 -0
  17. djgentelella/firmador_digital/utils.py +154 -0
  18. djgentelella/firmador_digital/viewsets.py +77 -0
  19. djgentelella/locale/es/LC_MESSAGES/django.mo +0 -0
  20. djgentelella/locale/es/LC_MESSAGES/django.po +103 -6
  21. djgentelella/locale/es/LC_MESSAGES/djangojs.mo +0 -0
  22. djgentelella/locale/es/LC_MESSAGES/djangojs.po +107 -8
  23. djgentelella/management/commands/createbasejs.py +3 -0
  24. djgentelella/management/commands/loaddevstatic.py +18 -0
  25. djgentelella/migrations/0013_usersignatureconfig.py +25 -0
  26. djgentelella/serializers/firmador_digital.py +103 -0
  27. djgentelella/settings.py +4 -2
  28. djgentelella/static/djgentelella.readonly.vendors.min.css +1 -1
  29. djgentelella/static/djgentelella.readonly.vendors.min.js +1 -1
  30. djgentelella/static/djgentelella.vendors.header.min.js +1 -1
  31. djgentelella/static/djgentelella.vendors.min.css +2 -2
  32. djgentelella/static/gentelella/css/pdfviewer.css +147 -0
  33. djgentelella/static/gentelella/images/firmador.ico +0 -0
  34. djgentelella/static/gentelella/js/base/digital_signature.js +945 -0
  35. djgentelella/static/gentelella/js/base.js +947 -0
  36. djgentelella/static/gentelella/js/datatables.js +2 -2
  37. djgentelella/static/gentelella/js/widgets.js +72 -59
  38. djgentelella/static/vendors/friconix/friconix.js +1 -1
  39. djgentelella/static/vendors/pdfjs/images/altText_add.svg +3 -0
  40. djgentelella/static/vendors/pdfjs/images/altText_disclaimer.svg +3 -0
  41. djgentelella/static/vendors/pdfjs/images/altText_done.svg +3 -0
  42. djgentelella/static/vendors/pdfjs/images/altText_spinner.svg +30 -0
  43. djgentelella/static/vendors/pdfjs/images/altText_warning.svg +3 -0
  44. djgentelella/static/vendors/pdfjs/images/cursor-editorFreeHighlight.svg +6 -0
  45. djgentelella/static/vendors/pdfjs/images/cursor-editorFreeText.svg +3 -0
  46. djgentelella/static/vendors/pdfjs/images/cursor-editorInk.svg +4 -0
  47. djgentelella/static/vendors/pdfjs/images/cursor-editorTextHighlight.svg +8 -0
  48. djgentelella/static/vendors/pdfjs/images/editor-toolbar-delete.svg +5 -0
  49. djgentelella/static/vendors/pdfjs/images/loading-icon.gif +0 -0
  50. djgentelella/static/vendors/pdfjs/images/messageBar_closingButton.svg +3 -0
  51. djgentelella/static/vendors/pdfjs/images/messageBar_warning.svg +3 -0
  52. djgentelella/static/vendors/pdfjs/images/toolbarButton-editorHighlight.svg +6 -0
  53. djgentelella/static/vendors/pdfjs/images/toolbarButton-menuArrow.svg +3 -0
  54. djgentelella/static/vendors/timeline/css/timeline.css +1 -1
  55. djgentelella/static/vendors/timeline/js/timeline.js +1 -1
  56. djgentelella/templates/gentelella/registration/login.html +38 -42
  57. djgentelella/templates/gentelella/statics/javascript.html +75 -61
  58. djgentelella/templates/gentelella/statics/stylesheets.html +11 -10
  59. djgentelella/templates/gentelella/widgets/addtreeselect.html +1 -1
  60. djgentelella/templates/gentelella/widgets/chunkedupload.html +2 -2
  61. djgentelella/templates/gentelella/widgets/digital_signature.html +208 -0
  62. djgentelella/templates/gentelella/widgets/file.html +15 -16
  63. djgentelella/templatetags/gtsettings.py +4 -0
  64. djgentelella/urls.py +1 -1
  65. djgentelella/widgets/core.py +5 -2
  66. djgentelella/widgets/digital_signature.py +116 -0
  67. {djgentelella-0.3.29.dist-info → djgentelella-0.4.0.dist-info}/METADATA +18 -20
  68. {djgentelella-0.3.29.dist-info → djgentelella-0.4.0.dist-info}/RECORD +72 -35
  69. {djgentelella-0.3.29.dist-info → djgentelella-0.4.0.dist-info}/WHEEL +1 -1
  70. {djgentelella-0.3.29.dist-info → djgentelella-0.4.0.dist-info}/AUTHORS +0 -0
  71. {djgentelella-0.3.29.dist-info → djgentelella-0.4.0.dist-info}/LICENSE.txt +0 -0
  72. {djgentelella-0.3.29.dist-info → djgentelella-0.4.0.dist-info}/top_level.txt +0 -0
@@ -7,8 +7,8 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: \n"
9
9
  "Report-Msgid-Bugs-To: \n"
10
- "POT-Creation-Date: 2025-02-15 03:43+0000\n"
11
- "PO-Revision-Date: 2025-02-14 21:45-0600\n"
10
+ "POT-Creation-Date: 2025-03-29 22:37+0000\n"
11
+ "PO-Revision-Date: 2025-03-29 16:43-0600\n"
12
12
  "Last-Translator: \n"
13
13
  "Language-Team: \n"
14
14
  "Language: es\n"
@@ -103,6 +103,36 @@ msgstr ""
103
103
  "Estructura inválida, necesitas proporcionar {name: 'nombre del archivo', "
104
104
  "value:'representación en cadena base64'}"
105
105
 
106
+ msgid "Invalid request."
107
+ msgstr "Petición inválida."
108
+
109
+ msgid "An unexpected error occurred."
110
+ msgstr "Ha ocurrido un error inesperado.."
111
+
112
+ msgid "Card"
113
+ msgstr "Carta"
114
+
115
+ msgid "Invalid value not encoded as b64 o json parser error"
116
+ msgstr ""
117
+ "Valor inválido, debe ser un documento base64 o un error al parsear el json"
118
+
119
+ msgid "An unexpected error occurred during the signing process."
120
+ msgstr ""
121
+ "Un error inesperado ha ocurrido durante el proceso de firmado de documentos."
122
+
123
+ msgid "An error occurred while communicating with the signing service."
124
+ msgstr ""
125
+ "Ha ocurrido un error al conectar con los servicios de firmado de documentos."
126
+
127
+ msgid "Unable to connect to the signing service."
128
+ msgstr "No se puede conectar con los servicios de firmado."
129
+
130
+ msgid "The request to the signing service timed out."
131
+ msgstr "El tiempo de espera del servicio de firma ha expirado."
132
+
133
+ msgid "An exception ocurred el request to the signing service."
134
+ msgstr "Un error ha ocurrido enviando la petición a los servicios de firmado."
135
+
106
136
  #, python-brace-format
107
137
  msgid "Do you want to delete {obj}?"
108
138
  msgstr "¿Desea eliminar {obj}?"
@@ -333,9 +363,6 @@ msgstr "Enlace es válido por %(expiration_days)s días."
333
363
  msgid "Account activation on"
334
364
  msgstr "Activación de cuentas"
335
365
 
336
- msgid "vendors/animate.css/animate.min.css"
337
- msgstr "vendors/animate.css/animate.min.css"
338
-
339
366
  msgid "Login"
340
367
  msgstr "Iniciar sesión"
341
368
 
@@ -345,7 +372,7 @@ msgstr ""
345
372
 
346
373
  msgid ""
347
374
  "Your account doesn't have access to this page. To proceed,\n"
348
- " please login with an account that has access."
375
+ "\t\t\t\t\t\t\tplease login with an account that has access."
349
376
  msgstr ""
350
377
  "Su cuenta no tiene permisos de acceso para ver esta página. Para proceder,\n"
351
378
  " por favor inicie sesión con otra cuenta con permisos "
@@ -514,6 +541,76 @@ msgstr "Sí"
514
541
  msgid "Delete this file"
515
542
  msgstr "Eliminar este archivo"
516
543
 
544
+ msgid "Reload"
545
+ msgstr "Recargar"
546
+
547
+ msgid "The signed option is not available."
548
+ msgstr "La opción firmada no está disponible."
549
+
550
+ msgid "We did not find an electronic signature card."
551
+ msgstr "No encontramos una tarjeta de firma electrónica."
552
+
553
+ msgid "Please make sure to comply with the notices or resolve the errors."
554
+ msgstr "Asegúrese de cumplir con los avisos o resuelva los errores."
555
+
556
+ msgid "Choose your signature card"
557
+ msgstr "Selecciona tu tarjeta de firma"
558
+
559
+ msgid "Electronic signature card"
560
+ msgstr "Tarjeta de firma electrónica"
561
+
562
+ msgid "Sign"
563
+ msgstr "Firmar"
564
+
565
+ msgid "Notices"
566
+ msgstr "Avisos"
567
+
568
+ msgid "You need Firmador Libre installed in order to sign."
569
+ msgstr "Necesitas instalar Firmador Libre para firmar."
570
+
571
+ msgid "Make sure your version is 1.9.8 or later."
572
+ msgstr "Asegúrate de que tu versión sea 1.9.8 o posterior."
573
+
574
+ msgid "Run the application before proceeding with the signature."
575
+ msgstr "Ejecuta la aplicación antes de proceder con la firma."
576
+
577
+ msgid "If the autolauncher doesn't work, I used this command line."
578
+ msgstr "Si el lanzador automático no funciona, usé esta línea de comandos."
579
+
580
+ msgid "Show command"
581
+ msgstr "Mostrar comando"
582
+
583
+ msgid "Copied to clipboard"
584
+ msgstr "Copiado al portapapeles"
585
+
586
+ msgid "Copy to clipboard"
587
+ msgstr "Copiar al portapapeles"
588
+
589
+ msgid "Download Firmador Libre"
590
+ msgstr "Descargar Firmador Libre"
591
+
592
+ msgid "Download app"
593
+ msgstr "Descargar aplicación"
594
+
595
+ msgid "Run Firmador Libre"
596
+ msgstr "Ejecutar Firmador Libre"
597
+
598
+ msgid "Run app"
599
+ msgstr "Ejecutar aplicación"
600
+
601
+ msgid ""
602
+ "Please go to the last page, in the signature space, try to place your "
603
+ "signature vertically centered."
604
+ msgstr ""
605
+ "Por favor, vaya a la última página, en el espacio de firma, intente colocar "
606
+ "su firma verticalmente centrada."
607
+
608
+ msgid "Loading..."
609
+ msgstr "Cargando..."
610
+
611
+ msgid "Please wait while the document is being signed."
612
+ msgstr "Por favor, espere mientras se firma el documento."
613
+
517
614
  msgid "Start"
518
615
  msgstr "Iniciar"
519
616
 
@@ -7,8 +7,8 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: \n"
9
9
  "Report-Msgid-Bugs-To: \n"
10
- "POT-Creation-Date: 2024-12-23 22:28-0600\n"
11
- "PO-Revision-Date: 2024-12-23 22:35-0600\n"
10
+ "POT-Creation-Date: 2025-03-29 16:37-0600\n"
11
+ "PO-Revision-Date: 2025-03-29 16:45-0600\n"
12
12
  "Last-Translator: \n"
13
13
  "Language-Team: \n"
14
14
  "Language: es\n"
@@ -45,6 +45,111 @@ msgstr "Grabar"
45
45
  msgid "Recording..."
46
46
  msgstr "Grabando..."
47
47
 
48
+ msgid "Error when applying setting to signature: "
49
+ msgstr "Error aplicando las propiedades de firma digital "
50
+
51
+ msgid "Error loading content: "
52
+ msgstr "Error cargando contenido: "
53
+
54
+ msgid "Error loading image"
55
+ msgstr "Error cargando imagen"
56
+
57
+ msgid "Error"
58
+ msgstr "Error"
59
+
60
+ msgid "Errors"
61
+ msgstr "Errores"
62
+
63
+ msgid "Warning"
64
+ msgstr "Advertencia"
65
+
66
+ msgid "The signing was successfully completed."
67
+ msgstr "La firma se ha completado correctamente."
68
+
69
+ msgid "Success"
70
+ msgstr "Éxito"
71
+
72
+ msgid ""
73
+ "An error has occurred in the internal server of the uncontrolled 'Firmador "
74
+ "Libre'."
75
+ msgstr ""
76
+ "Ha ocurrido un error en el servidor interno del no controlado 'Firmador "
77
+ "Libre'."
78
+
79
+ msgid ""
80
+ "Make sure to start the 'Firmador Libre' application. If it is already "
81
+ "running, please press the reload button."
82
+ msgstr ""
83
+ "Asegúrate de iniciar la aplicación 'Firmador Libre'. Si ya está en "
84
+ "ejecución, presiona el botón de recarga."
85
+
86
+ msgid ""
87
+ "There is no card connected to the device. Please press the reload button and "
88
+ "connect your card."
89
+ msgstr ""
90
+ "No hay tarjeta conectada al dispositivo. Presiona el botón de recarga y "
91
+ "conecta tu tarjeta."
92
+
93
+ msgid ""
94
+ "The internal signature service does not work. Please contact the support."
95
+ msgstr "El servicio de firma interna no funciona. Contacta con el soporte."
96
+
97
+ msgid ""
98
+ "Authentication failed because the PIN entry window was detected closed, "
99
+ "please try again."
100
+ msgstr ""
101
+ "La autenticación falló porque la ventana de entrada PIN fue detectada "
102
+ "cerrada, intenta de nuevo."
103
+
104
+ msgid ""
105
+ "The device was disconnected, possibly the window was closed for signature. "
106
+ "Please close the window for the authentication PIN."
107
+ msgstr ""
108
+ "El dispositivo se desconectó, posiblemente la ventana para la firma se "
109
+ "cerró. Cierra la ventana para la autenticación PIN."
110
+
111
+ msgid "The new signature field position overlaps with an existing signature."
112
+ msgstr "El nuevo campo de firma se superpone con una firma existente."
113
+
114
+ msgid "The new signature field position is outside the page dimensions."
115
+ msgstr "El nuevo campo de firma está fuera de los límites de la página."
116
+
117
+ msgid "The version of one or more libraries is incompatible."
118
+ msgstr "La versión de una o más bibliotecas es incompatible."
119
+
120
+ msgid "The cryptographic provider is not available."
121
+ msgstr "El proveedor de criptografía no está disponible."
122
+
123
+ msgid "The signing algorithm is not available."
124
+ msgstr "El algoritmo de firma no está disponible."
125
+
126
+ msgid ""
127
+ "Errors have been encountered in the data to be sent to the 'Free Signer'. "
128
+ "Please press the reload button and try again."
129
+ msgstr ""
130
+ "Se han encontrado errores en los datos que se enviarán al 'Firmador Libre'. "
131
+ "Presiona el botón de recarga y intenta de nuevo."
132
+
133
+ msgid ""
134
+ "The request to the signing service timed out. Please, press the reload "
135
+ "button and try again."
136
+ msgstr ""
137
+ "El tiempo de espera del servicio de firma ha expirado. Presiona el botón de "
138
+ "recarga y intenta de nuevo."
139
+
140
+ msgid ""
141
+ "We're sorry, an unexpected error occurred. Please, press the reload button "
142
+ "and try again."
143
+ msgstr ""
144
+ "Lo sentimos, ha ocurrido un error inesperado. Presiona el botón de recarga y "
145
+ "intenta de nuevo."
146
+
147
+ msgid "Accept"
148
+ msgstr "Aceptar"
149
+
150
+ msgid "Cancel"
151
+ msgstr "Cancelar"
152
+
48
153
  msgid " Records Selected"
49
154
  msgstr " Grabar seleccionado"
50
155
 
@@ -81,12 +186,6 @@ msgstr "Descargar"
81
186
  msgid "Clear Filters"
82
187
  msgstr "Limpiar Filtros"
83
188
 
84
- msgid "Success"
85
- msgstr "Éxito"
86
-
87
- msgid "Error"
88
- msgstr "Error"
89
-
90
189
  msgid "Actions"
91
190
  msgstr "Acciones"
92
191
 
@@ -29,6 +29,7 @@ class Command(BaseCommand):
29
29
  'calendar.js',
30
30
  'timeline.js',
31
31
  'mediarecord.js',
32
+ 'digital_signature.js',
32
33
  'api_list.js',
33
34
  'tagify.js'
34
35
  ]
@@ -41,12 +42,14 @@ class Command(BaseCommand):
41
42
  ]
42
43
 
43
44
  with open(basepath / 'base.js', 'w') as fwriter:
45
+ # load jquery plugins
44
46
  fwriter.write("(function($){\n")
45
47
  for f in jquery_plugins:
46
48
  with open(basepath / 'base' / f, 'r') as rfile:
47
49
  fwriter.write("\n%s\n" % (rfile.read()))
48
50
  fwriter.write("})(jQuery)\n")
49
51
 
52
+ # load base files
50
53
  for f in basefiles:
51
54
  with open(basepath / 'base' / f, 'r') as rfile:
52
55
  fwriter.write("\n%s\n" % (rfile.read()))
@@ -375,8 +375,26 @@ class Command(BaseCommand):
375
375
  'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/pdf.worker.min.mjs',
376
376
  'https://cdnjs.cloudflare.com/ajax/libs/interact.js/1.10.27/interact.min.js',
377
377
  ],
378
+
378
379
  'htmlx': [
379
380
  'https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js'
381
+ ],
382
+ 'pdfjs/images/': [
383
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/messageBar_warning.svg",
384
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/messageBar_closingButton.svg",
385
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/cursor-editorInk.svg",
386
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/cursor-editorTextHighlight.svg",
387
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/cursor-editorFreeHighlight.svg",
388
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/altText_warning.svg",
389
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/cursor-editorFreeText.svg",
390
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/editor-toolbar-delete.svg",
391
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/toolbarButton-editorHighlight.svg",
392
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/altText_add.svg",
393
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/altText_done.svg",
394
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/altText_disclaimer.svg",
395
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/altText_spinner.svg",
396
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/toolbarButton-menuArrow.svg",
397
+ "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.6.82/images/loading-icon.gif"
380
398
  ]
381
399
  }
382
400
  compressed = {
@@ -0,0 +1,25 @@
1
+ # Generated by Django 5.1.5 on 2025-02-04 14:22
2
+
3
+ import django.db.models.deletion
4
+ import djgentelella.firmador_digital.models
5
+ from django.conf import settings
6
+ from django.db import migrations, models
7
+
8
+
9
+ class Migration(migrations.Migration):
10
+
11
+ dependencies = [
12
+ ('djgentelella', '00012_defaultusecompessstatic'),
13
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
14
+ ]
15
+
16
+ operations = [
17
+ migrations.CreateModel(
18
+ name='UserSignatureConfig',
19
+ fields=[
20
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
21
+ ('config', models.JSONField(default=djgentelella.firmador_digital.models.get_signature_default)),
22
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
23
+ ],
24
+ ),
25
+ ]
@@ -0,0 +1,103 @@
1
+ import base64
2
+ import json
3
+ import logging
4
+
5
+ from rest_framework import serializers
6
+
7
+ logger = logging.getLogger('djgentelella')
8
+
9
+
10
+ class DocumentSettingsSerializer(serializers.Serializer):
11
+ pageNumber = serializers.IntegerField(min_value=1, default=1)
12
+ signWidth = serializers.IntegerField(min_value=1, default=133)
13
+ signHeight = serializers.IntegerField(min_value=1, default=33)
14
+ signX = serializers.IntegerField(min_value=0, default=198)
15
+ signY = serializers.IntegerField(min_value=0, default=0)
16
+
17
+
18
+ class InstanceSerializer(serializers.Serializer):
19
+ pk = serializers.IntegerField()
20
+ cc = serializers.IntegerField()
21
+ value = serializers.CharField()
22
+
23
+ def get_json_file(self, value):
24
+ jsondata = None
25
+ try:
26
+ instance = base64.b64decode(value.encode())
27
+ jsondata = json.loads(instance.decode())
28
+ except Exception as e:
29
+ logger.error("Validation of value on digital signature fail", exc_info=e)
30
+ return jsondata
31
+
32
+ def get_file_from_token(self, token):
33
+ from djgentelella.models import ChunkedUpload
34
+ tmpupload = ChunkedUpload.objects.filter(upload_id=token).first()
35
+ dev = None
36
+ if tmpupload:
37
+ dev = tmpupload.get_uploaded_file().read()
38
+ return dev
39
+
40
+ def get_instance_file(self, instance, fieldname):
41
+ file_path = getattr(instance, fieldname)
42
+ file_data = None
43
+ with open(file_path.path, 'rb') as f:
44
+ file_data = f.read()
45
+ return file_data
46
+
47
+ def validate_value(self, data):
48
+ jsonparse = self.get_json_file(data)
49
+ if not jsonparse:
50
+ raise serializers.ValidationError("Invalid encode value")
51
+ return jsonparse
52
+
53
+ def validate(self, attrs):
54
+ from django.contrib.contenttypes.models import ContentType
55
+ cc = attrs.get("cc")
56
+ pk = attrs.get("pk")
57
+ ccinstance = ContentType.objects.get_for_id(cc)
58
+ instance = ccinstance.get_object_for_this_type(pk=pk)
59
+ value = attrs.get("value")
60
+ if 'token' in value:
61
+ attrs['value'] = self.get_file_from_token(value['token'])
62
+ elif 'field_name' in value:
63
+ attrs['value'] = self.get_instance_file(instance, value['field_name'])
64
+ return attrs
65
+
66
+
67
+ class RequestInitialDoc(serializers.Serializer):
68
+ docsettings = DocumentSettingsSerializer()
69
+
70
+
71
+ class WSRequest(serializers.Serializer):
72
+ action = serializers.CharField()
73
+
74
+
75
+ class CardSerializer(serializers.Serializer):
76
+ certificate = serializers.CharField()
77
+ commonName = serializers.CharField()
78
+ firstName = serializers.CharField()
79
+ identification = serializers.CharField()
80
+ lastName = serializers.CharField()
81
+ tokenSerialNumber = serializers.CharField()
82
+
83
+
84
+ class SignatureSerializer(serializers.Serializer):
85
+ algorithm = serializers.CharField()
86
+ value = serializers.CharField()
87
+
88
+
89
+ class InitialSignatureSerializer(serializers.Serializer):
90
+ action = serializers.CharField()
91
+ docsettings = DocumentSettingsSerializer()
92
+ card = CardSerializer()
93
+ logo_url = serializers.CharField(required=False, allow_null=True, allow_blank=True)
94
+ instance = InstanceSerializer()
95
+
96
+
97
+ class CompleteSignatureSerializer(serializers.Serializer):
98
+ action = serializers.CharField()
99
+ documentid = serializers.CharField()
100
+ certificate = serializers.CharField()
101
+ signature = SignatureSerializer()
102
+ logo_url = serializers.CharField(required=False, allow_null=True, allow_blank=True)
103
+ instance = InstanceSerializer()
djgentelella/settings.py CHANGED
@@ -42,7 +42,7 @@ try:
42
42
  except Exception as e:
43
43
  from django.contrib.auth.models import User
44
44
 
45
- #####################################################
45
+ ############################################
46
46
  # Chunked Upload
47
47
  ############################################
48
48
 
@@ -83,5 +83,7 @@ CONTENT_TYPE = getattr(settings, 'CHUNKED_UPLOAD_CONTENT_TYPE',
83
83
  DEFAULT_MAX_BYTES = None
84
84
  MAX_BYTES = getattr(settings, 'CHUNKED_UPLOAD_MAX_BYTES', DEFAULT_MAX_BYTES)
85
85
 
86
- #############################################################
86
+ ############################################
87
87
  # END UPLOAD CHUNKED
88
+
89
+
@@ -1514,7 +1514,7 @@
1514
1514
  }
1515
1515
  .tl-timegroup .tl-timegroup-message {
1516
1516
  color: #e0e0e0;
1517
- text-shadow: #FFF 0px 2px 2px;
1517
+ text-shadow: #FFF 0 2px 2px;
1518
1518
  margin-left: 80px;
1519
1519
  }
1520
1520
  .tl-timegroup.tl-timegroup-alternate {