|
|
@@ -6,7 +6,7 @@ from datetime import datetime
|
|
|
|
|
|
from path import Path
|
|
|
|
|
|
-from core.db import AccessSDb
|
|
|
+from core.db import AccessSDb, PostgresDb
|
|
|
from core.model import Model
|
|
|
|
|
|
|
|
|
@@ -21,6 +21,13 @@ MDW_PATH = r"\\h2o\local\4-transversal\BDD\mda\cg67Parc.mdw"
|
|
|
UID = "olivier"
|
|
|
PWD = "massot"
|
|
|
|
|
|
+# Connexion à la base postgres ControlesSig
|
|
|
+CSIG_SERVER = "TR-POSTGIS-02"
|
|
|
+CSIG_DB = "ControlesSIG"
|
|
|
+CSIG_PORT = "5432"
|
|
|
+CSIG_USER = "ControlesSIG_userrw"
|
|
|
+CSIG_PWD = "Am5VOMkdFHU7WwrfVOs9"
|
|
|
+
|
|
|
# Dirs
|
|
|
WRKDIR = MAIN / "work"
|
|
|
RSCDIR = MAIN / "resources"
|
|
|
@@ -40,6 +47,11 @@ AGRHUM_DB_PATH = Path(r"\\h2o\local\4-transversal\BDD\mdb\BDD_ParcRH.mdb")
|
|
|
PDA_DB_PATH = Path(r"\\h2o\local\4-transversal\BDD\mdb\PDA\db_PDA.mdb")
|
|
|
PIRACA_DB_PATH = Path(r"\\h2o\local\4-transversal\BDD\mdb\db_Piraca.mdb")
|
|
|
|
|
|
+# Config de _qgis_sync
|
|
|
+COMPACTAGE_DIR = Path(r"\\h2o\local\1-PARC\activités\assainissement\Controle Réseaux\compactage\gps compactage")
|
|
|
+ITV_DIR = Path(r"\\h2o\local\1-PARC\activités\assainissement\Controle Réseaux\inspection\Projets ITV\GPS")
|
|
|
+
|
|
|
+
|
|
|
|
|
|
### *********** Ne pas modifier en dessous *************** ###
|
|
|
|
|
|
@@ -86,9 +98,17 @@ class PdaDb(ParcDb):
|
|
|
class PiracaDb(ParcDb):
|
|
|
_path = PIRACA_DB_PATH
|
|
|
|
|
|
+class CSigDb(PostgresDb):
|
|
|
+ server = CSIG_SERVER
|
|
|
+ db = CSIG_DB
|
|
|
+ port = CSIG_PORT
|
|
|
+ user = CSIG_USER
|
|
|
+ pwd = CSIG_PWD
|
|
|
|
|
|
+ def __init__(self, **kwargs):
|
|
|
+ super(CSigDb, self).__init__(server=self.server, dbname=self.db, user=self.user, pwd=self.pwd, **kwargs)
|
|
|
|
|
|
-# ## Modèles
|
|
|
+# ## Modeles
|
|
|
|
|
|
class Affaire(Model):
|
|
|
""" Modèle de données d'une affaire Analytique """
|
|
|
@@ -335,6 +355,97 @@ class InspectionTronconWincan(Model):
|
|
|
self.DG = "", str
|
|
|
|
|
|
|
|
|
+#### Objets utilisés par la synchro QGis
|
|
|
+
|
|
|
+
|
|
|
+class QGisChantier(object):
|
|
|
+ """represent a chantier (Video+Etancheite or Compactage)"""
|
|
|
+ def __init__(self):
|
|
|
+ self.pgid = None
|
|
|
+ self.dir_path = ""
|
|
|
+ self.number = 0 # ex: 123000
|
|
|
+ self.complement = "" # ex: -S1
|
|
|
+ self.name = "" # ex: 123000-S1 COMMUNE
|
|
|
+ self.x0 = 0
|
|
|
+ self.y0 = 0
|
|
|
+ self.x1 = 0
|
|
|
+ self.y1 = 0
|
|
|
+ self.error_msg = ""
|
|
|
+ self.items = []
|
|
|
+
|
|
|
+ def __repr__(self):
|
|
|
+ return "[Chantier: {}]".format(self.name if self.name else self.number)
|
|
|
+
|
|
|
+class QGisPoint(object):
|
|
|
+ """represent a point
|
|
|
+ could be a Point de Compactage or a Regard"""
|
|
|
+ def __init__(self):
|
|
|
+ self.number = 0
|
|
|
+ self.name = ""
|
|
|
+ self.x = 0
|
|
|
+ self.y = 0
|
|
|
+
|
|
|
+ def __repr__(self):
|
|
|
+ return "[Point: {}, {}, ({}, {})]".format(self.number, self.name, self.x, self.y)
|
|
|
+
|
|
|
+class QGisRegard(QGisPoint):
|
|
|
+ """represent a Regard"""
|
|
|
+ def __init__(self):
|
|
|
+ QGisPoint.__init__(self)
|
|
|
+ self.pgid = 0
|
|
|
+ self.res_ce = None
|
|
|
+
|
|
|
+ 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 __eq__(self, other):
|
|
|
+ return self.name == other.name
|
|
|
+
|
|
|
+ def __hash__(self):
|
|
|
+ # used for comparison (in 'set' among others)
|
|
|
+ return hash((self.number, self.x, self.y))
|
|
|
+
|
|
|
+ def __repr__(self):
|
|
|
+ return "[Regard: {}, {}, {}, {}, ({}, {})]".format(self.pgid,
|
|
|
+ self.number,
|
|
|
+ self.name,
|
|
|
+ self.res_ce,
|
|
|
+ self.x,
|
|
|
+ self.y)
|
|
|
+
|
|
|
+class QGisTroncon(object):
|
|
|
+ """ represent a troncon """
|
|
|
+ def __init__(self):
|
|
|
+ self.name = ""
|
|
|
+ self.r1 = None
|
|
|
+ self.r2 = None
|
|
|
+ self.res_itv = None
|
|
|
+ self.res_ce = None
|
|
|
+ self.s_autonumber = 0
|
|
|
+ self.si_autonumber = 0
|
|
|
+
|
|
|
+ def __repr__(self):
|
|
|
+ return "[Troncon > name='{}', r1={}, r2={}, res_ce='{}', \
|
|
|
+ res_itv='{}', s_autonumber={}, si_autonumber{}]".format(self.name,
|
|
|
+ self.r1,
|
|
|
+ self.r2,
|
|
|
+ self.res_ce,
|
|
|
+ self.res_itv,
|
|
|
+ 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()
|