Téléverser les fichiers vers "/"
This commit is contained in:
commit
c618d76f28
207
create_sessionAF_dialog.py
Normal file
207
create_sessionAF_dialog.py
Normal file
@ -0,0 +1,207 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
/***************************************************************************
|
||||
CreateSessionAFDialog
|
||||
A QGIS plugin
|
||||
Permet de créer une nouvelle session d'animation foncière
|
||||
-------------------
|
||||
begin : 2015-10-02
|
||||
git sha : $Format:%H$
|
||||
copyright : (C) 2015 by CEN Savoie
|
||||
email : a.lesconnec@cen-savoie.org
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
"""
|
||||
|
||||
import os
|
||||
import psycopg2
|
||||
import psycopg2.extras
|
||||
from PyQt5 import QtGui, uic
|
||||
from PyQt5.QtCore import *
|
||||
from PyQt5.QtGui import *
|
||||
from PyQt5.QtWidgets import QDialog, QMessageBox
|
||||
from functools import partial
|
||||
import datetime
|
||||
from time import localtime, strftime
|
||||
|
||||
FORM_CLASS, _ = uic.loadUiType(os.path.join(os.path.dirname(__file__), 'create_sessionAF_dialog_base.ui'))
|
||||
|
||||
class CreateSessionAFDialog(QDialog, FORM_CLASS):
|
||||
def __init__(self, parent=None):
|
||||
"""Constructor."""
|
||||
super(CreateSessionAFDialog, self).__init__(parent)
|
||||
self.setupUi(self)
|
||||
|
||||
def InitFormulaire(self, tbl_site_id, rq_saf_geom, acces, host, port, bdd, user, mdp):
|
||||
self.lst_saf_maj.blockSignals(True)
|
||||
self.lst_saf_origin.blockSignals(True)
|
||||
self.saf_utilisateur.setText(user)
|
||||
aujourdhui = strftime("%Y-%m", localtime())
|
||||
self.saf_date.setText(aujourdhui)
|
||||
k = 0
|
||||
nom = 'SAF_'
|
||||
while k < len(tbl_site_id):
|
||||
nom += tbl_site_id[k] + '_'
|
||||
k = k + 1
|
||||
nom += aujourdhui
|
||||
self.saf_name.setText(nom)
|
||||
|
||||
global conn, cur
|
||||
conn = psycopg2.connect("host=" + host + " port=" + port + " dbname=" + bdd + " user=" + user + " password=" + mdp)
|
||||
cur = conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||
|
||||
with conn:
|
||||
with conn.cursor() as cur:
|
||||
# Initialisation de la liste de l'origine de la SAF
|
||||
rq_saf_origines = "SELECT DISTINCT saf_origine_id, saf_origine_lib FROM animation_fonciere.d_saf_origines ORDER BY saf_origine_id"
|
||||
cur.execute(rq_saf_origines)
|
||||
res_saf_origines = cur.fetchall()
|
||||
self.lst_saf_origin.clear() #Vidage de la combobox
|
||||
i = 0 #Déclaration à 0 d'une variable pour boucler sur toutes les options de la requête identifiée plus haut
|
||||
global tbl_saf_origin
|
||||
self.tbl_saf_origin = []
|
||||
self.lst_saf_origin.blockSignals(True)
|
||||
while i < len(res_saf_origines): #Boucle sur toutes les options
|
||||
id = res_saf_origines[i][0] #Déclaration de la variable stockant l'identifiant
|
||||
lib = res_saf_origines[i][1] #Déclaration de la variable stockant le libellé
|
||||
self.lst_saf_origin.addItem(lib)
|
||||
self.tbl_saf_origin.append(id)
|
||||
i+=1
|
||||
self.lst_saf_origin.setCurrentIndex(-1)
|
||||
self.lst_saf_origin.blockSignals(False)
|
||||
self.saf_origin.setVisible(0)
|
||||
self.saf_origin.setText('N.P.')
|
||||
self.lst_saf_origin.currentIndexChanged.connect(self.chg_lst_saf_origin)
|
||||
|
||||
# Initialisation de la liste des SAF modifiables
|
||||
rq_saf_maj = """
|
||||
SELECT *
|
||||
FROM
|
||||
(
|
||||
SELECT DISTINCT
|
||||
session_af_id,
|
||||
session_af_lib,
|
||||
st_distance(session_af.geom, ("""+rq_saf_geom+""")) as dist,
|
||||
date_maj
|
||||
FROM
|
||||
animation_fonciere.session_af
|
||||
|
||||
ORDER BY dist, date_maj DESC
|
||||
LIMIT 10
|
||||
) t1
|
||||
WHERE
|
||||
dist < 5000"""
|
||||
cur.execute(rq_saf_maj)
|
||||
res_saf_maj = cur.fetchall()
|
||||
self.lst_saf_maj.blockSignals(True)
|
||||
if cur.rowcount > 0:
|
||||
self.lst_saf_maj.clear() #Vidage de la combobox
|
||||
i = 0 #Déclaration à 0 d'une variable pour boucler sur toutes les options de la requête identifiée plus haut
|
||||
global tbl_saf_maj
|
||||
self.tbl_saf_maj = []
|
||||
while i < len(res_saf_maj): #Boucle sur toutes les options
|
||||
id = res_saf_maj[i][0] #Déclaration de la variable stockant l'identifiant
|
||||
lib = res_saf_maj[i][1] #Déclaration de la variable stockant le libellé
|
||||
self.lst_saf_maj.addItem(lib)
|
||||
self.tbl_saf_maj.append(id)
|
||||
i+=1
|
||||
self.lst_saf_maj.setCurrentIndex(-1)
|
||||
self.lst_saf_maj.blockSignals(False)
|
||||
self.saf_maj.setVisible(0)
|
||||
self.saf_maj.setText('N.P.')
|
||||
self.lst_saf_maj.setEnabled(True)
|
||||
self.lst_saf_maj.currentIndexChanged.connect(self.chg_lst_saf_maj)
|
||||
else:
|
||||
self.lst_saf_maj.setCurrentIndex(-1)
|
||||
self.saf_maj.setVisible(0)
|
||||
self.saf_maj.setText('N.P.')
|
||||
self.lst_saf_maj.setEnabled(False)
|
||||
self.button_box.setEnabled(False)
|
||||
self.lst_saf_maj.blockSignals(False)
|
||||
self.lst_saf_origin.blockSignals(False)
|
||||
|
||||
def chg_lst_saf_origin(self, index):
|
||||
self.lst_saf_maj.blockSignals(True)
|
||||
self.lst_saf_origin.blockSignals(True)
|
||||
|
||||
if len(self.tbl_saf_origin)>0 and self.tbl_saf_origin[index] and index>-1:
|
||||
self.saf_origin.setText(str(self.tbl_saf_origin[index]))
|
||||
|
||||
self.lst_saf_maj.setCurrentIndex(-1)
|
||||
self.saf_maj.setText('N.P.')
|
||||
|
||||
for i in range(self.tbl_parcelle.rowCount()):
|
||||
self.tbl_parcelle.showRow(i)
|
||||
|
||||
self.button_box.setEnabled(True)
|
||||
|
||||
self.lst_saf_maj.blockSignals(False)
|
||||
self.lst_saf_origin.blockSignals(False)
|
||||
|
||||
def chg_lst_saf_maj(self, index):
|
||||
self.lst_saf_maj.blockSignals(True)
|
||||
self.lst_saf_origin.blockSignals(True)
|
||||
|
||||
if len(self.tbl_saf_maj)>0 and self.tbl_saf_maj[index] and index>-1:
|
||||
self.saf_maj.setText(str(self.tbl_saf_maj[index]))
|
||||
|
||||
self.lst_saf_origin.setCurrentIndex(-1)
|
||||
self.saf_origin.setText('N.P.')
|
||||
|
||||
with conn:
|
||||
with conn.cursor() as cur:
|
||||
rq_parc_saf = """
|
||||
SELECT DISTINCT
|
||||
cad_site_id, cadastre_site.date_fin as date_fin_site, cadastre_cen.date_fin as date_fin_cen
|
||||
FROM
|
||||
animation_fonciere.rel_eaf_foncier
|
||||
JOIN animation_fonciere.rel_saf_foncier USING (rel_eaf_foncier_id)
|
||||
JOIN foncier.cadastre_site USING (cad_site_id)
|
||||
JOIN cadastre.cadastre_cen USING (cad_cen_id)
|
||||
WHERE
|
||||
lot_bloque = 'f' AND rel_saf_foncier.session_af_id = """+str(self.tbl_saf_maj[index])
|
||||
cur.execute(rq_parc_saf)
|
||||
res_parc_saf = cur.fetchall()
|
||||
i = 0 #Déclaration à 0 d'une variable pour boucler sur toutes les options de la requête identifiée plus haut
|
||||
self.tbl_parc_saf = []
|
||||
self.prob_saf = 'NON'
|
||||
while i < len(res_parc_saf): #Boucle sur toutes les options
|
||||
if res_parc_saf[i][1] != 'N.D.' or res_parc_saf[i][2] != 'N.D.':
|
||||
self.prob_saf = 'OUI'
|
||||
else:
|
||||
id = res_parc_saf[i][0] #Déclaration de la variable stockant l'identifiant
|
||||
self.tbl_parc_saf.append(id)
|
||||
i+=1
|
||||
|
||||
if self.prob_saf == 'OUI':
|
||||
QMessageBox.critical(None, "Attention", "Cette session comporte des alertes et doit être mise à jour")
|
||||
self.lst_saf_origin.setCurrentIndex(-1)
|
||||
self.saf_origin.setText('N.P.')
|
||||
self.lst_saf_maj.setCurrentIndex(-1)
|
||||
self.saf_maj.setText('N.P.')
|
||||
self.button_box.setEnabled(False)
|
||||
else :
|
||||
for r in range(self.tbl_parcelle.rowCount()):
|
||||
new_lot = 'NON'
|
||||
for cad_site_id in self.tbl_parcelle.item(r, 2).text().split(','):
|
||||
if cad_site_id not in self.tbl_parc_saf:
|
||||
new_lot = 'OUI'
|
||||
if new_lot == 'NON':
|
||||
self.tbl_parcelle.hideRow(r)
|
||||
else:
|
||||
self.tbl_parcelle.showRow(r)
|
||||
|
||||
self.button_box.setEnabled(True)
|
||||
|
||||
self.lst_saf_maj.blockSignals(False)
|
||||
self.lst_saf_origin.blockSignals(False)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user