113 lines
4.0 KiB
Python
113 lines
4.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import absolute_import
|
|
# Import the PyQt and QGIS libraries
|
|
from builtins import next
|
|
from builtins import str
|
|
from builtins import object
|
|
import qgis
|
|
from qgis.PyQt.QtCore import QSettings
|
|
from qgis.PyQt.QtWidgets import QAction, QMenu, QDialog,QMessageBox
|
|
from qgis.PyQt.QtGui import QIcon
|
|
try:
|
|
from PyQt5.QtCore import *
|
|
from PyQt5.QtGui import *
|
|
from PyQt5 import QtGui
|
|
except:
|
|
from PyQt6.QtCore import *
|
|
from PyQt6.QtGui import *
|
|
from PyQt6 import QtGui
|
|
from qgis.core import *
|
|
from qgis.core import QgsDataSourceUri
|
|
|
|
try:
|
|
from .tools.PythonSQL import login_base
|
|
except:
|
|
print('Pas de fichier PythonSQL')
|
|
|
|
from .tools.SQLRequet import *
|
|
|
|
from .tools.resources import (
|
|
load_ui,
|
|
resources_path,
|
|
send_issues,
|
|
create_vierge,
|
|
create_contour,
|
|
create_travaux,
|
|
create_habita
|
|
)
|
|
from .issues import CenRa_Issues
|
|
|
|
from qgis.utils import iface
|
|
import os.path
|
|
import webbrowser, os
|
|
import psycopg2
|
|
import psycopg2.extras
|
|
import base64
|
|
|
|
EDITOR_CLASS = load_ui('CenRa_Postgis_base.ui')
|
|
|
|
class Postgis_Creator(QDialog, EDITOR_CLASS):
|
|
|
|
def __init__(self, parent=None):
|
|
_ = parent
|
|
super().__init__()
|
|
self.setupUi(self)
|
|
self.settings = QgsSettings()
|
|
self.s = QSettings()
|
|
self.setWindowIcon(QtGui.QIcon(resources_path('icons','icon.png')))
|
|
self.iface = iface
|
|
|
|
# run method that performs all the real work
|
|
def raise_(self):
|
|
self.activateWindow()
|
|
# show the dialog
|
|
self.show()
|
|
# Run the dialog event loop
|
|
result = self.exec()
|
|
# See if OK was pressed
|
|
if result == 1:
|
|
|
|
#**********************************Debut_script****************************************
|
|
|
|
### Creation du schema pour le nouveau site
|
|
if self.at.isChecked():
|
|
schema = "_" + self.dept.currentText() + "_at_" + self.nom.text().lower() # Ajout de "_" pour eviter pb de numero en premier caractere
|
|
else :
|
|
schema = "_" + self.dept.currentText() + "_" + self.nom.text().lower() # Ajout de "_" pour eviter pb de numero en premier caractere
|
|
|
|
if self.nom.text() == "" or self.nom.text() == "NULL":
|
|
QMessageBox.warning(None, "Oups :", "Veuillez renseigner un nom de dossier.")
|
|
return
|
|
|
|
ch = [u"à", u"À", u"â", u"Â", u"ä", u"Ä", u"å", u"Å", u"ç", u"Ç", u"é", u"É", u"è", u"È", u"ê", u"Ê", u"ë", u"Ë", u"î", u"Î", u"ï", u"Ï", u"ô", u"Ô", u"ö", u"Ö", u"ù", u"Ù", u"û", u"Û", u"ü", u"Ü", u"ÿ", u"Ÿ", u"'", u"-", u" "]
|
|
for car in ch :
|
|
if self.nom.text().find(car) != -1 :
|
|
QMessageBox.warning(None, "Oups :", u"Le nom de dossier ne doit pas comporter de caractères spéciaux, ni d'espaces !\n\n\t" + self.nom.text().lower() )
|
|
return
|
|
account = login_base("account")
|
|
user = account[0]
|
|
mdp = account[1]
|
|
host = account[2]
|
|
port = account[3]
|
|
dbname = account[4]
|
|
cur = account[7]
|
|
con = account[8]
|
|
|
|
SQL_schema = "CREATE SCHEMA " + schema + ";"
|
|
SQL_GRANT_SCHEMA="GRANT CREATE, USAGE ON SCHEMA "+schema+" TO grp_qgis; GRANT CREATE, USAGE ON SCHEMA "+schema+" TO grp_sig;"
|
|
|
|
if self.couche_contour.isChecked() or self.couche_habitat.isChecked() or self.couche_travaux_prevus.isChecked() or self.couche_vierge.isChecked():
|
|
cur.execute(SQL_schema)
|
|
cur.execute(SQL_GRANT_SCHEMA)
|
|
else:
|
|
iface.messageBar().pushMessage("POSTGRESQL :", "Pas de couche sélectionnée, création refusée.", level=Qgis.Warning, duration=30)
|
|
|
|
create_contour(self,schema,cur,con,host ,port ,dbname ,user ,mdp)
|
|
create_habita(self,schema,cur,con,host ,port ,dbname ,user ,mdp)
|
|
create_travaux(self,schema,cur,con,host ,port ,dbname ,user ,mdp)
|
|
create_vierge(self,schema,cur,con,host ,port ,dbname ,user ,mdp)
|
|
|
|
|
|
con.close()
|
|
pass |