From 3320ba1dd9d391b1c7c1ca6813dbca8c2f09762a Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Fri, 2 Aug 2024 10:17:20 +0200 Subject: [PATCH] =?UTF-8?q?T=C3=A9l=C3=A9verser=20les=20fichiers=20vers=20?= =?UTF-8?q?"CenRa=5FFLUX/tools"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CenRa_FLUX/tools/HubToTea.py | 21 +++ CenRa_FLUX/tools/PythonSQL.cpython-312.pyc | Bin 0 -> 12936 bytes CenRa_FLUX/tools/PythonSQL.py | 185 +++++++++++++++++++++ CenRa_FLUX/tools/resources.cpython-312.pyc | Bin 0 -> 7482 bytes CenRa_FLUX/tools/resources.py | 162 ++++++++++++++++++ 5 files changed, 368 insertions(+) create mode 100644 CenRa_FLUX/tools/HubToTea.py create mode 100644 CenRa_FLUX/tools/PythonSQL.cpython-312.pyc create mode 100644 CenRa_FLUX/tools/PythonSQL.py create mode 100644 CenRa_FLUX/tools/resources.cpython-312.pyc create mode 100644 CenRa_FLUX/tools/resources.py diff --git a/CenRa_FLUX/tools/HubToTea.py b/CenRa_FLUX/tools/HubToTea.py new file mode 100644 index 00000000..7428d53d --- /dev/null +++ b/CenRa_FLUX/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_FLUX/tools/PythonSQL.cpython-312.pyc b/CenRa_FLUX/tools/PythonSQL.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b744f9cd956330452dcc7cf89e6a2001b4217a21 GIT binary patch literal 12936 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 De#kBL literal 0 HcmV?d00001 diff --git a/CenRa_FLUX/tools/resources.py b/CenRa_FLUX/tools/resources.py new file mode 100644 index 00000000..0648fed3 --- /dev/null +++ b/CenRa_FLUX/tools/resources.py @@ -0,0 +1,162 @@ +"""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 + + 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: + iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30) \ No newline at end of file