diff --git a/CenRa_COPIE/tools/HubToTea.py b/CenRa_COPIE/tools/HubToTea.py new file mode 100644 index 00000000..7428d53d --- /dev/null +++ b/CenRa_COPIE/tools/HubToTea.py @@ -0,0 +1,21 @@ +from qgis.core import QgsApplication + +def gitea(): + file_url = QgsApplication.qgisSettingsDirPath()+'QGIS/QGIS3.ini' + recherche_1 = 'plugin_repositories\\github\\url=https://github.com/CEN-Rhone-Alpes/Plugin_QGIS/releases/latest/download/plugins.xml' + replace_1 = 'plugin_repositories\\gitea\\url=https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/plugins.xml' + + recherche_2 = 'github' + replace_2 = 'gitea' + + # Read in the file + with open(file_url, 'r') as file: + filedata = file.read() + + # Replace the target string + filedata = filedata.replace(recherche_1, replace_1) + filedata = filedata.replace(recherche_2, replace_2) + + # Write the file out again + with open(file_url, 'w') as file: + file.write(filedata) \ No newline at end of file diff --git a/CenRa_COPIE/tools/PythonSQL.py b/CenRa_COPIE/tools/PythonSQL.py new file mode 100644 index 00000000..98807605 --- /dev/null +++ b/CenRa_COPIE/tools/PythonSQL.py @@ -0,0 +1,172 @@ +import sys +import socket +import os +IPAddr=socket.gethostbyname(socket.gethostname()) +if IPAddr[0:11] == "100.100.100": #4269 + host = "100.100.100.11" + port = "5432" + dbname = "sig4269" + sigdb="sig4269" + refdb="ref_geo4269" + password = "McVities" +if IPAddr[0:9] == "192.168.0": #01 + host = "192.168.0.201" + port = "5432" + dbname = "sig01" + sigdb="sig01" + refdb="ref_geo01" + password = "McVities" +if IPAddr[0:9] == "192.168.1": #0726 + host = "192.168.1.201" + port = "5432" + dbname = "sig0726" + sigdb="sig0726" + refdb="ref_geo0726" + password = "McVities" +if sys.platform == 'linux': + os_user = os.environ['USER'] +else: + os_user = os.environ['USERNAME'] +if os_user == 'STAGE': + os_user='stage' + +geom = "geom" +champ_travaux_prevus_multipolygon="""(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, surface_m2 double precision, surface_ha double precision, date_creation date, date_maj date, geom geometry(MultiPolygon,2154))""" +champ_travaux_prevus_multilinestring="""(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, longueur_m double precision, longueur_km double precision, date_creation date, date_maj date, geom geometry(MultiLineString,2154))""" +champ_travaux_prevus_point = """(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, x_wgs84 double precision, y_wgs84 double precision, date_creation date, date_maj date, geom geometry(Point,2154))""" + +champ_viergePolygone = """(gid serial NOT NULL, commentaire text, surface_m2 double precision, surface_ha double precision, geom geometry(MultiPolygon,2154))""" +champ_viergeLigne = """(gid serial NOT NULL, commentaire text, longueur_m double precision, longueur_km double precision, geom geometry(MultiLineString,2154))""" +champ_viergePoint = """(gid serial NOT NULL, commentaire text, x_wgs84 double precision, y_wgs84 double precision, geom geometry(Point,2154))""" + +champ_habitat = """(gid serial NOT NULL, cd_cb_01 text, lb_cb97_fr_01 text, occupation_01 integer, cd_cb_02 text, lb_cb97_fr_02 text, occupation_02 integer, cd_cb_03 text, lb_cb97_fr_03 text, occupation_03 integer, milieu_code text, milieu_libelle text, surface_m2 double precision, surface_ha double precision, commentaire text, date_creation date, date_maj date, geom geometry(MultiPolygon,2154))""" + +champ_contour="""(gid serial NOT NULL, date_creation date, date_maj date, utilisateur character varying, dept character(2), nom character varying, surface_m2 double precision, surface_ha double precision, type_site character varying, type_milieu character varying, date_premier_pg integer, date_debut_pg integer, date_fin_pg integer, referent character varying, gestion_deleguee character varying, terrain_militaire character(3), ens character(3), zh character(3), adapt_pmr character(3), inform character(3), guide character(3), ouverture_public character(3), obs character(3), anim character(3), n2000_anim character(3), contrat_n2000_conseil character(3), n2000_op character(3), contrat_n2000_benef character(3), contrat_agri character(3), bc_habitat integer, bc_amphibien integer, bc_coleoptere integer, bc_crustace integer, bc_mammifere integer, bc_chiroptere integer, bc_mollusque integer, bc_odonate integer, bc_oiseau integer, bc_orthoptere integer, bc_poisson integer, bc_reptile integer, bc_rhopalocere integer, bc_heterocere integer, bc_autre_invertebre integer, bc_flore integer, bc_bryophyte integer, bc_champignon integer, suiv_analyse_sol character(3), suiv_piezo character(3), suiv_climat character(3), suiv_topo character(3), suiv_habitat character(3), suiv_amphibien character(3), suiv_coleoptere character(3), suiv_crustace character(3), suiv_mammifere character(3), suiv_chiroptere character(3), suiv_mollusque character(3), suiv_odonate character(3), suiv_oiseau character(3), suiv_orthoptere character(3), suiv_poisson character(3), suiv_reptile character(3), suiv_rhopalocere character(3), suiv_heterocere character(3), suiv_autre_invertebre character(3), suiv_flore character(3), suiv_bryophyte character(3), suiv_champignon character(3), suiv_analyse_eau character(3), suiv_phenologie character(3), suiv_frequentation character(3), suiv_paysager character(3), suiv_autre character(3), commentaire text, geom geometry(MultiPolygon,2154)) +""" + +champ_vegethab_point = """( + gid serial NOT NULL , + cd_eu_01 character varying(254) COLLATE pg_catalog."default", + lb_eu_01 character varying(254) COLLATE pg_catalog."default", + occupati_1 bigint, + cd_eu_02 character varying(254) COLLATE pg_catalog."default", + lb_eu_02 character varying(254) COLLATE pg_catalog."default", + occupati_2 bigint, + cd_eu_03 character varying(254) COLLATE pg_catalog."default", + lb_eu_03 character varying(254) COLLATE pg_catalog."default", + occupati_3 bigint, + milieu_cod character varying(254) COLLATE pg_catalog."default", + milieu_lib character varying(254) COLLATE pg_catalog."default", + x_wgs84 double precision, + y_wgs84 double precision, + commentair character varying(254) COLLATE pg_catalog."default", + date_creat date, + date_maj date, + num_phyto character varying(254) COLLATE pg_catalog."default", + type_unite character varying(254) COLLATE pg_catalog."default", + dynamique character varying(254) COLLATE pg_catalog."default", + gestio_obs character varying(254) COLLATE pg_catalog."default", + degrad_obs character varying(254) COLLATE pg_catalog."default", + eta_conser character varying(254) COLLATE pg_catalog."default", + clas_phyto character varying(254) COLLATE pg_catalog."default", + alli_phyto character varying(254) COLLATE pg_catalog."default", + syntaxon character varying(254) COLLATE pg_catalog."default", + n2000 character varying(254) COLLATE pg_catalog."default", + lrr_aura character varying(254) COLLATE pg_catalog."default", + lrr_cbna character varying(254) COLLATE pg_catalog."default", + lrr_cbnmc character varying(254) COLLATE pg_catalog."default", + vege_enjeu character varying(254) COLLATE pg_catalog."default", + num_photo character varying(254) COLLATE pg_catalog."default", + nature_obs character varying(254) COLLATE pg_catalog."default", + date_sais date, + s_al_phyto character varying(254) COLLATE pg_catalog."default", + alli_name character varying(254) COLLATE pg_catalog."default", + salli_name character varying(254) COLLATE pg_catalog."default", + class_name character varying(254) COLLATE pg_catalog."default", + geom geometry(Point,2154) +) +""" +champ_vegethab_multilinestring = """( + gid serial NOT NULL , + cd_eu_01 character varying(254) COLLATE pg_catalog."default", + lb_eu_01 character varying(254) COLLATE pg_catalog."default", + occupati_1 bigint, + cd_eu_02 character varying(254) COLLATE pg_catalog."default", + lb_eu_02 character varying(254) COLLATE pg_catalog."default", + occupati_2 bigint, + cd_eu_03 character varying(254) COLLATE pg_catalog."default", + lb_eu_03 character varying(254) COLLATE pg_catalog."default", + occupati_3 bigint, + milieu_cod character varying(254) COLLATE pg_catalog."default", + milieu_lib character varying(254) COLLATE pg_catalog."default", + longueur_m double precision, + longueur_km double precision, + commentair character varying(254) COLLATE pg_catalog."default", + date_creat date, + date_maj date, + num_phyto character varying(254) COLLATE pg_catalog."default", + type_unite character varying(254) COLLATE pg_catalog."default", + dynamique character varying(254) COLLATE pg_catalog."default", + gestio_obs character varying(254) COLLATE pg_catalog."default", + degrad_obs character varying(254) COLLATE pg_catalog."default", + eta_conser character varying(254) COLLATE pg_catalog."default", + clas_phyto character varying(254) COLLATE pg_catalog."default", + alli_phyto character varying(254) COLLATE pg_catalog."default", + syntaxon character varying(254) COLLATE pg_catalog."default", + n2000 character varying(254) COLLATE pg_catalog."default", + lrr_aura character varying(254) COLLATE pg_catalog."default", + lrr_cbna character varying(254) COLLATE pg_catalog."default", + lrr_cbnmc character varying(254) COLLATE pg_catalog."default", + vege_enjeu character varying(254) COLLATE pg_catalog."default", + num_photo character varying(254) COLLATE pg_catalog."default", + nature_obs character varying(254) COLLATE pg_catalog."default", + date_sais date, + s_al_phyto character varying(254) COLLATE pg_catalog."default", + alli_name character varying(254) COLLATE pg_catalog."default", + salli_name character varying(254) COLLATE pg_catalog."default", + class_name character varying(254) COLLATE pg_catalog."default", + geom geometry(MultiLineString,2154) +) +""" +champ_vegethab_multipolygon = """( + gid serial NOT NULL , + cd_eu_01 character varying(254) COLLATE pg_catalog."default", + lb_eu_01 character varying(254) COLLATE pg_catalog."default", + occupati_1 bigint, + cd_eu_02 character varying(254) COLLATE pg_catalog."default", + lb_eu_02 character varying(254) COLLATE pg_catalog."default", + occupati_2 bigint, + cd_eu_03 character varying(254) COLLATE pg_catalog."default", + lb_eu_03 character varying(254) COLLATE pg_catalog."default", + occupati_3 bigint, + milieu_cod character varying(254) COLLATE pg_catalog."default", + milieu_lib character varying(254) COLLATE pg_catalog."default", + surface_m2 numeric, + surface_ha numeric, + commentair character varying(254) COLLATE pg_catalog."default", + date_creat date, + date_maj date, + num_phyto character varying(254) COLLATE pg_catalog."default", + type_unite character varying(254) COLLATE pg_catalog."default", + dynamique character varying(254) COLLATE pg_catalog."default", + gestio_obs character varying(254) COLLATE pg_catalog."default", + degrad_obs character varying(254) COLLATE pg_catalog."default", + eta_conser character varying(254) COLLATE pg_catalog."default", + clas_phyto character varying(254) COLLATE pg_catalog."default", + alli_phyto character varying(254) COLLATE pg_catalog."default", + syntaxon character varying(254) COLLATE pg_catalog."default", + n2000 character varying(254) COLLATE pg_catalog."default", + lrr_aura character varying(254) COLLATE pg_catalog."default", + lrr_cbna character varying(254) COLLATE pg_catalog."default", + lrr_cbnmc character varying(254) COLLATE pg_catalog."default", + vege_enjeu character varying(254) COLLATE pg_catalog."default", + num_photo character varying(254) COLLATE pg_catalog."default", + nature_obs character varying(254) COLLATE pg_catalog."default", + date_sais date, + s_al_phyto character varying(254) COLLATE pg_catalog."default", + alli_name character varying(254) COLLATE pg_catalog."default", + salli_name character varying(254) COLLATE pg_catalog."default", + class_name character varying(254) COLLATE pg_catalog."default", + geom geometry(MultiPolygon,2154) +) +""" \ No newline at end of file diff --git a/CenRa_COPIE/tools/resources.py b/CenRa_COPIE/tools/resources.py new file mode 100644 index 00000000..26eeef81 --- /dev/null +++ b/CenRa_COPIE/tools/resources.py @@ -0,0 +1,164 @@ +"""Tools to work with resource files.""" + +import configparser +import shutil +import tempfile +import base64 +import psycopg2 +import psycopg2.extras +from os.path import abspath, join, pardir, dirname + +from qgis.PyQt import uic + +__copyright__ = "Copyright 2019, 3Liz" +__license__ = "GPL version 3" +__email__ = "info@3liz.org" +__revision__ = "$Format:%H$" + + +def plugin_path(*args): + """Get the path to plugin root folder. + + :param args List of path elements e.g. ['img', 'logos', 'image.png'] + :type args: str + + :return: Absolute path to the plugin path. + :rtype: str + """ + path = dirname(dirname(__file__)) + path = abspath(abspath(join(path, pardir))) + for item in args: + path = abspath(join(path, item)) + + return path + + +def plugin_name(): + """Return the plugin name according to metadata.txt. + + :return: The plugin name. + :rtype: basestring + """ + metadata = metadata_config() + name = metadata["general"]["name"] + return name + + +def metadata_config() -> configparser: + """Get the INI config parser for the metadata file. + + :return: The config parser object. + :rtype: ConfigParser + """ + path = plugin_path("metadata.txt") + config = configparser.ConfigParser() + config.read(path, encoding='utf8') + return config + + +def plugin_test_data_path(*args, copy=False): + """Get the path to the plugin test data path. + + :param args List of path elements e.g. ['img', 'logos', 'image.png'] + :type args: str + + :param copy: If the file must be copied into a temporary directory first. + :type copy: bool + + :return: Absolute path to the resources folder. + :rtype: str + """ + path = abspath(abspath(join(plugin_path(), "test", "data"))) + for item in args: + path = abspath(join(path, item)) + + if copy: + temp = tempfile.mkdtemp() + shutil.copy(path, temp) + return join(temp, args[-1]) + else: + return path + + +def resources_path(*args): + """Get the path to our resources folder. + + :param args List of path elements e.g. ['img', 'logos', 'image.png'] + :type args: str + + :return: Absolute path to the resources folder. + :rtype: str + """ + path = abspath(abspath(join(plugin_path(), "CenRa_Metabase\\resources"))) + for item in args: + path = abspath(join(path, item)) + return path + + +def load_ui(*args): + """Get compile UI file. + + :param args List of path elements e.g. ['img', 'logos', 'image.png'] + :type args: str + + :return: Compiled UI file. + """ + ui_class, _ = uic.loadUiType(resources_path("ui", *args)) + + return ui_class + +def login_base(take=None): + from CenRa_Metabase.resources.PythonSQL import host,port,dbname,password,os_user + first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password) + first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor) + first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')") + res_ident = first_cur.fetchone() + mdp = base64.b64decode(str(res_ident[0])).decode('utf-8') + user = res_ident[1] + + #con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp) + con = psycopg2.connect("host=" + '100.100.100.81' + " port=" + port + " dbname="+'postgres'+" user=" + 'tlaveille' + " password=" + 'tlaveille') + cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor) + first_conn.close() + + if take: + return cur,con + else: + return cur +def send_issues(url,titre,body,labels): + import requests + import json + import os + import qgis + + usr = os.environ['USERNAME'] + token = '9d0a4e0bea561710e0728f161f7edf4e5201e112' + url=url+'?token='+token + + headers = {'Authorization': 'token ' + token,'accept': 'application/json','Content-Type': 'application/json'} + + + payload = {'title': titre, 'body': body, 'labels': labels} + + r = requests.post(url, data=json.dumps(payload), headers=headers) + print(r.text) + return r + +def maj_verif(NAME): + import qgis + import urllib + from qgis.utils import iface + from qgis.core import Qgis + + url = qgis.utils.pluginMetadata(NAME,'repository') + URL = url+'/raw/branch/main/plugins.xml' +# print(URL) + version = qgis.utils.pluginMetadata(NAME,'version') + len_version = len(version) + version_web = str(urllib.request.urlopen(URL).read()) + plugin_num = version_web.find(NAME) + valeur_version_web = version_web.find('',plugin_num)+9 + version_plugin = version_web[valeur_version_web:valeur_version_web+len_version] + + if version_plugin == version: + qgis.utils.iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30) \ No newline at end of file