Bläddra i källkod

Ajoute les tests pour qgis_sync_video et corrections

olivier.massot 7 år sedan
förälder
incheckning
827b70c242
3 ändrade filer med 69 tillägg och 50 borttagningar
  1. 0 11
      core/pde.py
  2. 36 39
      qgis_sync_video.py
  3. 33 0
      resources/test_qgis_sync_video.py

+ 0 - 11
core/pde.py

@@ -438,17 +438,6 @@ class QGisTroncon(object):
                                                                 self.s_autonumber,
                                                                 self.si_autonumber)
 
-    def sql_res_ce(self):
-        """return a sql formatted result for Etancheite """
-        return "'{}'".format(self.res_ce) if self.res_ce != None else "NULL"
-
-    def sql_res_itv(self):
-        """return a sql formatted result for Video """
-        return "'{}'".format(self.res_itv) if self.res_itv != None else "NULL"
-
-
-
-
 if __name__ == "__main__":
     for cls in (FacturesDb, ControlesDb, WincanDb, CommunDb, AnalytiqueDb, BoDb, AgrhumDb):
         db = cls()

+ 36 - 39
qgis_sync_video.py

@@ -24,15 +24,14 @@ from core.pde import WincanDb, QGisRegard, QGisChantier, QGisTroncon, \
 
 logger = logging.getLogger("qgis_sync_video")
 logconf.start("qgis_sync_video", logging.DEBUG)
-debug = False
-
 
 # # POUR TESTER, décommenter les lignes suivantes
 ##-----------------------------------------------
 
 ControlesDb._path = Path(r"\\h2o\local\4-transversal\BDD\mdb_test\cg67Parc_data.mdb")
-CSigDb.server = "TR-POSTGIS-02"
 WincanDb._path = Path(r"\\h2o\local\4-transversal\BDD\mdb_test\Wincan\parc_2007\DB\PARC_2007.mdb")
+CSigDb.server = "TR-POSTGIS-02"
+CSigDb.pwd = "Am5VOMkdFHU7WwrfVOs9"
 logger.handlers = [h for h in logger.handlers if (type(h) == logging.StreamHandler)]
 logger.warning("<<<<<<<<<<<<<<   Mode TEST   >>>>>>>>>>>>>>>>>")
 
@@ -49,9 +48,9 @@ controles_db = ControlesDb(autocommit=False)
 
 
 logger.info("Chargement des données")
-qessais = wincan_db.execute(Sql.format("""SELECT S_AutoNumber, S_StartNode, S_EndNode, S_StartNodeCoord_X, S_StartNodeCoord_Y,
+qessais = wincan_db.read(Sql.format("""SELECT S_AutoNumber, S_StartNode, S_EndNode, S_StartNodeCoord_X, S_StartNodeCoord_Y,
                                          S_EndNodeCoord_X, S_EndNodeCoord_Y, SI_AutoNumber, SI_InspName
-                                         FROM csig_sync_video"""))
+                                         FROM csig_sync_video;"""))
 chantiers = {}
 
 for essai in qessais:
@@ -112,7 +111,7 @@ for essai in qessais:
     if row:
         troncon.res_ce = row.strResSigne
     else:
-        logger.error("Impossible de trouver le resultat Etanchéité du tronçon {}-{} (%s)", r1.number, r2.number, essai.SI_InspName)
+        logger.error("Impossible de trouver le resultat Etanchéité du tronçon %s-%s (%s)", r1.number, r2.number, essai.SI_InspName)
 
 
     # Importe le résultat de l'essai d'Etanchéité des regards depuis contrôle
@@ -124,7 +123,7 @@ for essai in qessais:
         if row:
             regard.res_ce = row.strResSigne
         else:
-            logger.error("Impossible de trouver le resultat Etanchéité du regard {} (%s)", regard.number, essai.SI_InspName)
+            logger.error("Impossible de trouver le resultat Etanchéité du regard %s (%s)", regard.number, essai.SI_InspName)
 
     chantier.items.append(troncon)
 
@@ -151,7 +150,7 @@ for chantier in chantiers.values():
     logger.info("** Création du chantier: {}".format(chantier.name))
 
     # Vérifie si le chantier existe déjà
-    existants = csig_db.readall(Sql.format("SELECT id FROM t_chantiers WHERE nom = {:text}", chantier.name))
+    existants = csig_db.read_all(Sql.format("SELECT id FROM t_chantiers WHERE nom = {:text} AND id_type_chantier=1", chantier.name))
 
     cancel = False
 
@@ -174,26 +173,26 @@ for chantier in chantiers.values():
 
     # Calcule l'emprise du chantier
     regards = set([troncon.r1 for troncon in chantier.items]) | set([troncon.r2 for troncon in chantier.items])
-    chantier.x0 = min([regard.x for regard in regards])
-    chantier.x1 = max([regard.x for regard in regards])
-    chantier.y0 = min([regard.y for regard in regards])
-    chantier.y1 = max([regard.y for regard in regards])
+    chantier.x0 = min([regard.x for regard in regards]) - 10
+    chantier.x1 = max([regard.x for regard in regards]) + 10
+    chantier.y0 = min([regard.y for regard in regards]) - 10
+    chantier.y1 = max([regard.y for regard in regards]) + 10
 
     # Créé le chantier
     logger.info("> Création du chantier")
-    row = csig_db.first(Sql.format("""INSERT INTO t_chantiers(id_type_chantier, numero, nom, geom, archive)
-                                       VALUES ({chantier_type}, {number}, {name:text}, {geom}, {archive})
+
+    row = csig_db.first(Sql.format("""INSERT INTO t_chantiers(id_type_chantier, numero, nom, archive, geom)
+                                       VALUES ({chantier_type}, {number}, {name:text}, False,
+                                               ST_GeomFromText('POLYGON(({x0} {y0}, {x0} {y1}, {x1} {y1}, {x1} {y0}, {x0} {y0}))', {srid}))
                                        RETURNING id
                                         """, chantier_type=1,
                                             number=chantier.number,
                                             name=chantier.name,
-                                            geom="ST_GeomFromText('POLYGON(({x0} {y0}, {x0} {y1}, {x1} {y1}, \
-                                            {x1} {y0}, {x0} {y0}))', {srid})".format(x0=chantier.x0,
-                                                                                     x1=chantier.x1,
-                                                                                     y0=chantier.y0,
-                                                                                     y1=chantier.y1,
-                                                                                     srid=SRID),
-                                            archive="FALSE"
+                                            x0=chantier.x0,
+                                            x1=chantier.x1,
+                                            y0=chantier.y0,
+                                            y1=chantier.y1,
+                                            srid=SRID
                                             )
                        )
     # Récupère son id postgis
@@ -208,24 +207,24 @@ for chantier in chantiers.values():
             label = label_for(chantier.pgid, regard.number)
 
             row = csig_db.first(Sql.format("""INSERT INTO t_regards(nom, id_chantier, res_ce, s_autonumber, geom, label, archive)
-                                           VALUES ({name:text}, {chantier_id}, {res_ce}, {s_autonumber}, {geom}, {label:text}, {archive})
+                                           VALUES ({name:text}, {chantier_id}, {res_ce:text}, {s_autonumber}, ST_GeomFromText('POINT({x} {y})', {srid}), {label:text}, False)
                                            RETURNING id
-                                           """.format(
-                                                   name=regard.number,
+                                           """, name=regard.number,
                                                    chantier_id=chantier.pgid,
                                                    res_ce=regard.res_ce,
                                                    s_autonumber=troncon.s_autonumber,
-                                                   geom="ST_GeomFromText('POINT({x} {y})', {srid})".format(x=regard.x, y=regard.y, srid=SRID),
-                                                   label=label,
-                                                   archive="FALSE"
-                                               )
-                                           ))
+                                                   x=regard.x,
+                                                   y=regard.y,
+                                                   srid=SRID,
+                                                   label=label)
+                                )
             regard.pgid = row.id
 
         logger.debug("> Création du tronçon %s".format("{}-{}".format(troncon.r1.number, troncon.r2.number)))
 
         csig_db.first(Sql.format("""INSERT INTO t_troncons(nom, id_chantier, id_regard_depart, id_regard_fin, s_autonumber, si_autonumber, res_itv, res_ce, geom, archive)
-                                   VALUES ({name:text, {chantier_id}, {id_regard_depart}, {id_regard_fin}, {s_autonumber}, {si_autonumber}, {res_itv}, {res_ce}, {geom}, {archive})
+                                   VALUES ({name:text}, {chantier_id}, {id_regard_depart}, {id_regard_fin}, {s_autonumber}, {si_autonumber}, {res_itv:text}, {res_ce:text},
+                                           ST_GeomFromText('LINESTRING ({x1} {y1}, {x2} {y2})', {srid}), False)
                                    RETURNING id
                                  """, name="{}-{}".format(troncon.r1.number, troncon.r2.number),
                                     chantier_id=chantier.pgid,
@@ -233,21 +232,19 @@ for chantier in chantiers.values():
                                     id_regard_fin=troncon.r2.pgid,
                                     s_autonumber=troncon.s_autonumber,
                                     si_autonumber=troncon.si_autonumber,
-                                    res_itv=troncon.sql_res_itv(),
-                                    res_ce=troncon.sql_res_ce(),
-                                    geom="ST_GeomFromText('LINESTRING ({x1} {y1}, {x2} {y2})', {srid})".format(x1=troncon.r1.x,
-                                                                                                               y1=troncon.r1.y,
-                                                                                                               x2=troncon.r2.x,
-                                                                                                               y2=troncon.r2.y,
-                                                                                                               srid=SRID),
-                                    archive="FALSE"
+                                    res_itv=troncon.res_itv,
+                                    res_ce=troncon.res_ce,
+                                    x1=troncon.r1.x,
+                                    y1=troncon.r1.y,
+                                    x2=troncon.r2.x,
+                                    y2=troncon.r2.y,
+                                    srid=SRID
                                 )
                        )
 
 
     csig_db.commit()
 
-
     # update si_spare3 in Wincan to mark the chantier as imported
     logger.info("> Marque le chantier comme importé dans WincanDb")
 

+ 33 - 0
resources/test_qgis_sync_video.py

@@ -0,0 +1,33 @@
+'''
+Created on 6 juin 2018
+
+@author: olivier.massot
+'''
+from path import Path
+
+from core.pde import CSigDb, WincanDb
+
+
+if __name__ == "__main__":
+
+
+    CSigDb.server = "TR-POSTGIS-02"
+    CSigDb.pwd = "Am5VOMkdFHU7WwrfVOs9"
+    WincanDb._path = Path(r"\\h2o\local\4-transversal\BDD\mdb_test\Wincan\parc_2007\DB\PARC_2007.mdb")
+
+    csig_db = CSigDb(autocommit=False)
+    wincan_db = WincanDb(autocommit=False)
+
+    inspname = "175279 MIETESHEIM"
+
+    chantier = csig_db.first("SELECT * FROM t_chantiers WHERE nom='{}' AND id_type_chantier=1;".format(inspname))
+
+    if chantier:
+        csig_db.execute("DELETE FROM t_troncons WHERE id_chantier={}".format(chantier.id))
+        csig_db.execute("DELETE FROM t_regards WHERE id_chantier={}".format(chantier.id))
+        csig_db.execute("DELETE FROM t_chantiers WHERE id={}".format(chantier.id))
+
+    wincan_db.execute("UPDATE SI_T SET SI_Spare3=Null WHERE SI_InspName='{}'".format(inspname))
+
+    csig_db.commit()
+    wincan_db.commit()