def run(self): package = "veriso.modules.nplso.checks.bauzonenplan" try: module = "%s.bemerkungen" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() module = "%s.checklayer" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() module = "%s.nutzungsplanungslayer" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() module = "%s.referenzlayer" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() module = "%s.grundlagelayer" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() except Exception as e: self.message_bar.pushMessage("Error", str(e), level=QgsMessageBar.CRITICAL, duration=0)
def do_show_complex_check(self, folder, check): modules_dir = os.path.join(get_modules_dir()) module_dir = os.path.join(modules_dir, self.module, 'checks', folder) # Search first in the module, if the check doesn't exist, try in the # extended module if (os.path.exists(module_dir)): module = "veriso.modules.%s.checks.%s.%s" % (self.module, folder, check["file"]) else: module = "veriso.modules.%s.checks.%s.%s" % (self.module_extended, folder, check["file"]) try: module = dynamic_import(module) c = module.ComplexCheck(self.iface) c.run() except Exception: exc_type, exc_value, exc_traceback = sys.exc_info() self.message_bar.pushMessage( self.module_name, str(traceback.format_exc(exc_traceback)), Qgis.Critical, duration=0) return
def run(self): package = "veriso.modules.pnf.checks.perimeterrand" try: module = "%s.maengel" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() module = "%s.checklayer" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() except Exception as e: self.message_bar.pushMessage("Error", str(e), level=QgsMessageBar.CRITICAL, duration=0)
def run(self): package = "veriso.modules.pnf.checks.agi_verifikation" try: module = "%s.differenzlayer" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() module = "%s.strassenachsentests" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() except Exception as e: self.message_bar.pushMessage("Error", str(e), level=QgsMessageBar.CRITICAL, duration=0)
def get_checks_from_files(module_name, topic_dir, modules_dir=None): """ :param module_name: :param topic_dir: :param modules_dir: :return: """ if modules_dir is None: modules_dir = get_modules_dir() path = os.path.join(modules_dir, module_name, 'checks', topic_dir) package = 'veriso.modules.%s.checks.%s' % (module_name, topic_dir) checks = [] files = os.listdir(path) # alpha-numeric sorting to assure the same order in the menus # see http://stackoverflow.com/a/2669523/1193450 # files = sorted(files, key=lambda item: ( # int(item.partition(' ')[0]) if item[0].isdigit() else float('inf'), # item)) try: locale = QSettings().value('locale/userLocale')[0:2] except TypeError: locale = 'de' for f in files: check = {} if f.endswith(".py") and f != '__init__.py': filename = f[:-3] module = '%s.%s' % (package, filename) try: module = dynamic_import(module) check['id'] = filename check['file'] = filename check['name'] = module.ComplexCheck.get_name() if check['name'] is not None: # name is defined in the class check['shortcut'] = module.ComplexCheck.get_shortcut() else: # let's see if there is a yaml file as our last resort yaml_path = os.path.join(path, filename + '.yml') check['name'], check['shortcut'] = get_info_from_yaml( yaml_path) # if we made it to here, it's all good checks.append(check) except: continue elif f.endswith('_separator'): check['name'] = 'separator' # checks.append(check) checks = sorted(checks, key=lambda k: k["name"][locale]) return checks
def do_load_project(self, project): # verified on osx, str(project[...]) return future.newstring, that # QSettings doesn't use it correctly. With native, use of standard # python string is forced. self.settings.setValue("project/id", str(project["id"])) self.settings.setValue("project/displayname", str(project["displayname"])) self.settings.setValue("project/appmodule", str(project["appmodule"])) self.settings.setValue("project/appmodulename", str(project["appmodulename"])) self.settings.setValue("project/ilimodelname", str(project["ilimodelname"])) self.settings.setValue("project/epsg", str(project["epsg"])) self.settings.setValue("project/provider", str(project["provider"])) if 'dbhost' in project: self.settings.setValue("project/dbhost", str(project["dbhost"])) if 'dbport' in project: self.settings.setValue("project/dbport", str(project["dbport"])) if 'dbname' in project: self.settings.setValue("project/dbname", str(project["dbname"])) self.settings.setValue("project/dbschema", str(project["dbschema"])) if 'dbuser' in project: self.settings.setValue("project/dbuser", str(project["dbuser"])) if 'dbpwd' in project: self.settings.setValue("project/dbpwd", str(project["dbpwd"])) if 'dbadmin' in project: self.settings.setValue("project/dbadmin", str(project["dbadmin"])) if 'dbadminpwd' in project: self.settings.setValue("project/dbadminpwd", str(project["dbadminpwd"])) if 'projectdir' in project: self.settings.setValue("project/projectdir", str(project["projectdir"])) self.settings.setValue("project/max_scale", str(project["max_scale"])) module_name = project["appmodule"].lower() try: module_name = "veriso.modules." + module_name + ".applicationmodule" module = dynamic_import(module_name) application_module = module.ApplicationModule(self) application_module.init_gui() if project["max_scale"]: self.set_max_scale(project["max_scale"]) else: self.unset_max_scale() except Exception as e: self.message_bar.pushMessage("VeriSO", str(e), level=Qgis.Critical, duration=0)
def run(self): package = "veriso.modules.veriso_v_d.checks.bb" try: module = "%s.utils_realestate" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() module = "%s.checklayer" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() module = "%s.overview" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() except Exception as e: self.message_bar.pushMessage("Error", str(e), level=Qgis.Critical, duration=0)
def run(self): package = "veriso.modules.veriso_ee.checks.gebaeudeadressen" try: module = "%s.lokalisation" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() module = "%s.checklayer" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() module = "%s.basislayer" % package _temp = dynamic_import(module) c = _temp.ComplexCheck(self.iface) c.run() except Exception as e: exc_type, exc_value, exc_traceback = sys.exc_info() self.message_bar.pushMessage("Error", str(e), level=QgsMessageBar.CRITICAL, duration=0)
def do_show_complex_check(self, folder, check): module = "veriso.modules.%s.checks.%s.%s" % (self.module, folder, check["file"]) try: module = dynamic_import(module) c = module.ComplexCheck(self.iface) c.run() except Exception: exc_type, exc_value, exc_traceback = sys.exc_info() self.message_bar.pushMessage( self.module_name, str(traceback.format_exc(exc_traceback)), QgsMessageBar.CRITICAL, duration=0) return
def do_load_project(self, project): self.settings.setValue("project/id", str(project["id"])) self.settings.setValue("project/displayname", str(project["displayname"])) self.settings.setValue("project/appmodule", str(project["appmodule"])) self.settings.setValue("project/appmodulename", str(project["appmodulename"])) self.settings.setValue("project/ilimodelname", str(project["ilimodelname"])) self.settings.setValue("project/epsg", str(project["epsg"])) self.settings.setValue("project/provider", str(project["provider"])) self.settings.setValue("project/dbhost", str(project["dbhost"])) self.settings.setValue("project/dbport", str(project["dbport"])) self.settings.setValue("project/dbname", str(project["dbname"])) self.settings.setValue("project/dbschema", str(project["dbschema"])) self.settings.setValue("project/dbuser", str(project["dbuser"])) self.settings.setValue("project/dbpwd", str(project["dbpwd"])) self.settings.setValue("project/dbadmin", str(project["dbadmin"])) self.settings.setValue("project/dbadminpwd", str(project["dbadminpwd"])) self.settings.setValue("project/projectdir", str(project["projectdir"])) module_name = str(project["appmodule"]).lower() try: module_name = "veriso.modules." + module_name + ".applicationmodule" module = dynamic_import(module_name) application_module = module.ApplicationModule( self.iface, self.toolbar, self.locale_path) application_module.init_gui() except Exception as e: self.message_bar.pushMessage("VeriSO", str(e), QgsMessageBar.CRITICAL, duration=0)
def get_checks_from_files(module_name, topic_dir, modules_dir=None): """ :param module_name: :param topic_dir: :param modules_dir: :return: """ if modules_dir is None: modules_dir = get_modules_dir() path = os.path.join(modules_dir, module_name, 'checks', topic_dir) package = 'veriso.modules.%s.checks.%s' % (module_name, topic_dir) checks = [] files = os.listdir(path) # alpha-numeric sorting to assure the same order in the menus # see http://stackoverflow.com/a/2669523/1193450 files = sorted(files, key=lambda item: ( int(item.partition(' ')[0]) if item[0].isdigit() else float('inf'), item)) for f in files: check = {} if f.endswith(".py") and f != '__init__.py': filename = f[:-3] module = '%s.%s' % (package, filename) try: module = dynamic_import(module) check['id'] = filename check['file'] = filename check['shortcut'] = module.ComplexCheck.get_shortcut() check['name'] = module.ComplexCheck.get_name() checks.append(check) except: continue return checks
def do_load_defects(self): defects_module = 'veriso.modules.tools.loaddefects' defects_module = dynamic_import(defects_module) d = defects_module.LoadDefects(self.iface, self.module, self.module_name) d.run()
def test_dynamic_import(self): dynamic_import('veriso.base.utils.exceptions') with self.assertRaises(VerisoError): dynamic_import('veriso.base.utils.lalala')
def do_load_defects(self): defects_module = 'veriso.modules.loaddefects_base' defects_module = dynamic_import(defects_module) d = defects_module.LoadDefectsBase(self.iface, self.module_name) return d.run()
def do_export_defects(self): defects_module = 'veriso.modules.tools.exportdefects' defects_module = dynamic_import(defects_module) d = defects_module.ExportDefects(self.iface, self.module, self.module_name) d.run()
def do_load_defects(self): # example of how to add your own defect layers or fields defects_module = 'veriso.modules.loaddefects_base' defects_module = dynamic_import(defects_module) d = defects_module.LoadDefectsBase(self.iface, self.module_name) fields = { 'ogc_fid': { 'widget': 'TextEdit', 'readonly': True, 'config': { "Editable": False } }, 'topic': { 'widget': 'Enumeration', 'default': 'Bodenbedeckung', 'alias': 'Topic:', 'writable_only_by': ['agi', 'avor'] }, 'bezeichnun': { 'widget': 'Enumeration', 'alias': 'Bezeichnung:', 'writable_only_by': ['agi', 'avor'] }, 'abrechnung': { 'widget': 'Enumeration', 'default': 'PNF', 'alias': 'Abrechnung:', 'writable_only_by': ['agi', 'avor'] }, 'bem_avor': { 'widget': 'TextEdit', 'alias': 'Bemerkung AVOR:', 'config': { "IsMultiline": True }, 'writable_only_by': ['agi', 'avor'] }, 'datum': { 'widget': 'Hidden' }, 'bem_nfg': { 'widget': 'TextEdit', 'alias': 'Bemerkung NFG:', 'config': { "IsMultiline": True }, 'writable_only_by': ['agi', 'geometer'] }, 'forstorgan': { 'widget': 'Enumeration', 'alias': 'Forstorgan:', 'writable_only_by': ['agi', 'forst'] }, 'bem_forst': { 'widget': 'TextEdit', 'alias': 'Bemerkung Forst:', 'config': { "IsMultiline": True }, 'writable_only_by': ['agi', 'forst'] }, 'verifikati': { 'widget': 'Enumeration', 'alias': 'Verifikation:', 'writable_only_by': ['agi'] }, 'bem_verifi': { 'widget': 'TextEdit', 'alias': 'Bemerkung Verifikation:', 'config': { "IsMultiline": True }, 'writable_only_by': ['agi'] }, 'erledigt': { 'widget': 'CheckBox', 'alias': 'Erledigt:', 'config': { 'CheckedState': 't', 'UncheckedState': 'f' }, 'writable_only_by': ['agi'] } } d.layers['point']['fields'] = fields d.layers['line']['fields'] = fields d.layers['polygon']['fields'] = fields d.layers['point']['readonly'] = True d.layers['line']['readonly'] = True d.layers['polygon']['readonly'] = True return d.run()
def do_load_defects(self, defects_type): defects_module = 'veriso.modules.loaddefects_base' defects_module = dynamic_import(defects_module) tr_tag = self.module_name d = defects_module.LoadDefectsBase(self.iface, tr_tag, defects_type) if defects_type == "forest": d.group = tr("Mängel Wald", tr_tag) d.group += " (" + str(d.project_id) + ")" fields = { 'ogc_fid': { 'widget': 'TextEdit', 'readonly': True, 'config': { "Editable": False } }, 'topic': { 'widget': 'Enumeration', 'default': 'Bodenbedeckung', 'alias': 'Topic:', 'writable_only_by': ['agi', 'avor'] }, 'bezeichnun': { 'widget': 'Enumeration', 'alias': 'Bezeichnung:', 'writable_only_by': ['agi', 'avor'] }, 'abrechnung': { 'widget': 'Enumeration', 'default': 'PNF', 'alias': 'Abrechnung:', 'writable_only_by': ['agi', 'avor'] }, 'bem_avor': { 'widget': 'TextEdit', 'alias': 'Bemerkung AVOR:', 'config': { "IsMultiline": True }, 'writable_only_by': ['agi', 'avor'] }, 'datum': { 'widget': 'Hidden', 'alias': tr('datum', tr_tag) }, 'bem_nfg': { 'widget': 'TextEdit', 'alias': 'Bemerkung NFG:', 'config': { "IsMultiline": True }, 'writable_only_by': ['agi', 'geometer'] }, 'forstorgan': { 'widget': 'Enumeration', 'alias': 'Forstorgan:', 'writable_only_by': ['agi', 'forst'] }, 'bem_forst': { 'widget': 'TextEdit', 'alias': 'Bemerkung Forst:', 'config': { "IsMultiline": True }, 'writable_only_by': ['agi', 'forst'] }, 'verifikati': { 'widget': 'Enumeration', 'alias': 'Verifikation:', 'writable_only_by': ['agi'] }, 'bem_verifi': { 'widget': 'TextEdit', 'alias': 'Bemerkung Verifikation:', 'config': { "IsMultiline": True }, 'writable_only_by': ['agi'] }, 'erledigt': { 'widget': 'CheckBox', 'alias': 'Erledigt:', 'config': { 'CheckedState': 't', 'UncheckedState': 'f' }, 'writable_only_by': ['agi'] } } forest_fields = { 'ogc_fid': { 'widget': 'TextEdit', 'readonly': True, 'config': { "Editable": False } }, 'bezeichnung': { 'widget': 'Enumeration', 'alias': tr('Bezeichnung:', tr_tag), 'writable_only_by': ['agi', 'avor'] }, 'bem_av': { 'widget': 'TextEdit', 'alias': tr('Bemerkung AV:', tr_tag), 'config': { "IsMultiline": True }, 'writable_only_by': ['agi', 'avor'] }, 'datum': { 'widget': 'Hidden', 'alias': tr('datum', tr_tag) }, 'bem_forst': { 'widget': 'TextEdit', 'alias': tr('Bemerkung Forst:', tr_tag), 'config': { "IsMultiline": True }, 'writable_only_by': ['agi', 'forst'] }, } d.layers = { 'default': { 'point': { "type": "postgres", "title": tr("Mängelliste (Punkte)", tr_tag), "featuretype": "t_maengel_punkt", "geom": "the_geom", "key": "ogc_fid", "readonly": True, "sql": "", "group": d.group, "style": "maengel/maengelliste_punkte.qml", "fields": fields }, 'pointdesc': { "type": "postgres", "title": tr("Mängelliste (Punkte) Beschreibung", tr_tag), "featuretype": "t_maengel_punkt", "geom": "the_geom", "key": "ogc_fid", "readonly": True, "sql": "", "group": d.group, "style": "maengel/maengelliste_punkte_beschreibung.qml", "fields": fields }, 'line': { "type": "postgres", "title": tr("Mängelliste (Linien)", tr_tag), "featuretype": "t_maengel_linie", "geom": "the_geom", "key": "ogc_fid", "readonly": True, "sql": "", "group": d.group, "style": "maengel/maengelliste_linien.qml", "fields": fields }, 'linedesc': { "type": "postgres", "title": tr("Mängelliste (Linien) Beschreibung", tr_tag), "featuretype": "t_maengel_linie", "geom": "the_geom", "key": "ogc_fid", "readonly": True, "sql": "", "group": d.group, "style": "maengel/maengelliste_linien_beschreibung.qml", "fields": fields }, 'polygon': { "type": "postgres", "title": tr("Mängelliste (Polygone)", tr_tag), "featuretype": "t_maengel_polygon", "geom": "the_geom", "key": "ogc_fid", "readonly": True, "sql": "", "group": d.group, "style": "maengel/maengelliste_polygone.qml", "fields": fields }, 'polygondesc': { "type": "postgres", "title": tr("Mängelliste (Polygone) Beschreibung", tr_tag), "featuretype": "t_maengel_polygon", "geom": "the_geom", "key": "ogc_fid", "readonly": True, "sql": "", "group": d.group, "style": "maengel/maengelliste_polygone_beschreibung.qml", "fields": fields } }, 'forest': { 'point': { "type": "postgres", "title": tr("Mängelliste (Punkte)", tr_tag), "featuretype": "t_forest_maengel_punkt", "geom": "the_geom", "key": "ogc_fid", "readonly": True, "sql": "", "group": d.group, "style": "maengel/maengelliste_wald_punkte.qml", "fields": forest_fields }, 'pointdesc': { "type": "postgres", "title": tr("Mängelliste (Punkte) Beschreibung", tr_tag), "featuretype": "t_forest_maengel_punkt", "geom": "the_geom", "key": "ogc_fid", "readonly": True, "sql": "", "group": d.group, "style": "maengel/maengelliste_wald_punkte_beschreibung.qml", "fields": forest_fields } } } return d.run()