djgentelella 0.4.5__py3-none-any.whl → 0.4.7__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 +9 -2
- djgentelella/groute.py +4 -1
- djgentelella/serializers/firmador_digital.py +4 -1
- djgentelella/static/gentelella/js/base/digital_signature.js +87 -33
- djgentelella/static/gentelella/js/base.js +87 -33
- {djgentelella-0.4.5.dist-info → djgentelella-0.4.7.dist-info}/METADATA +1 -1
- {djgentelella-0.4.5.dist-info → djgentelella-0.4.7.dist-info}/RECORD +12 -12
- {djgentelella-0.4.5.dist-info → djgentelella-0.4.7.dist-info}/AUTHORS +0 -0
- {djgentelella-0.4.5.dist-info → djgentelella-0.4.7.dist-info}/LICENSE.txt +0 -0
- {djgentelella-0.4.5.dist-info → djgentelella-0.4.7.dist-info}/WHEEL +0 -0
- {djgentelella-0.4.5.dist-info → djgentelella-0.4.7.dist-info}/top_level.txt +0 -0
djgentelella/__init__.py
CHANGED
|
@@ -38,16 +38,18 @@ class SignConsumer(JsonWebsocketConsumer):
|
|
|
38
38
|
|
|
39
39
|
def disconnect(self, close_code):
|
|
40
40
|
super().disconnect(close_code)
|
|
41
|
+
logger.info(f"Disconnect {close_code}")
|
|
41
42
|
|
|
42
43
|
def receive_json(self, content, **kwargs):
|
|
43
44
|
"""
|
|
44
45
|
Called with decoded JSON content.
|
|
45
46
|
"""
|
|
47
|
+
socket_id = ""
|
|
46
48
|
try:
|
|
47
49
|
serializer = self.get_serializer(content)
|
|
48
50
|
|
|
49
51
|
if serializer.is_valid():
|
|
50
|
-
|
|
52
|
+
socket_id = serializer.validated_data['socket_id']
|
|
51
53
|
match serializer.validated_data["action"]:
|
|
52
54
|
case "initial_signature":
|
|
53
55
|
self.do_initial_signature(serializer)
|
|
@@ -63,6 +65,7 @@ class SignConsumer(JsonWebsocketConsumer):
|
|
|
63
65
|
"details": serializer.errors,
|
|
64
66
|
"status": 400,
|
|
65
67
|
"code": 11,
|
|
68
|
+
'socket_id': serializer.data.get('socket_id')
|
|
66
69
|
})
|
|
67
70
|
logger.error("Invalid request.")
|
|
68
71
|
|
|
@@ -74,6 +77,7 @@ class SignConsumer(JsonWebsocketConsumer):
|
|
|
74
77
|
"details": str(e),
|
|
75
78
|
"status": 500,
|
|
76
79
|
"code": 999,
|
|
80
|
+
"socket_id": socket_id
|
|
77
81
|
})
|
|
78
82
|
logger.error("An unexpected error occurred.", exc_info=e)
|
|
79
83
|
|
|
@@ -87,6 +91,8 @@ class SignConsumer(JsonWebsocketConsumer):
|
|
|
87
91
|
docsettings=serializer.validated_data["docsettings"],
|
|
88
92
|
)
|
|
89
93
|
|
|
94
|
+
response['socket_id'] = serializer.validated_data['socket_id']
|
|
95
|
+
|
|
90
96
|
# remove signer image
|
|
91
97
|
if "imageIcon" in response:
|
|
92
98
|
del response["imageIcon"]
|
|
@@ -103,7 +109,8 @@ class SignConsumer(JsonWebsocketConsumer):
|
|
|
103
109
|
signer = RemoteSignerClient(self.scope["user"])
|
|
104
110
|
data = dict(serializer.validated_data)
|
|
105
111
|
response = signer.complete_signature(data)
|
|
106
|
-
self.send_json({"result": response
|
|
112
|
+
self.send_json({"result": response,
|
|
113
|
+
'socket_id': serializer.validated_data['socket_id']})
|
|
107
114
|
except Exception as e:
|
|
108
115
|
logger.error("Complete the signature fail", exc_info=e)
|
|
109
116
|
|
djgentelella/groute.py
CHANGED
|
@@ -18,7 +18,10 @@ def register_lookups(prefix='', basename=None):
|
|
|
18
18
|
def decore(klass):
|
|
19
19
|
if basename in ['userbase', 'groupbase']:
|
|
20
20
|
from djgentelella import settings
|
|
21
|
-
if
|
|
21
|
+
if klass.__module__ == 'djgentelella.gtselects':
|
|
22
|
+
if settings.REGISTER_DEFAULT_USER_API:
|
|
23
|
+
routes.register(prefix, klass, basename=basename)
|
|
24
|
+
else:
|
|
22
25
|
routes.register(prefix, klass, basename=basename)
|
|
23
26
|
else:
|
|
24
27
|
routes.register(prefix, klass, basename=basename)
|
|
@@ -69,7 +69,8 @@ class RequestInitialDoc(serializers.Serializer):
|
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
class WSRequest(serializers.Serializer):
|
|
72
|
-
action = serializers.CharField()
|
|
72
|
+
action = serializers.CharField(required=True)
|
|
73
|
+
socket_id = serializers.CharField(required=True)
|
|
73
74
|
|
|
74
75
|
|
|
75
76
|
class CardSerializer(serializers.Serializer):
|
|
@@ -88,6 +89,7 @@ class SignatureSerializer(serializers.Serializer):
|
|
|
88
89
|
|
|
89
90
|
class InitialSignatureSerializer(serializers.Serializer):
|
|
90
91
|
action = serializers.CharField()
|
|
92
|
+
socket_id = serializers.CharField(required=True)
|
|
91
93
|
docsettings = DocumentSettingsSerializer()
|
|
92
94
|
card = CardSerializer()
|
|
93
95
|
logo_url = serializers.CharField(required=False, allow_null=True, allow_blank=True)
|
|
@@ -96,6 +98,7 @@ class InitialSignatureSerializer(serializers.Serializer):
|
|
|
96
98
|
|
|
97
99
|
class CompleteSignatureSerializer(serializers.Serializer):
|
|
98
100
|
action = serializers.CharField()
|
|
101
|
+
socket_id = serializers.CharField(required=True)
|
|
99
102
|
documentid = serializers.CharField()
|
|
100
103
|
certificate = serializers.CharField()
|
|
101
104
|
signature = SignatureSerializer()
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
///////////////////////////////////////////////
|
|
2
2
|
// Init widgets digital signature
|
|
3
3
|
///////////////////////////////////////////////
|
|
4
|
+
var socket_connections = {};
|
|
5
|
+
var socket_manager_instances = {};
|
|
6
|
+
const max_close_inicialice = 5;
|
|
7
|
+
var count_close_inicialice=0;
|
|
4
8
|
build_digital_signature = function (instance) {
|
|
5
9
|
|
|
6
10
|
const widgetId = instance.getAttribute("id");
|
|
@@ -475,25 +479,77 @@ function responseManageTypeData(instance, err_json_fn, error_text_fn) {
|
|
|
475
479
|
}
|
|
476
480
|
}
|
|
477
481
|
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
}
|
|
482
|
+
class SocketManager {
|
|
483
|
+
constructor(url, signatureManager, instance) {
|
|
484
|
+
this.url=url;
|
|
485
|
+
this.signatureManager=signatureManager;
|
|
486
|
+
this.instance = instance;
|
|
487
|
+
|
|
488
|
+
this.connect();
|
|
489
|
+
}
|
|
490
|
+
connect(){
|
|
491
|
+
socket_manager_instances[this.instance.socket_id] = this.instance;
|
|
492
|
+
if(!socket_connections.hasOwnProperty(this.url)){
|
|
493
|
+
let ws = new WebSocket(this.url);
|
|
494
|
+
ws.onerror=this.fn_error(this);
|
|
495
|
+
ws.onclose=this.fn_close(this);
|
|
496
|
+
ws.onopen=this.fn_open(this);
|
|
497
|
+
ws.onmessage=this.fn_messages(this);
|
|
498
|
+
socket_connections[this.url]=ws;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
fn_error(element){
|
|
502
|
+
return (event) => {
|
|
503
|
+
// console.error("WebSocket error");
|
|
504
|
+
element.signatureManager.hideLoading();
|
|
505
|
+
alertSimple(errorInterpreter(3), gettext("Error"), "error");
|
|
506
|
+
element.signatureManager.socketError = true;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
fn_close(element){
|
|
510
|
+
return (event) => {
|
|
511
|
+
console.warn("WebSocket cerrado "+event.type);
|
|
512
|
+
Reflect.deleteProperty(socket_connections, event.currentTarget.url);
|
|
513
|
+
if(count_close_inicialice < max_close_inicialice){
|
|
514
|
+
count_close_inicialice += 1;
|
|
515
|
+
element.instance.inicialize();
|
|
516
|
+
}
|
|
517
|
+
};
|
|
518
|
+
}
|
|
519
|
+
fn_open(element){
|
|
520
|
+
return (event) => {
|
|
521
|
+
// console.log("WebSocket conectado");
|
|
522
|
+
element.signatureManager.socket_error = false;
|
|
523
|
+
count_close_inicialice=0;
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
fn_messages(element){
|
|
527
|
+
return (event)=>{
|
|
528
|
+
try {
|
|
529
|
+
const data = JSON.parse(event.data);
|
|
530
|
+
if (data.hasOwnProperty("socket_id") && socket_manager_instances.hasOwnProperty(data["socket_id"])){
|
|
531
|
+
socket_manager_instances[data["socket_id"]].receive_json(data);
|
|
532
|
+
}else{
|
|
533
|
+
console.error("Socket id not found");
|
|
534
|
+
}
|
|
535
|
+
} catch (err) {
|
|
536
|
+
console.error("Error al parsear mensaje WS:", err);
|
|
537
|
+
}
|
|
538
|
+
};
|
|
539
|
+
}
|
|
540
|
+
send(str){
|
|
541
|
+
if(!socket_connections.hasOwnProperty(this.url)){
|
|
542
|
+
this.connect();
|
|
543
|
+
}else{
|
|
544
|
+
if(socket_connections[this.url].readyState != WebSocket.OPEN){
|
|
545
|
+
Reflect.deleteProperty(socket_connections, this.url);
|
|
546
|
+
this.connect();
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
if(socket_connections.hasOwnProperty(this.url)){
|
|
550
|
+
socket_connections[this.url].send(str);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
497
553
|
}
|
|
498
554
|
|
|
499
555
|
function callFetch(instance) {
|
|
@@ -545,6 +601,9 @@ function FirmadorLibreLocal(docmanager, signatureManager) {
|
|
|
545
601
|
callFetch(instance);
|
|
546
602
|
},
|
|
547
603
|
"sign": function (data) {
|
|
604
|
+
if(data.hasOwnProperty("socket_id")){
|
|
605
|
+
Reflect.deleteProperty(data, "socket_id");
|
|
606
|
+
}
|
|
548
607
|
let json = JSON.stringify(data);
|
|
549
608
|
let manager = docmanager;
|
|
550
609
|
|
|
@@ -585,21 +644,16 @@ function FirmadorLibreLocal(docmanager, signatureManager) {
|
|
|
585
644
|
}
|
|
586
645
|
}
|
|
587
646
|
|
|
647
|
+
const generateRandomString = () => {
|
|
648
|
+
return Math.floor(Math.random() * Date.now()).toString(36);
|
|
649
|
+
};
|
|
650
|
+
|
|
588
651
|
function FirmadorLibreWS(docmanager, url, signatureManager) {
|
|
589
652
|
var firmador = {
|
|
590
653
|
"url": url,
|
|
591
654
|
"websocket": null,
|
|
592
655
|
"firmador_url": "http://localhost:3516",
|
|
593
|
-
"
|
|
594
|
-
return function (event) {
|
|
595
|
-
try {
|
|
596
|
-
const data = JSON.parse(event.data);
|
|
597
|
-
instance.receive_json(data);
|
|
598
|
-
} catch (err) {
|
|
599
|
-
console.error("Error al parsear mensaje WS:", err);
|
|
600
|
-
}
|
|
601
|
-
};
|
|
602
|
-
},
|
|
656
|
+
"socket_id": generateRandomString(),
|
|
603
657
|
"receive_json": function (data) {
|
|
604
658
|
// validate socket errors
|
|
605
659
|
if (data.result === false && data.error) {
|
|
@@ -663,15 +717,15 @@ function FirmadorLibreWS(docmanager, url, signatureManager) {
|
|
|
663
717
|
},
|
|
664
718
|
|
|
665
719
|
"inicialize": function () {
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
this.websocket.onmessage = this.trans_received(this);
|
|
720
|
+
this.websocket = new SocketManager(url, signatureManager, this);
|
|
721
|
+
|
|
669
722
|
},
|
|
670
723
|
"local_done": function (data) {
|
|
671
724
|
// console.log("local_done", data);
|
|
672
725
|
},
|
|
673
726
|
"sign": function (data) {
|
|
674
727
|
data["action"] = "initial_signature";
|
|
728
|
+
data["socket_id"] = this.socket_id;
|
|
675
729
|
if (data.card !== undefined) {
|
|
676
730
|
this.websocket.send(JSON.stringify(data));
|
|
677
731
|
signatureManager.showLoading();
|
|
@@ -682,7 +736,7 @@ function FirmadorLibreWS(docmanager, url, signatureManager) {
|
|
|
682
736
|
},
|
|
683
737
|
"complete_sign": function (data) {
|
|
684
738
|
data["action"] = "complete_signature";
|
|
685
|
-
|
|
739
|
+
data["socket_id"] = this.socket_id;
|
|
686
740
|
try {
|
|
687
741
|
this.websocket.send(JSON.stringify(data));
|
|
688
742
|
} catch (e) {
|
|
@@ -2251,6 +2251,10 @@ function getMediaRecord(element, mediatype){
|
|
|
2251
2251
|
///////////////////////////////////////////////
|
|
2252
2252
|
// Init widgets digital signature
|
|
2253
2253
|
///////////////////////////////////////////////
|
|
2254
|
+
var socket_connections = {};
|
|
2255
|
+
var socket_manager_instances = {};
|
|
2256
|
+
const max_close_inicialice = 5;
|
|
2257
|
+
var count_close_inicialice=0;
|
|
2254
2258
|
build_digital_signature = function (instance) {
|
|
2255
2259
|
|
|
2256
2260
|
const widgetId = instance.getAttribute("id");
|
|
@@ -2725,25 +2729,77 @@ function responseManageTypeData(instance, err_json_fn, error_text_fn) {
|
|
|
2725
2729
|
}
|
|
2726
2730
|
}
|
|
2727
2731
|
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
}
|
|
2736
|
-
|
|
2737
|
-
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2746
|
-
}
|
|
2732
|
+
class SocketManager {
|
|
2733
|
+
constructor(url, signatureManager, instance) {
|
|
2734
|
+
this.url=url;
|
|
2735
|
+
this.signatureManager=signatureManager;
|
|
2736
|
+
this.instance = instance;
|
|
2737
|
+
|
|
2738
|
+
this.connect();
|
|
2739
|
+
}
|
|
2740
|
+
connect(){
|
|
2741
|
+
socket_manager_instances[this.instance.socket_id] = this.instance;
|
|
2742
|
+
if(!socket_connections.hasOwnProperty(this.url)){
|
|
2743
|
+
let ws = new WebSocket(this.url);
|
|
2744
|
+
ws.onerror=this.fn_error(this);
|
|
2745
|
+
ws.onclose=this.fn_close(this);
|
|
2746
|
+
ws.onopen=this.fn_open(this);
|
|
2747
|
+
ws.onmessage=this.fn_messages(this);
|
|
2748
|
+
socket_connections[this.url]=ws;
|
|
2749
|
+
}
|
|
2750
|
+
}
|
|
2751
|
+
fn_error(element){
|
|
2752
|
+
return (event) => {
|
|
2753
|
+
// console.error("WebSocket error");
|
|
2754
|
+
element.signatureManager.hideLoading();
|
|
2755
|
+
alertSimple(errorInterpreter(3), gettext("Error"), "error");
|
|
2756
|
+
element.signatureManager.socketError = true;
|
|
2757
|
+
}
|
|
2758
|
+
}
|
|
2759
|
+
fn_close(element){
|
|
2760
|
+
return (event) => {
|
|
2761
|
+
console.warn("WebSocket cerrado "+event.type);
|
|
2762
|
+
Reflect.deleteProperty(socket_connections, event.currentTarget.url);
|
|
2763
|
+
if(count_close_inicialice < max_close_inicialice){
|
|
2764
|
+
count_close_inicialice += 1;
|
|
2765
|
+
element.instance.inicialize();
|
|
2766
|
+
}
|
|
2767
|
+
};
|
|
2768
|
+
}
|
|
2769
|
+
fn_open(element){
|
|
2770
|
+
return (event) => {
|
|
2771
|
+
// console.log("WebSocket conectado");
|
|
2772
|
+
element.signatureManager.socket_error = false;
|
|
2773
|
+
count_close_inicialice=0;
|
|
2774
|
+
};
|
|
2775
|
+
}
|
|
2776
|
+
fn_messages(element){
|
|
2777
|
+
return (event)=>{
|
|
2778
|
+
try {
|
|
2779
|
+
const data = JSON.parse(event.data);
|
|
2780
|
+
if (data.hasOwnProperty("socket_id") && socket_manager_instances.hasOwnProperty(data["socket_id"])){
|
|
2781
|
+
socket_manager_instances[data["socket_id"]].receive_json(data);
|
|
2782
|
+
}else{
|
|
2783
|
+
console.error("Socket id not found");
|
|
2784
|
+
}
|
|
2785
|
+
} catch (err) {
|
|
2786
|
+
console.error("Error al parsear mensaje WS:", err);
|
|
2787
|
+
}
|
|
2788
|
+
};
|
|
2789
|
+
}
|
|
2790
|
+
send(str){
|
|
2791
|
+
if(!socket_connections.hasOwnProperty(this.url)){
|
|
2792
|
+
this.connect();
|
|
2793
|
+
}else{
|
|
2794
|
+
if(socket_connections[this.url].readyState != WebSocket.OPEN){
|
|
2795
|
+
Reflect.deleteProperty(socket_connections, this.url);
|
|
2796
|
+
this.connect();
|
|
2797
|
+
}
|
|
2798
|
+
}
|
|
2799
|
+
if(socket_connections.hasOwnProperty(this.url)){
|
|
2800
|
+
socket_connections[this.url].send(str);
|
|
2801
|
+
}
|
|
2802
|
+
}
|
|
2747
2803
|
}
|
|
2748
2804
|
|
|
2749
2805
|
function callFetch(instance) {
|
|
@@ -2795,6 +2851,9 @@ function FirmadorLibreLocal(docmanager, signatureManager) {
|
|
|
2795
2851
|
callFetch(instance);
|
|
2796
2852
|
},
|
|
2797
2853
|
"sign": function (data) {
|
|
2854
|
+
if(data.hasOwnProperty("socket_id")){
|
|
2855
|
+
Reflect.deleteProperty(data, "socket_id");
|
|
2856
|
+
}
|
|
2798
2857
|
let json = JSON.stringify(data);
|
|
2799
2858
|
let manager = docmanager;
|
|
2800
2859
|
|
|
@@ -2835,21 +2894,16 @@ function FirmadorLibreLocal(docmanager, signatureManager) {
|
|
|
2835
2894
|
}
|
|
2836
2895
|
}
|
|
2837
2896
|
|
|
2897
|
+
const generateRandomString = () => {
|
|
2898
|
+
return Math.floor(Math.random() * Date.now()).toString(36);
|
|
2899
|
+
};
|
|
2900
|
+
|
|
2838
2901
|
function FirmadorLibreWS(docmanager, url, signatureManager) {
|
|
2839
2902
|
var firmador = {
|
|
2840
2903
|
"url": url,
|
|
2841
2904
|
"websocket": null,
|
|
2842
2905
|
"firmador_url": "http://localhost:3516",
|
|
2843
|
-
"
|
|
2844
|
-
return function (event) {
|
|
2845
|
-
try {
|
|
2846
|
-
const data = JSON.parse(event.data);
|
|
2847
|
-
instance.receive_json(data);
|
|
2848
|
-
} catch (err) {
|
|
2849
|
-
console.error("Error al parsear mensaje WS:", err);
|
|
2850
|
-
}
|
|
2851
|
-
};
|
|
2852
|
-
},
|
|
2906
|
+
"socket_id": generateRandomString(),
|
|
2853
2907
|
"receive_json": function (data) {
|
|
2854
2908
|
// validate socket errors
|
|
2855
2909
|
if (data.result === false && data.error) {
|
|
@@ -2913,15 +2967,15 @@ function FirmadorLibreWS(docmanager, url, signatureManager) {
|
|
|
2913
2967
|
},
|
|
2914
2968
|
|
|
2915
2969
|
"inicialize": function () {
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
this.websocket.onmessage = this.trans_received(this);
|
|
2970
|
+
this.websocket = new SocketManager(url, signatureManager, this);
|
|
2971
|
+
|
|
2919
2972
|
},
|
|
2920
2973
|
"local_done": function (data) {
|
|
2921
2974
|
// console.log("local_done", data);
|
|
2922
2975
|
},
|
|
2923
2976
|
"sign": function (data) {
|
|
2924
2977
|
data["action"] = "initial_signature";
|
|
2978
|
+
data["socket_id"] = this.socket_id;
|
|
2925
2979
|
if (data.card !== undefined) {
|
|
2926
2980
|
this.websocket.send(JSON.stringify(data));
|
|
2927
2981
|
signatureManager.showLoading();
|
|
@@ -2932,7 +2986,7 @@ function FirmadorLibreWS(docmanager, url, signatureManager) {
|
|
|
2932
2986
|
},
|
|
2933
2987
|
"complete_sign": function (data) {
|
|
2934
2988
|
data["action"] = "complete_signature";
|
|
2935
|
-
|
|
2989
|
+
data["socket_id"] = this.socket_id;
|
|
2936
2990
|
try {
|
|
2937
2991
|
this.websocket.send(JSON.stringify(data));
|
|
2938
2992
|
} catch (e) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: djgentelella
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.7
|
|
4
4
|
Summary: Help building extra widgets for forms and speciall methods to render forms in templates
|
|
5
5
|
Author-email: Solvosoft <info@solvosoft.com>
|
|
6
6
|
Maintainer-email: Luis Zarate Montero <luis.zarate@solvosoft.com>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
djgentelella/__init__.py,sha256
|
|
1
|
+
djgentelella/__init__.py,sha256=-FDAIq3Uw8k-kTuiU6tpvyrlwEjRZ-tSnDQwCZaUN14,73
|
|
2
2
|
djgentelella/admin.py,sha256=hFPWtRyTZWYtuKEv-SZ3r6lHw3aissX0ObqxYmxblY0,1531
|
|
3
3
|
djgentelella/apps.py,sha256=5VEbpUv4b1Jh7gCRAQCe5TvpakRyndKwafjVj0z-Xfo,153
|
|
4
4
|
djgentelella/chartjs.py,sha256=iNYoFnaIQoXsYInJFbSE2quWpjmDz5CuMKpVsvt4pRM,8572
|
|
5
5
|
djgentelella/elements.py,sha256=tMGzA1pE_PytYgAMJutuaYGsnk4k8y7-Kg_D6F5rV6o,3340
|
|
6
6
|
djgentelella/exceptions.py,sha256=x321e40KAjqS5cDv7lIc1TEoSYwTw-pHm7eZV_o0xBI,262
|
|
7
|
-
djgentelella/groute.py,sha256=
|
|
7
|
+
djgentelella/groute.py,sha256=FPKKZBfm0UYAfMKmeLGhPBWqPXqazADjt7iKMruVmcE,799
|
|
8
8
|
djgentelella/gtselects.py,sha256=f8tBg68KQoYYCW1YNZt8PiKmdjItJY2kwN23ScO6nqM,590
|
|
9
9
|
djgentelella/models.py,sha256=PZGQiIGdDxhkdXAPIXb2tgyDvnnyK6e0ePjRBRJ6Bg4,4560
|
|
10
10
|
djgentelella/objectmanagement.py,sha256=y_dkSKIOfKKK9t1hZ8mwcM5RNxj0bChpKYvUn50mVzs,3121
|
|
@@ -67,7 +67,7 @@ djgentelella/firmador_digital/config/asgi_worker.py,sha256=r8CLU1L04hIZ2xCUb-l0j
|
|
|
67
67
|
djgentelella/firmador_digital/config/websocket_urls.py,sha256=tKXVD7N1qyrP_-DBBx0q1Jj5zqpYkC5XduJzwnawMRM,178
|
|
68
68
|
djgentelella/firmador_digital/consumers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
69
69
|
djgentelella/firmador_digital/consumers/pdf_render.py,sha256=CSfnOK0FJXKyIQ2loyjq4yQFjgwJy-CV3SMt25yyUEY,236
|
|
70
|
-
djgentelella/firmador_digital/consumers/sign.py,sha256=
|
|
70
|
+
djgentelella/firmador_digital/consumers/sign.py,sha256=wGK-b5H2ulOjdgaDPb1aR_ikjR0F54dJlxwRlZIkkoo,5484
|
|
71
71
|
djgentelella/firmador_digital/gunicorn/config_asgi.py,sha256=PZMb4ELq3Og_9jEET7DeXUYMeTAq8kSEMaKPkAknlH4,469
|
|
72
72
|
djgentelella/firmador_digital/gunicorn/config_wsgi.py,sha256=GOTN3n90aWTvjNLU_n7DOqlOZ7UH9H4vJ_4cdUM0PHE,539
|
|
73
73
|
djgentelella/forms/__init__.py,sha256=tsFtaTeLH5pOQrgAVd4xjU6w3rPskn15b9kiW9GZuH8,84
|
|
@@ -112,7 +112,7 @@ djgentelella/permission_management/objinterface.py,sha256=b4a_Fa2NsQUNVtQs_2Vbe_
|
|
|
112
112
|
djgentelella/permission_management/views.py,sha256=XWaBD3i5kN7ADcbSYz4_Bzq2n0gSaJ7eQ_i9nKLXE_c,2104
|
|
113
113
|
djgentelella/serializers/__init__.py,sha256=r-pQ1bBd-Y2V5am9Fd9FgPJCacICJvg-xuHqS8shOzQ,1307
|
|
114
114
|
djgentelella/serializers/calendar.py,sha256=57A9QOcBF6twCLJ4yC2uxhuFtolhDENpZ9Dv0sVWYQs,3461
|
|
115
|
-
djgentelella/serializers/firmador_digital.py,sha256=
|
|
115
|
+
djgentelella/serializers/firmador_digital.py,sha256=5DVNH5HFShAlc4VUkN5OBEqPMEkTRSPpRS96cfqYODM,3685
|
|
116
116
|
djgentelella/serializers/helper.py,sha256=xfBZDhI4sE0jRrtcfRFnnNtqtmMpagL2Q2uMkpFvyPQ,248
|
|
117
117
|
djgentelella/serializers/paginators.py,sha256=1KOC9uHBguc6mT9g-QVRZolE6hIxRm9T4hUhOSa0E8Q,501
|
|
118
118
|
djgentelella/serializers/selects.py,sha256=91zuRmtCy-ogSuFA_hni1E2U56wnlru8RuHch074llo,1360
|
|
@@ -142,7 +142,7 @@ djgentelella/static/gentelella/images/forward_disabled.png,sha256=7enxADzvJa3VzC
|
|
|
142
142
|
djgentelella/static/gentelella/images/forward_enabled.png,sha256=vLOxO1qvkBV2ev931iHx-VV63NjrgoTQbwtR4kdVVrA,1380
|
|
143
143
|
djgentelella/static/gentelella/images/forward_enabled_hover.png,sha256=T6LWiaYzcT2fuJAGEaZGxd8Lok3rlZerlVxiy6d647Q,1379
|
|
144
144
|
djgentelella/static/gentelella/images/loading.gif,sha256=dyCz9kckQBZKy7DpKpR3hL4xgQgnShbMue3Ao9h_lK0,30269
|
|
145
|
-
djgentelella/static/gentelella/js/base.js,sha256=
|
|
145
|
+
djgentelella/static/gentelella/js/base.js,sha256=kX6xR3vTK0g1FLdQkaaplv5-g_NuPcqmAXu-tZMOGWg,127681
|
|
146
146
|
djgentelella/static/gentelella/js/custom.js,sha256=O9GWx1FbkMYzbUSzlYw3SrfZrf9xPdMokPh91xMtdUY,14922
|
|
147
147
|
djgentelella/static/gentelella/js/datatables.js,sha256=ZmEBPhoj8jDgl_1g14J9tKtiMknyzBekp1_NqAlxjuU,13743
|
|
148
148
|
djgentelella/static/gentelella/js/obj_api_management.js,sha256=wAVqz9hp5NdJC2dxA_l3mxIeUA2N3fSXuTRADJDCyR4,32127
|
|
@@ -155,7 +155,7 @@ djgentelella/static/gentelella/js/base/calendar.js,sha256=gU_AGEWiXX0MSTb9KC6S39
|
|
|
155
155
|
djgentelella/static/gentelella/js/base/chart.js,sha256=zXJSd-hrWI-vzc-k_CRFv8Kwa2w0anBIu4Fu8gVuHdA,1567
|
|
156
156
|
djgentelella/static/gentelella/js/base/custom.widgets.js,sha256=bMcE6gNNn9AABlZNqDDV_rn7Vm3cDp-wtgQ1kmilsJI,5533
|
|
157
157
|
djgentelella/static/gentelella/js/base/dateranges_gridslider.js,sha256=TGR9Ko9MZVZGhPhe3ubvzMZcEWrlBLH2SA3E239LRyI,5571
|
|
158
|
-
djgentelella/static/gentelella/js/base/digital_signature.js,sha256=
|
|
158
|
+
djgentelella/static/gentelella/js/base/digital_signature.js,sha256=C7rX15LXOSGj3srXRY8dVYT2NHGwjqfYmx8Pb63Q5xg,38479
|
|
159
159
|
djgentelella/static/gentelella/js/base/editorTinymce.js,sha256=2fT36ECHyQKLP0X74zYsSHZZ0Rqg-UywDMbG5LjJVac,1118
|
|
160
160
|
djgentelella/static/gentelella/js/base/fileupload.widget.js,sha256=MIniB9KLE8ozKuDqy5EovrZBbscqEYPMsS70ecgNB1w,10653
|
|
161
161
|
djgentelella/static/gentelella/js/base/form.common.js,sha256=Jppy687iqyTQrf_MTgCCksdESjuV-TmrcQKGLhGT1kg,9170
|
|
@@ -1032,9 +1032,9 @@ djgentelella/widgets/trees.py,sha256=bV6s-w1cgYahS0aNU6xBrx-aISdlzDZ23BFt3_3hAu4
|
|
|
1032
1032
|
djgentelella/widgets/wysiwyg.py,sha256=wHeMyYNVE8-lKJ06A-0DLDAcRNv3TOAOG_Wl9DYZqS0,609
|
|
1033
1033
|
djgentelella/wysiwyg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1034
1034
|
djgentelella/wysiwyg/views.py,sha256=tI7LjLhCnohdvIEOEEhB2Cu1zxRmdcOhYJJX4LBIZaA,1159
|
|
1035
|
-
djgentelella-0.4.
|
|
1036
|
-
djgentelella-0.4.
|
|
1037
|
-
djgentelella-0.4.
|
|
1038
|
-
djgentelella-0.4.
|
|
1039
|
-
djgentelella-0.4.
|
|
1040
|
-
djgentelella-0.4.
|
|
1035
|
+
djgentelella-0.4.7.dist-info/AUTHORS,sha256=HyQoO-q7oXtavpNm7jaBVv8Vxx3c7yo33xkFkt4blkY,118
|
|
1036
|
+
djgentelella-0.4.7.dist-info/LICENSE.txt,sha256=wDzqAntLQORAL6vQhVdzZyfsPVvFStZKtkct5DIZjK0,18047
|
|
1037
|
+
djgentelella-0.4.7.dist-info/METADATA,sha256=ODtBafWXW4pBk0mx_86-b8GlagOUnwgBtHXZjk9NeyM,27544
|
|
1038
|
+
djgentelella-0.4.7.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
1039
|
+
djgentelella-0.4.7.dist-info/top_level.txt,sha256=88JbODVPV-P5q7ic25yMHt_FuuizaLzMyIaegpFa7Qk,13
|
|
1040
|
+
djgentelella-0.4.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|