1
1
# -*- coding: utf-8 -*--
2
- from pyramid . view import view_config
3
- import pyramid . httpexceptions as exc
4
-
5
- from sqlalchemy import and_ , func , Integer , BigInteger
6
- from sqlalchemy . dialects . postgresql import ARRAY , aggregate_order_by
2
+ import json
3
+ import os
4
+ import re
5
+ import shutil
6
+ from datetime import datetime
7
7
8
+ import openpyxl
9
+ import pyramid .httpexceptions as exc
8
10
from infolica .exceptions .custom_error import CustomError
9
11
from infolica .models .constant import Constant
10
- from infolica .models .models import AffaireNumero , Numero , NumeroDiffere , NumeroEtat
11
- from infolica .models .models import NumeroEtatHisto , NumeroType , VNumeros
12
- from infolica .models .models import VNumerosAffaires , Affaire , Facture
13
- from infolica .models .models import Cadastre
14
- from infolica .scripts .utils import Utils
12
+ from infolica .models .models import (Affaire , AffaireNumero , Cadastre , Facture ,
13
+ Numero , NumeroDiffere , NumeroEtat ,
14
+ NumeroEtatHisto , NumeroType , VNumeros ,
15
+ VNumerosAffaires )
15
16
from infolica .scripts .authentication import check_connected
16
- from datetime import datetime
17
+ from infolica .scripts .utils import Utils
18
+ from pyramid .view import view_config
19
+ from sqlalchemy import BigInteger , Integer , and_ , func
20
+ from sqlalchemy .dialects .postgresql import ARRAY , aggregate_order_by
21
+
22
+
23
+ def _update_numero_etat (request , numero_id , etat_id ):
24
+ num = request .dbsession .query (Numero ).get (numero_id )
25
+ num .etat_id = etat_id
26
+
27
+ num_histo = NumeroEtatHisto ()
28
+ num_histo .numero_id = numero_id
29
+ num_histo .numero_etat_id = etat_id
30
+ num_histo .date = datetime .today ()
31
+ return num
17
32
18
- import os
19
- import shutil
20
- import openpyxl
21
- import re
22
- import json
23
33
24
34
25
35
@view_config (route_name = 'numeros' , request_method = 'GET' , renderer = 'json' )
@@ -38,7 +48,7 @@ def numeros_view(request):
38
48
etat_id = [int (a ) for a in request .params ['etat_id' ].split ("," )] if 'etat_id' in request .params else None
39
49
40
50
query = request .dbsession .query (VNumeros )
41
-
51
+
42
52
if numero :
43
53
query = query .filter (VNumeros .numero == numero )
44
54
if cadastre_id :
@@ -263,7 +273,7 @@ def numeros_etat_histo_new_view(request, params=None):
263
273
NumeroEtatHisto .numero_etat_id == params ['numero_etat_id' ]
264
274
).first ()
265
275
266
- if not numEtatHisto is None :
276
+ if numEtatHisto is not None :
267
277
return
268
278
269
279
# nouveau numero
@@ -414,7 +424,7 @@ def affaire_numero_new_view(request, params=None):
414
424
AffaireNumero .type_id == params ['type_id' ]
415
425
).first ()
416
426
417
- if not affaireNumero is None :
427
+ if affaireNumero is not None :
418
428
return
419
429
420
430
# nouveau affaire_numero
@@ -485,7 +495,7 @@ def numero_differe_view(request):
485
495
VNumeros .diff_req_ref ,
486
496
numeros_vigueur_check
487
497
)
488
-
498
+
489
499
if role == "mo" :
490
500
user_id = request .params ['user_id' ] if 'user_id' in request .params else None
491
501
@@ -496,23 +506,23 @@ def numero_differe_view(request):
496
506
VNumeros .diff_entree .isnot (None ),
497
507
VNumeros .diff_sortie == None
498
508
))
499
-
509
+
500
510
elif role == "secr" :
501
511
query = query .filter (and_ (
502
512
VNumeros .diff_req_radiation .isnot (True ),
503
513
VNumeros .diff_sortie .isnot (None ),
504
- VNumeros .etat_id .in_ ((numero_projet_id , numero_vigueur_id ))
514
+ VNumeros .etat_id .in_ ((numero_projet_id , numero_vigueur_id ))
505
515
))
506
-
516
+
507
517
elif role == "coord" :
508
518
user_id = request .params ['user_id' ] if 'user_id' in request .params else None
509
-
519
+
510
520
if user_id is not None :
511
521
query = query .filter (VNumeros .diff_operateur_id == user_id )
512
-
522
+
513
523
query = query .filter (and_ (
514
524
VNumeros .diff_sortie .isnot (None ),
515
- VNumeros .diff_controle == None
525
+ VNumeros .diff_controle == None
516
526
))
517
527
518
528
result = query .group_by (
@@ -597,7 +607,7 @@ def numero_differe_update_view(request):
597
607
if "numero_diff_id" in request .params :
598
608
numdiff_id = request .params ["numero_diff_id" ]
599
609
record = request .dbsession .query (NumeroDiffere ).filter (NumeroDiffere .id == numdiff_id ).first ()
600
-
610
+
601
611
if "numero_id" in request .params :
602
612
num_id = request .params ["numero_id" ]
603
613
record = request .dbsession .query (NumeroDiffere ).filter (NumeroDiffere .numero_id == num_id ).first ()
@@ -655,7 +665,7 @@ def _getCadastre(request, cadastre_id):
655
665
656
666
def _getAffairesIdFromNumeroId (request , numero_id , numero_type_id ):
657
667
affaires_id_agg = func .array_agg (AffaireNumero .affaire_id , type_ = ARRAY (BigInteger ))
658
-
668
+
659
669
affaires_id = request .dbsession .query (
660
670
affaires_id_agg
661
671
).filter (
@@ -677,7 +687,7 @@ def loadfile_bf_rp(request):
677
687
678
688
affaire_id = request .params ["affaire_id" ] if "affaire_id" in request .params else None
679
689
file = request .params ["file" ] if "file" in request .params else None
680
-
690
+
681
691
if file is None :
682
692
return exc .HTTPError ('Le fichier est vide' )
683
693
@@ -688,7 +698,7 @@ def loadfile_bf_rp(request):
688
698
689
699
if os .path .exists (file_path ):
690
700
os .remove (file_path )
691
-
701
+
692
702
with open (file_path , 'wb' ) as output_file :
693
703
shutil .copyfileobj (file .file , output_file )
694
704
@@ -702,10 +712,10 @@ def loadfile_bf_rp(request):
702
712
# =============================
703
713
sheet = 'Infolica'
704
714
ws = wb [sheet ]
705
-
715
+
706
716
numero_id_agg = func .array_agg (Numero .id , type_ = ARRAY (BigInteger ))
707
717
numero_numero_agg = func .array_agg (aggregate_order_by (Numero .numero , Numero .numero .asc ()), type_ = ARRAY (BigInteger ))
708
-
718
+
709
719
# prepare query to search Number
710
720
data_query = request .dbsession .query (
711
721
numero_id_agg ,
@@ -725,7 +735,7 @@ def loadfile_bf_rp(request):
725
735
if numero_id is not None :
726
736
data_id .append (numero_id )
727
737
row_i += 1
728
-
738
+
729
739
else :
730
740
results = data_query .filter (
731
741
Numero .id .in_ (data_id )
@@ -759,14 +769,14 @@ def loadfile_bf_rp(request):
759
769
'cadastre_id' : result [1 ],
760
770
'liste_numeros' : liste_numeros
761
771
})
762
-
772
+
763
773
data .append ({
764
774
'source' : sheet ,
765
775
'data' : tmp
766
776
})
767
-
777
+
768
778
break
769
-
779
+
770
780
# ===========================
771
781
# Let's focus on Terris sheet
772
782
# ===========================
@@ -777,7 +787,7 @@ def loadfile_bf_rp(request):
777
787
row_i = 2
778
788
while row_i < 1000 :
779
789
cadastre_id = ws .cell (row = row_i , column = 2 ).value
780
-
790
+
781
791
782
792
if cadastre_id is not None :
783
793
numero = re .split ('\D' , str (ws .cell (row = row_i , column = 3 ).value ))[0 ]
@@ -812,7 +822,7 @@ def loadfile_bf_rp(request):
812
822
'cadastre' : cadastre ,
813
823
'sheet' : sheet ,
814
824
'font_color' : font_color ,
815
- 'error' : error
825
+ 'error' : error
816
826
}
817
827
818
828
cadastre_id_already_exists = False
@@ -828,9 +838,9 @@ def loadfile_bf_rp(request):
828
838
'cadastre_id' : cadastre_id ,
829
839
'liste_numeros' : [numero_ ]
830
840
})
831
-
841
+
832
842
row_i += 1
833
-
843
+
834
844
else :
835
845
836
846
for tmp_ln in tmp : # parcourir les cadastres
@@ -840,12 +850,12 @@ def loadfile_bf_rp(request):
840
850
'source' : sheet ,
841
851
'data' : tmp
842
852
})
843
-
853
+
844
854
break
845
-
855
+
846
856
if os .path .exists (file_path ):
847
857
os .remove (file_path )
848
-
858
+
849
859
return data
850
860
851
861
@@ -858,7 +868,7 @@ def __save_bf_rp(request, affaire_id, data, numero_type_id, numero_etat_id, nume
858
868
for num_cad in data :
859
869
# on parcourt les cadastres
860
870
for numero_obj in num_cad ['liste_numeros' ]:
861
-
871
+
862
872
numero = str (numero_obj ['numero' ]).split (' ' )[0 ]
863
873
864
874
num = num_req .filter (
@@ -898,7 +908,7 @@ def __save_bf_rp(request, affaire_id, data, numero_type_id, numero_etat_id, nume
898
908
)
899
909
900
910
request .dbsession .add (neh )
901
-
911
+
902
912
# log dans table affaire_numero if not already exists
903
913
an = an_req .filter (
904
914
AffaireNumero .affaire_id == affaire_id ,
@@ -930,14 +940,14 @@ def save_bf_rp(request):
930
940
affaire_id = request .params ["affaire_id" ] if "affaire_id" in request .params else None
931
941
num_projet = json .loads (request .params ["num_projet" ]) if "num_projet" in request .params else None
932
942
num_vigueur = json .loads (request .params ["num_vigueur" ]) if "num_vigueur" in request .params else None
933
-
943
+
934
944
affaire_numero_type_ancien_id = request .registry .settings ['affaire_numero_type_ancien_id' ]
935
945
affaire_numero_type_nouveau_id = request .registry .settings ['affaire_numero_type_nouveau_id' ]
936
946
numero_projet_id = request .registry .settings ['numero_projet_id' ]
937
947
numero_vigueur_id = request .registry .settings ['numero_vigueur_id' ]
938
948
numero_bf_id = request .registry .settings ['numero_bf_id' ]
939
-
949
+
940
950
__save_bf_rp (request , affaire_id , num_projet , numero_bf_id , numero_projet_id , affaire_numero_type_nouveau_id )
941
951
__save_bf_rp (request , affaire_id , num_vigueur , numero_bf_id , numero_vigueur_id , affaire_numero_type_ancien_id )
942
-
952
+
943
953
return exc .HTTPOk ()
0 commit comments