"""Tools to work with resource files.""" import configparser import shutil import tempfile # import base64 # import psycopg2 # import psycopg2.extras import os 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\\tools"))) 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 pyperclip(): dst = dirname(dirname(__file__)) + "\\tools\\" if os.access('N:/', os.R_OK): src = 'N:/SI_Systeme d information/Z_QGIS/PLUGIN/PythonSQL.py' try: shutil.copy(src, dst) except FileNotFoundError: print('404') except UnboundLocalError: print('404') def send_issues(url, titre, body, labels): import requests import urllib.request 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} try: urllib.request.urlopen('https://google.com') binar = True except ValueError: binar = False r = '' if binar: r = requests.post(url, data=json.dumps(payload), headers=headers) return r def maj_verif(NAME): import qgis import urllib.request iface = qgis.utils.iface from qgis.core import Qgis # url = qgis.utils.pluginMetadata(NAME, 'repository') # URL = url+'/raw/branch/main/plugins.xml' URL = 'https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/plugins.xml' # print(URL) version = qgis.utils.pluginMetadata(NAME, 'version') len_version = len(version) try: urllib.request.urlopen('https://google.com') binar = True except urllib.error.URLError: binar = False if binar: try: 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) except urllib.error.URLError: print("error gitea version ssl") else: iface.messageBar().pushMessage("WiFi :", "Pas de connection à internet.", level=Qgis.Warning, duration=30) def devlog(NAME): import qgis devmaj = '' devmaj = devmaj + qgis.utils.pluginMetadata(NAME, 'changelog') return devmaj