Exemplo n.º 1
0
    def preload_wms(urls):
        """
        This method accesses a list of WMS servers and load their capability documents.
        :param urls: List of URLs
        """
        pdlg = QtWidgets.QProgressDialog("Preloading WMS servers...", "Cancel", 0, len(urls))
        pdlg.reset()
        pdlg.setValue(0)
        pdlg.setModal(True)
        pdlg.show()
        QtWidgets.QApplication.processEvents()
        for i, base_url in enumerate(urls):
            pdlg.setValue(i)
            QtWidgets.QApplication.processEvents()
            # initialize login cache from config file, but do not overwrite existing keys
            for key, value in config_loader(dataset="WMS_login").items():
                if key not in constants.WMS_LOGIN_CACHE:
                    constants.WMS_LOGIN_CACHE[key] = value
            username, password = constants.WMS_LOGIN_CACHE.get(base_url, (None, None))

            try:
                request = requests.get(base_url)
                if pdlg.wasCanceled():
                    break
                wms = wms_control.MSSWebMapService(request.url, version='1.1.1',
                                                   username=username, password=password)
                wms_control.WMS_SERVICE_CACHE[wms.url] = wms
                logging.info("Stored WMS info for '%s'", wms.url)
            except Exception as ex:
                logging.error("Error in preloading '%s': '%s'", type(ex), ex)
            if pdlg.wasCanceled():
                break
        logging.debug("Contents of WMS_SERVICE_CACHE: %s", wms_control.WMS_SERVICE_CACHE.keys())
        pdlg.close()
Exemplo n.º 2
0
 def test_xml_separate_leafs(self):
     testxml = self.xml.format(
         self.dimext_inittime, self.srs_base, self.dimext_time + self.dimext_elevation)
     self.window.activate_wms(wc.MSSWebMapService(None, version='1.1.1', xml=testxml))
     QtWidgets.QApplication.processEvents()
     assert [self.window.cbValidTime.itemText(i) for i in range(self.window.cbValidTime.count())] == \
         ['2012-10-17T12:00:00Z', '2012-10-17T18:00:00Z', '2012-10-18T00:00:00Z']
     assert [self.window.cbInitTime.itemText(i) for i in range(self.window.cbInitTime.count())] == \
         ['2012-10-16T12:00:00Z', '2012-10-17T12:00:00Z']
Exemplo n.º 3
0
 def test_xml_no_validtime(self):
     testxml = self.xml.format("", self.srs_base, self.dimext_inittime + self.dimext_elevation)
     self.window.activate_wms(wc.MSSWebMapService(None, version='1.1.1', xml=testxml))
     QtWidgets.QApplication.processEvents()
     assert [self.window.cbValidTime.itemText(i) for i in range(self.window.cbValidTime.count())] == []
     assert not self.window.cbValidTime.isEnabled()
     assert [self.window.cbInitTime.itemText(i) for i in range(self.window.cbInitTime.count())] == \
         ['2012-10-16T12:00:00Z', '2012-10-17T12:00:00Z']
     assert [self.window.cbLevel.itemText(i) for i in range(self.window.cbLevel.count())] == \
         ['500.0 (hPa)', '600.0 (hPa)', '700.0 (hPa)', '900.0 (hPa)']
Exemplo n.º 4
0
 def test_xml_time_error(self, mockbox):
     dimext_time_error = """
         <Dimension name="TIME" units="ISO8610"> </Dimension>
         <Extent name="TIME"> a2012-10-17T12:00:00Z/2012-10-18T00:00:00Z/PT6H </Extent>"""
     testxml = self.xml.format(
         "", self.srs_base, dimext_time_error + self.dimext_inittime + self.dimext_elevation)
     self.window.activate_wms(wc.MSSWebMapService(None, version='1.1.1', xml=testxml))
     QtWidgets.QApplication.processEvents()
     assert [self.window.cbValidTime.itemText(i) for i in range(self.window.cbValidTime.count())] == []
     assert [self.window.cbInitTime.itemText(i) for i in range(self.window.cbInitTime.count())] == []
Exemplo n.º 5
0
 def test_xml_othertimeformat(self):
     dimext_time_format = """
         <Dimension name="TIME" units="ISO8610"> </Dimension>
         <Extent name="TIME"> 2012-10-17,2012-10-18,2012-10-19 </Extent>"""
     testxml = self.xml.format(
         "", self.srs_base, dimext_time_format + self.dimext_inittime + self.dimext_elevation)
     self.window.activate_wms(wc.MSSWebMapService(None, version='1.1.1', xml=testxml))
     QtWidgets.QApplication.processEvents()
     assert [self.window.cbValidTime.itemText(i) for i in range(self.window.cbValidTime.count())] == \
         ['2012-10-17T00:00:00Z', '2012-10-18T00:00:00Z', '2012-10-19T00:00:00Z']
     assert [self.window.cbInitTime.itemText(i) for i in range(self.window.cbInitTime.count())] == \
         ['2012-10-16T12:00:00Z', '2012-10-17T12:00:00Z']
Exemplo n.º 6
0
 def test_xml_emptyextent(self):
     dimext_time_empty = """<Dimension name="TIME" units="ISO8610"> </Dimension> <Extent name="TIME"> </Extent>"""
     testxml = self.xml.format(
         "", self.srs_base, dimext_time_empty + self.dimext_inittime + self.dimext_elevation)
     self.window.activate_wms(wc.MSSWebMapService(None, version='1.1.1', xml=testxml))
     QtWidgets.QApplication.processEvents()
     assert [self.window.cbValidTime.itemText(i) for i in range(self.window.cbValidTime.count())] == []
     assert [self.window.cbInitTime.itemText(i) for i in range(self.window.cbInitTime.count())] == []
     assert [self.window.cbLevel.itemText(i) for i in range(self.window.cbLevel.count())] == []
     assert not self.window.cbLevel.isEnabled()
     assert not self.window.cbValidTime.isEnabled()
     assert not self.window.cbInitTime.isEnabled()
Exemplo n.º 7
0
 def test_xml_time_init_period(self):
     dimext_inittime_period = """
         <Dimension name="INIT_TIME" units="ISO8610"> </Dimension>
         <Extent name="INIT_TIME"> 2012-10-17T12:00:00Z/2012-10-24T12:00:00Z/P1W </Extent>"""
     testxml = self.xml.format(
         "", self.srs_base, self.dimext_time + dimext_inittime_period + self.dimext_elevation)
     self.window.activate_wms(wc.MSSWebMapService(None, version='1.1.1', xml=testxml))
     QtWidgets.QApplication.processEvents()
     assert [self.window.cbValidTime.itemText(i) for i in range(self.window.cbValidTime.count())] == \
         ['2012-10-17T12:00:00Z', '2012-10-17T18:00:00Z', '2012-10-18T00:00:00Z']
     assert [self.window.cbInitTime.itemText(i) for i in range(self.window.cbInitTime.count())] == \
         ['2012-10-17T12:00:00Z', '2012-10-24T12:00:00Z']
     assert [self.window.cbLevel.itemText(i) for i in range(self.window.cbLevel.count())] == \
         ['500.0 (hPa)', '600.0 (hPa)', '700.0 (hPa)', '900.0 (hPa)']
Exemplo n.º 8
0
 def test_xml_time_multiperiod(self):
     dimext_time_period = '<Dimension name="TIME" units="ISO8610"> </Dimension> ' \
         '<Extent name="TIME"> 2010-10-17T12:00:00Z/2010-11-18T00:00:00Z/P1M, ' \
         '2012-10-01T12:00:00Z,2012-10-17T12:00:00Z/2012-10-18T00:00:00Z/PT12H </Extent>'
     testxml = self.xml.format(
         "", self.srs_base, dimext_time_period + self.dimext_inittime + self.dimext_elevation)
     self.window.activate_wms(wc.MSSWebMapService(None, version='1.1.1', xml=testxml))
     QtWidgets.QApplication.processEvents()
     assert [self.window.cbValidTime.itemText(i) for i in range(self.window.cbValidTime.count())] == \
         ['2010-10-17T12:00:00Z', '2010-11-17T12:00:00Z',
          '2012-10-01T12:00:00Z',
          '2012-10-17T12:00:00Z', '2012-10-18T00:00:00Z']
     assert [self.window.cbInitTime.itemText(i) for i in range(self.window.cbInitTime.count())] == \
         ['2012-10-16T12:00:00Z', '2012-10-17T12:00:00Z']
Exemplo n.º 9
0
 def test_xml_separatedim(self):
     dimext_time_dim = '<Dimension name="TIME" units="ISO8610"> </Dimension>'
     dimext_time_ext = \
         '<Extent name="TIME"> 2012-10-17T12:00:00Z,2012-10-17T18:00:00Z,2012-10-18T00:00:00Z </Extent>'
     testxml = self.xml.format(
         dimext_time_dim, self.srs_base, dimext_time_ext + self.dimext_inittime + self.dimext_elevation)
     self.window.activate_wms(wc.MSSWebMapService(None, version='1.1.1', xml=testxml))
     QtWidgets.QApplication.processEvents()
     assert [self.window.cbValidTime.itemText(i) for i in range(self.window.cbValidTime.count())] == \
         ['2012-10-17T12:00:00Z', '2012-10-17T18:00:00Z', '2012-10-18T00:00:00Z']
     assert [self.window.cbInitTime.itemText(i) for i in range(self.window.cbInitTime.count())] == \
         ['2012-10-16T12:00:00Z', '2012-10-17T12:00:00Z']
     assert [self.window.cbLevel.itemText(i) for i in range(self.window.cbLevel.count())] == \
         ['500.0 (hPa)', '600.0 (hPa)', '700.0 (hPa)', '900.0 (hPa)']
Exemplo n.º 10
0
 def test_xml_currenttag(self):
     dimext_time = """
         <Dimension name="TIME" units="ISO8610"> </Dimension>
         <Extent name="TIME"> 2014-10-17T12:00:00Z/current/P1Y </Extent>"""
     testxml = self.xml.format("", self.srs_base, dimext_time + self.dimext_inittime + self.dimext_elevation)
     self.window.activate_wms(wc.MSSWebMapService(None, version='1.1.1', xml=testxml))
     QtWidgets.QApplication.processEvents()
     print([self.window.cbValidTime.itemText(i) for i in range(self.window.cbValidTime.count())])
     assert [self.window.cbValidTime.itemText(i) for i in range(self.window.cbValidTime.count())][:4] == \
         ['2014-10-17T12:00:00Z', '2015-10-17T12:00:00Z', '2016-10-17T12:00:00Z', '2017-10-17T12:00:00Z']
     assert [self.window.cbInitTime.itemText(i) for i in range(self.window.cbInitTime.count())] == \
         ['2012-10-16T12:00:00Z', '2012-10-17T12:00:00Z']
     assert [self.window.cbLevel.itemText(i) for i in range(self.window.cbLevel.count())] == \
         ['500.0 (hPa)', '600.0 (hPa)', '700.0 (hPa)', '900.0 (hPa)']
     assert self.window.cbLevel.isEnabled()
     assert self.window.cbValidTime.isEnabled()
     assert self.window.cbInitTime.isEnabled()