예제 #1
0
    def __init__(self, iface, db, wizard_config,
                 product_factory: ProductFactory, observer):
        QObject.__init__(self)

        self._app = AppInterface()

        self._db = db
        self._wizard_config = wizard_config
        self._iface = iface

        self._logger = Logger()

        self._layers = self._wizard_config[WIZARD_LAYERS]
        self._editing_layer_name = self._wizard_config[
            WIZARD_EDITING_LAYER_NAME]
        self._editing_layer = self._layers[self._editing_layer_name]
        self._WIZARD_TOOL_NAME = self._wizard_config[WIZARD_TOOL_NAME]

        self.__settings_manager = WizardQSettingsManager(
            self._wizard_config[WIZARD_QSETTINGS][WIZARD_QSETTINGS_PATH])

        self._feature_manager = None
        self._feature_selector_on_map = None
        self._feature_selector_by_expression = None

        self.__product_factory = product_factory

        self._observer = observer
    def __init__(self, db, rules, tolerance, output_path=''):
        QObject.__init__(self)
        self.logger = Logger()
        self.app = AppInterface()

        self.__qr_registry = QualityRuleRegistry()

        self.__db = db
        self.__db_qr = None
        self.__rules = self.__get_dict_rules(rules)
        self.__result_layers = list()
        self.__with_gui = self.app.settings.with_gui
        self.__timestamp = ""

        self.__output_path = output_path

        self.app.settings.tolerance = tolerance  # Tolerance must be given, we don't want anything implicit about it
        self.__tolerance = self.app.settings.tolerance  # Tolerance input might be altered (e.g., if it comes negative)
        self.__layer_manager = QualityRuleLayerManager(db, self.__rules,
                                                       self.__tolerance)
        self.__layer_manager.progress_changed.connect(
            self.__emit_prepare_layers_progress)
        self.qr_logger = QualityRuleLogger(self.__db, self.__tolerance)
        self.__current_progress = 0
        self.__error_db_utils = QualityErrorDBUtils()
        self.__error_db_utils.progress_changed.connect(
            self.__emit_error_db_progress)

        # Clear informality cache before executing QRs.
        # Note: between creating an object of this class and calling validate_quality_rules() a lot
        # of things could happen (like new caches being built!). It is your responsibility to create
        # an instance of this class or initialize() a QREngine object just before calling validate_quality_rules().
        self.app.core.clear_cached_informal_spatial_units()
예제 #3
0
    def __init__(self):
        QObject.__init__(self)

        self.logger = Logger()
        self.app = AppInterface()

        self._converter_registry = XTFModelConverterRegistry()
예제 #4
0
    def __init__(self, db):
        QObject.__init__(self)
        self.app = AppInterface()
        self.logger = Logger()
        self.__db = db

        self.__tr_dict = TranslatableConfigStrings(
        ).get_translatable_config_strings()

        # Hierarquical dict of qrs and qr groups
        self.__qrs_tree_data = dict()  # {type: {qr_key1: qr_obj1, ...}, ...}

        # Hierarquical dict of qrs and qr groups with general results
        self.__general_results_tree_data = dict(
        )  # {type: {qr_obj1: qr_results1, ...}, ...}

        # Hierarchical dict of qrs and their corresponding error instances
        # feature1: {uuids, rel_uuids, error_type, nombre_ili_obj, details, values, fixed, exception, geom_fks}
        self.__error_results_data = dict()  # {qr_key1: {t_id1: feature1}}

        self.__qr_results_dir_path = ''  # Dir path where results will be stored
        self.__selected_qrs = list()  # QRs to be validated (at least 1)
        self.__selected_qr = None  # QR selected by the user to show its corresponding errors (exactly 1)

        self.__qr_engine = None  # Once set, we can reuse it
        self.__qrs_results = None  # QualityRulesExecutionResult object

        # To cache layers from QR DB
        self.__error_layer = None
        self.__point_layer = None
        self.__line_layer = None
        self.__polygon_layer = None

        # Cache by t_id (built on demand): {t_id1: 'Error', t_id2: 'Corregido', t_id3: 'Exception'}
        self.__error_state_dict = dict()
예제 #5
0
 def setUpClass(cls):
     print("\nINFO: Setting up copy CSV points to DB validation...")
     print("INFO: Restoring databases to be used")
     import_qgis_model_baker()
     import_asistente_ladm_col()
     cls.app = AppInterface()
     cls.app.core.initialize_ctm12()  # We need to initialize CTM12
    def __init__(self, parent, controller):
        QgsPanelWidget.__init__(self, parent)
        self.setupUi(self)
        self.parent = parent
        self._controller = controller
        self.logger = Logger()
        self.app = AppInterface()

        self.setDockMode(True)
        self.setPanelTitle(QCoreApplication.translate("AllocateParcelsFieldDataCapturePanelWidget", "Allocate parcels"))
        self.parent.setWindowTitle(QCoreApplication.translate("AllocateParcelsFieldDataCapturePanelWidget", "Allocate parcels"))

        self.tbl_parcels.resizeColumnsToContents()

        self.txt_search.valueChanged.connect(self.search_value_changed)
        self.tbl_parcels.itemSelectionChanged.connect(self.selection_changed)
        self.btn_allocate.clicked.connect(self.call_allocate_parcels_to_receiver_panel)
        self.btn_configure_receivers.clicked.connect(self.configure_receivers_panel_requested)
        self.btn_show_summary.clicked.connect(self.split_data_for_receivers_panel_requested)
        self.chk_show_only_not_allocated.stateChanged.connect(self.chk_check_state_changed)
        self.btn_reallocate.clicked.connect(self.reallocate_clicked)

        self.connect_to_plot_selection(True)

        self.__parcel_data = dict()  # {parcel_fid: (parcel_number, surveyor_name)}
        self.__selected_items = dict()  # {parcel_fid: parcel_number}
예제 #7
0
    def __init__(self):
        self.logger = Logger()
        self.app = AppInterface()
        self.__quality_rules = dict()  # {quality_rule_key1: QualityRule1, ...}

        # Register default quality rules
        self.register_quality_rule(QRValidateDataAgainstModel())  # QR_ILIVALIDATORR0001
        self.register_quality_rule(QROverlappingBoundaryPoints())  # QR_IGACR1001
        self.register_quality_rule(QRBoundaryPointsNotCoveredByBoundaryNodes())  # QR_IGACR1003
        self.register_quality_rule(QROverlappingBoundaries())  # QR_IGACR2001
        self.register_quality_rule(QROverlappingBuildings())  # QR_IGACR3002
        self.register_quality_rule(QRGapsInPlots())  # QR_IGACR3006
        self.register_quality_rule(QRMultiPartsInRightOfWay())  # QR_IGACR3007
        self.register_quality_rule(QRParcelRightRelationship())  # QR_IGACR4001
        self.register_quality_rule(QRParcelWithInvalidDepartmentCode())  # QR_IGACR4003
        self.register_quality_rule(QRParcelWithInvalidMunicipalityCode())  # QR_IGACR4004
        self.register_quality_rule(QRParcelWithInvalidParcelNumber())  # QR_IGACR4005
        self.register_quality_rule(QRParcelWithInvalidPreviousParcelNumber())  # QR_IGACR4006
        self.register_quality_rule(QRValidateNaturalParty())  # QR_IGACR4007
        self.register_quality_rule(QRValidateLegalParty())  # QR_IGACR4008
        self.register_quality_rule(QRDuplicateBoundaryPointRecords())  # QR_IGACR4011
        self.register_quality_rule(QRDuplicateSurveyPointRecords())  # QR_IGACR4012
        self.register_quality_rule(QRDuplicateControlPointRecords())  # QR_IGACR4013
        self.register_quality_rule(QRDuplicateBoundaryRecords())  # QR_IGACR4014
        self.register_quality_rule(QRDuplicateBuildingRecords())  # QR_IGACR4016
        self.register_quality_rule(QRDuplicateBuildingUnitRecords())  # QR_IGACR4017
        self.register_quality_rule(QRDuplicatePartyRecords())  # QR_IGACR4019
        self.register_quality_rule(QRDuplicateRightRecords())  # QR_IGACR4020
        self.register_quality_rule(QRDuplicateRestrictionRecords())  # QR_IGACR4021
        self.register_quality_rule(QRDuplicateAdministrativeSourceRecords())  # QR_IGACR4022
예제 #8
0
    def __init__(self):
        QObject.__init__(self)
        self.logger = Logger()
        self.app = AppInterface()

        self._right_of_way_line_layer = None
        self.addedFeatures = None
예제 #9
0
    def __init__(self, iface, layer, feature_name):
        QObject.__init__(self)
        self._iface = iface
        self._app = AppInterface()
        self._layer = layer

        self._logger = Logger()
        self._feature_name = feature_name
    def __init__(self):
        self.logger = Logger()
        self.app = AppInterface()
        self.__converters = dict()  # {converter_key1: LADMColModelConverter1, ...}

        # Register default models
        self.register_model_converter(Survey10To11Converter())
        self.register_model_converter(Survey11To10Converter())
예제 #11
0
    def setUpClass(cls):
        import_qgis_model_baker()
        cls.db_gpkg = get_copy_gpkg_conn('test_ladm_survey_model_gpkg')
        res, code, msg = cls.db_gpkg.test_connection()
        cls.assertTrue(res, msg)

        cls.app = AppInterface()
        cls.ladm_data = LADMData()
예제 #12
0
    def setUpClass(cls):
        cls.app = AppInterface()

        restore_schema('test_ladm_cadastral_manager_data')
        cls.db = get_pg_conn('test_ladm_cadastral_manager_data')

        res, code, msg = cls.db.test_connection()
        cls.assertTrue(res, msg)
예제 #13
0
    def __init__(self,
                 parent,
                 utils,
                 parcel_number=None,
                 collected_parcel_t_id=None):
        QgsPanelWidget.__init__(self, None)
        self.setupUi(self)
        self.parent = parent
        self.utils = utils
        self.logger = Logger()
        self.app = AppInterface()

        self.setDockMode(True)
        self.setPanelTitle(
            QCoreApplication.translate("ChangesPerParcelPanelWidget",
                                       "Change detection per parcel"))

        self._current_supplies_substring = ""
        self._current_substring = ""

        self.utils.add_layers()
        self.fill_combos()

        # Remove selection in plot layers
        self.utils._layers[self.utils._db.names.LC_PLOT_T].removeSelection()
        self.utils._supplies_layers[
            self.utils._supplies_db.names.GC_PLOT_T].removeSelection()

        # Map tool before activate map swipe tool
        self.init_map_tool = self.utils.canvas.mapTool()

        self.active_map_tool_before_custom = None
        self.btn_identify_plot.setIcon(
            QIcon(":/Asistente-LADM-COL/resources/images/spatial_unit.png"))
        self.btn_identify_plot.clicked.connect(self.btn_plot_toggled)

        # Create maptool
        self.maptool_identify = QgsMapToolIdentifyFeature(self.utils.canvas)

        # Set connections
        self.btn_alphanumeric_query.clicked.connect(self.alphanumeric_query)
        self.chk_show_all_plots.toggled.connect(self.show_all_plots)
        self.cbo_parcel_fields.currentIndexChanged.connect(
            self.search_field_updated)
        self.panelAccepted.connect(self.initialize_tools_and_layers)
        self.tbl_changes_per_parcel.itemDoubleClicked.connect(
            self.call_party_panel)

        self.initialize_field_values_line_edit()
        self.initialize_tools_and_layers()

        if parcel_number is not None:  # Do a search!
            self.txt_alphanumeric_query.setValue(parcel_number)
            if collected_parcel_t_id is not None:  # Search data for a duplicated parcel_number, so, take the t_id into account!
                self.search_data(parcel_number=parcel_number,
                                 collected_parcel_t_id=collected_parcel_t_id)
            else:
                self.search_data(parcel_number=parcel_number)
    def setUpClass(cls):
        print("INFO: Restoring databases to be used")
        restore_schema('test_change_detections')
        cls.db_pg = get_pg_conn('test_change_detections')
        res, code, msg = cls.db_pg.test_connection()
        cls.assertTrue(res, msg)

        cls.app = AppInterface()
        cls.ladm_data = LADMData()
예제 #15
0
    def setUpClass(cls):
        print("\nINFO: Setting up copy layer With different Geometries to DB validation...")
        print("INFO: Restoring databases to be used")

        cls.app = AppInterface()
        cls.base_test_path = tempfile.mkdtemp()
        import_qgis_model_baker()

        cls.ladmcol_models = LADMColModelRegistry()
    def __init__(self, db, conn_manager, parent=None):
        QWizard.__init__(self, parent)
        self.setupUi(self)
        self._db = db
        self.conn_manager = conn_manager
        self.parent = parent

        self.logger = Logger()
        self.app = AppInterface()

        self.names = self._db.names
        self.help_strings = HelpStrings()
        self._data_source_widget = None
        self.db_source = SUPPLIES_DB_SOURCE
        self.tool_name = ""
        self._running_tool = False
        self._db_was_changed = False  # To postpone calling refresh gui until we close this dialog instead of settings
        self.progress_configuration(0, 1)  # start from: 0, number of steps: 1

        self.wizardPage2.setButtonText(
            QWizard.CustomButton1,
            QCoreApplication.translate("SuppliesETLWizard", "Run ETL"))
        self.wizardPage1.setButtonText(
            QWizard.CancelButton,
            QCoreApplication.translate("SuppliesETLWizard", "Close"))
        self.wizardPage2.setButtonText(
            QWizard.CancelButton,
            QCoreApplication.translate("SuppliesETLWizard", "Close"))

        # Auxiliary data to set nonlinear next pages
        self.pages = [self.wizardPage1, self.wizardPage2, self.wizardPage3]
        self.dict_pages_ids = {
            self.pages[idx]: pid
            for idx, pid in enumerate(self.pageIds())
        }

        # Set connections
        self.rad_snc_data.toggled.connect(self.etl_option_changed)
        self.etl_option_changed()  # Initialize it
        self.button(QWizard.CustomButton1).clicked.connect(
            self.import_button_clicked)
        self.button(QWizard.HelpButton).clicked.connect(self.show_help)
        self.currentIdChanged.connect(self.current_page_changed)
        self.finished.connect(self.finished_slot)
        self.btn_browse_connection.clicked.connect(self.show_settings)

        # Initialize
        self.current_page_changed(1)
        self.update_connection_info()
        self.restore_settings()
        self.initialize_feedback()

        # Set MessageBar for QWizard
        self.bar = QgsMessageBar()
        self.bar.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
        self.setLayout(QGridLayout())
        self.layout().addWidget(self.bar, 0, 0, Qt.AlignTop)
예제 #17
0
    def __init__(self):
        AbstractLADMColModelConverter.__init__(self)

        self._key = "iliverrors-errores_calidad_0_1"
        self._display_name = "IliVErrors a Errores Calidad 0.1"
        self._from_models = ["IliVErrors"]
        self._to_models = ["Errores_Calidad_V0_1"]

        self.app = AppInterface()
예제 #18
0
    def __init__(self):
        self.logger = Logger()
        self.app = AppInterface()
        self.__models = dict()  # {model_key1: LADMColModel1, ...}
        self.__model_config = ModelConfig()

        # Register default models
        for model_key, model_config in self.__model_config.get_models_config(
        ).items():
            self.register_model(LADMColModel(model_key, model_config), False)
예제 #19
0
    def setUpClass(cls):
        cls.db_gpkg_empty = get_copy_gpkg_conn('test_empty_ladm_gpkg')
        cls.db_gpkg_test = get_copy_gpkg_conn('test_export_data_qpkg')
        cls.app = AppInterface()

        res, code, msg = cls.db_gpkg_empty.test_connection()
        cls.assertTrue(res, msg)

        res, code, msg = cls.db_gpkg_test.test_connection()
        cls.assertTrue(res, msg)
예제 #20
0
    def __init__(self, iface, db, parent=None):
        QDialog.__init__(self, parent)
        self.setupUi(self)
        self.iface = iface
        self._db = db
        self.logger = Logger()

        self.app = AppInterface()
        self.names = self._db.names
        self.help_strings = HelpStrings()

        self.data = {} # {t_id: [display_text, denominator, numerator]}
        self.current_selected_parties = [] #  [t_ids]
        self.parties_to_group = {} # {t_id: [denominator, numerator]}

        self._layers = {
            self.names.LC_GROUP_PARTY_T: None,
            self.names.LC_PARTY_T: None,
            self.names.MEMBERS_T: None,
            self.names.FRACTION_S: None,
            self.names.COL_GROUP_PARTY_TYPE_D: None
        }

        # Fill combo of types
        col_group_party_type_table = self.app.core.get_layer(self._db, self.names.COL_GROUP_PARTY_TYPE_D, True)
        if not col_group_party_type_table:
            return

        for feature in col_group_party_type_table.getFeatures():
            self.cbo_group_type.addItem(feature[self.names.DISPLAY_NAME_F], feature[self.names.T_ID_F])

        self.txt_search_party.setText("")
        self.btn_select.setEnabled(False)
        self.btn_deselect.setEnabled(False)

        self.tbl_selected_parties.setColumnCount(3)
        self.tbl_selected_parties.setColumnWidth(0, 140)
        self.tbl_selected_parties.setColumnWidth(1, 90)
        self.tbl_selected_parties.setColumnWidth(2, 90)
        self.tbl_selected_parties.sortItems(0, Qt.AscendingOrder)

        self.txt_search_party.textEdited.connect(self.search)
        self.lst_all_parties.itemSelectionChanged.connect(self.selection_changed_all)
        self.tbl_selected_parties.itemSelectionChanged.connect(self.selection_changed_selected)
        self.tbl_selected_parties.cellChanged.connect(self.valueEdited)
        self.btn_select_all.clicked.connect(self.select_all)
        self.btn_deselect_all.clicked.connect(self.deselect_all)
        self.btn_select.clicked.connect(self.select)
        self.btn_deselect.clicked.connect(self.deselect)
        self.buttonBox.helpRequested.connect(self.show_help)

        self.bar = QgsMessageBar()
        self.bar.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
        self.layout().addWidget(self.bar, 0, 0, Qt.AlignTop)
        self.rejected.connect(self.close_wizard)
예제 #21
0
    def __init__(self):
        QObject.__init__(self)
        self.logger = Logger()
        self.app = AppInterface()
        self._registered_roles = dict()
        self._default_role = BASIC_ROLE

        # Register default roles
        for role_key, role_config in get_role_config().items():
            if ROLE_ENABLED in role_config and role_config[ROLE_ENABLED]:
                self.register_role(role_key, role_config)
예제 #22
0
    def __init__(self, iface, controller, parent=None):
        super(DockWidgetQueries, self).__init__(None)
        self.setupUi(self)
        self.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
        self.iface = iface
        self._controller = controller

        self.logger = Logger()
        self.app = AppInterface()

        self.canvas = iface.mapCanvas()
        self.active_map_tool_before_custom = None

        self._identify_tool = None

        self._fill_combos()

        self.btn_identify_plot.setIcon(
            QIcon(":/Asistente-LADM-COL/resources/images/spatial_unit.png"))

        self.tab_results.setTabEnabled(
            TAB_BASIC_INFO_INDEX,
            False)  # TODO: Remove when queries support LevCat 1.2
        self.tab_results.setTabEnabled(
            TAB_PHYSICAL_INFO_INDEX,
            False)  # TODO: Remove when queries support LevCat 1.2
        self.tab_results.setTabEnabled(
            TAB_ECONOMIC_INFO_INDEX,
            False)  # TODO: Remove when queries support LevCat 1.2
        self.tab_results.setCurrentIndex(
            TAB_LEGAL_INFO_INDEX
        )  # TODO: Remove when queries support LevCat 1.2

        # Set connections
        self._controller.close_view_requested.connect(self._close_dock_widget)

        self.btn_alphanumeric_query.clicked.connect(self._alphanumeric_query)
        self.cbo_parcel_fields.currentIndexChanged.connect(
            self._search_field_updated)
        self.btn_identify_plot.clicked.connect(self._btn_plot_toggled)
        self.btn_query_informality.clicked.connect(self._query_informality)
        self.btn_next_informal_parcel.clicked.connect(
            self._query_next_informal_parcel)
        self.btn_previous_informal_parcel.clicked.connect(
            self._query_previous_informal_parcel)

        # Context menu
        self._set_context_menus()

        # Create maptool
        self.maptool_identify = QgsMapToolIdentifyFeature(self.canvas)

        self._initialize_field_values_line_edit()
        self._update_informal_controls()
예제 #23
0
    def setUpClass(cls):
        cls.app = AppInterface()
        cls.db_gpkg = get_copy_gpkg_conn('test_ladm_survey_model_gpkg')

        print("INFO: Restoring databases to be used")
        restore_schema('test_ladm_col')
        cls.db_pg = get_pg_conn('test_ladm_col')

        schema = 'test_ladm_col'
        reset_db_mssql(schema)
        restore_schema_mssql(schema)
        cls.db_mssql = get_mssql_conn(schema)
예제 #24
0
    def setUpClass(cls):
        # DB with single child model
        cls.db_gpkg = get_copy_gpkg_conn('test_ladm_survey_model_gpkg')
        res, code, msg = cls.db_gpkg.test_connection()
        cls.assertTrue(res, msg)

        # DB with multiple child models and domains
        cls.db_multi_gpkg = get_copy_gpkg_conn('test_ladm_multiple_child_domains_gpkg')
        res, code, msg = cls.db_multi_gpkg.test_connection()
        cls.assertTrue(res, msg)

        cls.app = AppInterface()
        cls.ladm_data = LADMData()
예제 #25
0
    def __init__(self, db, rules):
        QObject.__init__(self)
        self.logger = Logger()
        self.app = AppInterface()

        self.__tolerance = self.app.settings.tolerance
        self.__layer_manager = QualityRuleLayerManager(db, rules.keys(), self.__tolerance)
        self.__quality_rules = QualityRules()
        self.quality_rule_logger = QualityRuleLogger(self.__tolerance)

        self.__db = db
        self.__rules = rules
        self.__result_layers = list()
예제 #26
0
def selectFolder(line_edit_widget, title, parent, folder_setting_key=None):
    folder = None
    if folder_setting_key:  # Get from settings
        from asistente_ladm_col.app_interface import AppInterface  # Here to avoid circular dependency
        app = AppInterface()
        folder = app.settings.get_setting(folder_setting_key)  # None if key not found
    if not folder:
        folder = line_edit_widget.text()

    foldername = QFileDialog.getExistingDirectory(parent, title, folder)
    line_edit_widget.setText(foldername)

    if folder_setting_key and foldername:  # Save to settings
        app.settings.set_setting(folder_setting_key, os.path.dirname(foldername))
    def __init__(self, iface, db, ladm_data):
        QObject.__init__(self)
        self.iface = iface
        self._db = db
        self._ladm_data = ladm_data

        self.app = AppInterface()

        self.receiver_type = None  # To be overwritten by children classes

        self._layers = dict()
        self.initialize_layers()

        self.__parcel_data = dict()  # {t_id: {parcel_number: t_id_receiver}}
예제 #28
0
    def __init__(self, controller, parent=None):
        QgsPanelWidget.__init__(self, None)
        self.setupUi(self)
        self.__controller = controller
        self.parent = parent
        self.app = AppInterface()
        self.logger = Logger()
        self.__mode = EnumQualityRulePanelMode.VALIDATE

        self.__selected_items_list = list()
        self.__icon_names = ['schema.png', 'points.png', 'lines.png', 'polygons.png', 'relationships.svg']

        self.txt_search.addAction(QIcon(":/Asistente-LADM-COL/resources/images/search.png"), QLineEdit.LeadingPosition)

        self.setDockMode(True)
        self.setPanelTitle(QCoreApplication.translate("QualityRulesInitialPanelWidget", "Quality Rules"))

        self.tab.setTabEnabled(TAB_READ_INDEX, False)  # TODO: Remove when implemented
        self.__restore_settings()

        # TODO: uncomment the following block when implemented
        self.lbl_presets.setEnabled(False)
        self.cbo_presets.setEnabled(False)
        self.btn_save_selection.setEnabled(False)
        self.btn_delete_selection.setEnabled(False)

        self.txt_search.textChanged.connect(self.__search_text_changed)
        self.btn_validate.clicked.connect(self.__validate_clicked)
        self.btn_read.clicked.connect(self.__read_clicked)
        self.btn_help.clicked.connect(self.__show_help)
        self.trw_qrs.itemSelectionChanged.connect(self.__selection_changed)
        self.tab.currentChanged.connect(self.__tab_changed)

        dir_selector = make_folder_selector(self.txt_dir_path,
                                            title=QCoreApplication.translate("QualityRulesInitialPanelWidget",
                                                                             "Select a folder to store quality errors"),
                                            parent=None,
                                            setting_property="qr_results_dir_path")
        self.btn_dir_path.clicked.connect(dir_selector)

        db_file_selector = make_file_selector(self.txt_db_path,
                                              title=QCoreApplication.translate("QualityRulesInitialPanelWidget",
                                                                               "Open GeoPackage database file with quality errors"),
                                              file_filter=QCoreApplication.translate("QualityRulesInitialPanelWidget",
                                                                                     "GeoPackage Database (*.gpkg)"),
                                              setting_property="qr_db_file_path")

        self.btn_db_path.clicked.connect(db_file_selector)

        self.__tab_changed(self.tab.currentIndex())  # Direct call to initialize controls
    def __init__(self, db, parent=None):
        QDialog.__init__(self, parent)
        self.setupUi(self)
        self._db = db

        self.app = AppInterface()
        self.names = self._db.names

        self.models_tree = dict()
        self.selected_items_dict = dict()
        self.icon_names = [
            'points.png', 'lines.png', 'polygons.png', 'tables.png',
            'domains.png', 'structures.png', 'relationships.svg'
        ]

        self.txt_search_text.addAction(
            QIcon(":/Asistente-LADM-COL/resources/images/search.png"),
            QLineEdit.LeadingPosition)

        # Fill predefined tables combobox
        self.cbo_select_predefined_tables.clear()
        self.cbo_select_predefined_tables.setInsertPolicy(
            QComboBox.InsertAlphabetically)
        self.cbo_select_predefined_tables.addItem("", [])  # By default

        for name, layer_list in LayerConfig.get_layer_sets(
                self.names,
                self.app.core.get_active_models_per_db(db)).items():
            self.cbo_select_predefined_tables.addItem(name, layer_list)

        self.cbo_select_predefined_tables.currentIndexChanged.connect(
            self.__select_predefined_changed)

        # Set connections
        self.buttonBox.accepted.connect(self.accepted)
        self.buttonBox.rejected.connect(self.rejected)
        self.buttonBox.helpRequested.connect(self.__show_help)
        self.txt_search_text.textChanged.connect(self.__search_text_changed)
        self.chk_show_domains.toggled.connect(self.__show_table_type_changed)
        self.chk_show_structures.toggled.connect(
            self.__show_table_type_changed)
        self.chk_show_associations.toggled.connect(
            self.__show_table_type_changed)
        self.trw_layers.itemSelectionChanged.connect(self.__selection_changed)

        # Reload latest settings
        self.__restore_settings()

        # Load layers from the db
        self.__load_available_layers()
예제 #30
0
    def setUpClass(cls):
        print("\nINFO: Setting up copy layer With different Geometries to DB validation...")

        cls.app = AppInterface()
        import_qgis_model_baker()

        # restore schemas
        print("INFO: Restoring databases to be used")
        restore_schema(SCHEMA_DISTINCT_GEOMS)
        restore_schema(SCHEMA_LADM_COL_EMPTY)
        cls.gpkg_path = get_test_copy_path(GPKG_PATH_DISTINCT_GEOMS)

        cls.db_distinct_geoms = get_pg_conn(SCHEMA_DISTINCT_GEOMS)
        cls.db_pg = get_pg_conn(SCHEMA_LADM_COL_EMPTY)