Пример #1
0
    def __report(self, friends):
        logger = Logger.get_logger()
        logger.info("Reporting.")
        reporter = Reporter()

        if Config.reporter.console_report:
            reporter.add_console_handler()
        if Config.reporter.file_report:
            reporter.add_file_handler(Config.reporter.report_file_path,
                                      Config.reporter.report_file_extension)

        reporter.report(friends)
Пример #2
0
    def __initialize(self):
        Config.initialize()
        config_parser = INIConfigurationParser(DEFAULT_CONFIG)
        self.parse_command_line_arguments(config_parser)
        config_parser.parse_config()

        Logger.setup(LOG_FORMAT, Config.logger.log_level,
                     Config.logger.console_log, Config.logger.file_log,
                     Config.logger.log_file_path,
                     Config.logger.log_file_extension)

        logger = Logger.get_logger()
        logger.info("Logger successfully set up.")

        logger.info("Creating web driver.")
        chrome_options = Options()
        if Config.general.headless:
            chrome_options.add_argument("--headless")
        driver = webdriver.Chrome(chrome_options=chrome_options)

        return driver
Пример #3
0
def main():
    """ This is the main script to convert a ArcMap-Project"""
    export_name = arcpy.GetParameterAsText(0)

    if not export_name:
        export_name = "C:\\temp\\test.qgs"

    if export_name.endswith(".qgs") or export_name.endswith(".qgz"):
        export_name_short = export_name[:-4]
    else:
        export_name_short = export_name

    qgs_file_name = u"{}.qgs".format(export_name_short)
    qgs_file = codecs.open(qgs_file_name, "w", encoding="utf-8")

    logging = Logger.get_logger(export_name_short)

    xml_document = Document()

    arcpy.AddMessage("Scanning Project and collecting Layer-Information")

    # take Infos from opened ArcMap-Project -> to access the arcObjects
    arc_app = CreateObject(ArcGisModules.module_framework.AppROT,
                           interface=ArcGisModules.module_framework.IAppROT)
    arc_doc = change_interface(
        arc_app.Item(0).Document, ArcGisModules.module_map_ui.IMxDocument)
    arc_doc_info = change_interface(arc_doc,
                                    ArcGisModules.module_carto.IDocumentInfo2)

    header = create_header(xml_document, arc_doc_info)

    if not arc_doc.ActiveView.IsMapActivated:
        arc_doc.ActiveView = arc_doc.FocusMap

    project_path = ""
    try:
        project_path = os.path.dirname(arc_doc_info.Folder)
    except TypeError:
        print "There is no ArcMap-Project open - Will Crash!"
    arcpy.env.workspace = project_path
    arcpy.env.overwriteOutput = True

    # this is the arcpy connection to the document
    mxd_path = os.path.join(arc_doc_info.Path)
    mxd = arcpy.mapping.MapDocument(mxd_path)

    print 'Start Writing'

    for counter, dataframe in enumerate(arcpy.mapping.ListDataFrames(mxd)):
        if counter == 0:
            print 'Creating MapSpatialReferenceSystem.'
            MapSpatialReferenceSystem.create_map_srs_element(
                xml_document, header, dataframe)

        arc_dataframe = arc_doc.Maps.Item[counter]
        layer_list = arcpy.mapping.ListLayers(dataframe)

        arcpy.AddMessage("{} Layers are in the Dataframe".format(
            str(len(layer_list))))

        ProjectLayers.create_project_layers_element(xml_document, header,
                                                    layer_list, arc_dataframe)
        broken_layer_list = brokenLayers.BrokenLayers.broken_layer_list
        for broken_layer in broken_layer_list:
            if broken_layer in layer_list:
                layer_list.remove(broken_layer)
        MapLegend.create_map_legend_element(xml_document, header, layer_list,
                                            dataframe)
        LayerTree.create_layertree(xml_document, header, layer_list, dataframe)
        MapProperties.create_map_properties_element(xml_document, header)

    if len(arcpy.mapping.ListDataFrames(mxd)) > 1:
        VisibilityPresets.initialize_visibility(xml_document, header, mxd)

    arcpy.AddMessage("Creating Layout")
    logging.info("Creating Layout")
    layout = Layout(xml_document, header, arc_doc, mxd).create_layout()

    arcpy.AddMessage("Creating Metadata")
    Metadata.create_metadata(xml_document, header, arc_app)

    try:
        xml_document.writexml(qgs_file,
                              indent="  ",
                              addindent="  ",
                              newl="\n",
                              encoding="UTF-8")
        arcpy.AddMessage("Project saved!")
        arcpy.AddMessage('QGIS-File written')
    finally:
        qgs_file.close()

    if export_name.endswith(".qgz"):
        qgd_file_name = u"{}.qgd".format(export_name_short)
        qgd_file = open(qgd_file_name, "w")
        qgd_file.close()

        with ZipFile(u"{}.qgz".format(export_name_short), "w") as newzip:
            newzip.write(qgs_file_name, os.path.basename(qgs_file.name))
            newzip.write(qgd_file_name, os.path.basename(qgd_file.name))

        arcpy.AddMessage(' and zipped.')
        try:
            os.remove(qgs_file_name)
            os.remove(qgd_file_name)
        except OSError as e:
            print("Error: %s - %s." % (e.filename, e.strerror))
Пример #4
0
    def __execute(self, driver):
        logger = Logger.get_logger()
        seleniumUtils = SeleniumUtils(logger, driver)

        logger.info(f"Opening {URL}.")
        try:
            driver.get(URL)
        except WebDriverException:
            logger.exception("Cannot navigate to invalid url.")
            exit(ERROR_CANNOT_NAVIGATE_TO_INVALID_URL)
        driver.maximize_window()

        logger.info("Waiting for email field to be clickable.")
        email_field = seleniumUtils.get_clickable_element(
            Config.general.element_wait_time, By.ID, ELEMENT_EMAIL_ID)
        logger.info("Writing email.")
        email_field.send_keys(Config.general.login)

        logger.info("Waiting for password field to be clickable.")
        password_field = seleniumUtils.get_clickable_element(
            Config.general.element_wait_time, By.ID, ELEMENT_PASSWORD_ID)
        logger.info("Writing password.")
        password_field.send_keys(Config.general.password)

        logger.info("Waiting for login button to be clickable.")
        submit_login_button = seleniumUtils.get_clickable_element(
            Config.general.element_wait_time, By.ID, ELEMENT_LOGIN_BUTTON_ID)
        logger.info("Clicking login button.")
        submit_login_button.click()

        logger.info("Closing popup.")
        webdriver.ActionChains(driver).send_keys(Keys.ESCAPE).perform()

        logger.info("Waiting for profile to be clickable.")
        profile = seleniumUtils.get_clickable_element(
            Config.general.element_wait_time, By.CSS_SELECTOR,
            ELEMENT_PROFILE_SELECTOR)
        logger.info("Clicking profile.")
        profile.click()

        logger.info("Waiting for friends tab to be clickable.")
        friends_tab = seleniumUtils.get_clickable_element(
            Config.general.element_wait_time, By.CSS_SELECTOR,
            ELEMENT_FRIENDS_TAB_SELECTOR)
        logger.info("Clicking friends tab.")
        friends_tab.click()

        logger.info("Counting friends.")
        friends_count_element = seleniumUtils.get_not_empty_text_element(
            Config.general.element_wait_time, By.XPATH,
            ELEMENT_FRIENDS_COUNT_XPATH)
        friends_count = int(friends_count_element.text)

        logger.info(f"You have {friends_count} friends.")

        friends = dict()
        if friends_count > 0:
            logger.info("Getting friends names and links.")
            friends_elements = seleniumUtils.get_all_elements(
                Config.general.element_wait_time, By.CSS_SELECTOR,
                ELEMENT_FRIENDS_SELECTOR)
            for friend in friends_elements:
                friends[friend.get_attribute('href')] = friend.text

        return friends
Пример #5
0
 def __finish(self, driver):
     logger = Logger.get_logger()
     logger.info("Finishing Selenium test.")
     logger.info("Closing driver.")
     driver.close()
Пример #6
0
 def add_file_handler(self, file_path, file_extension):
     file_string = file_path + str(datetime.now()).replace(
         ':', '-') + file_extension
     file_service = FileService(Logger.get_logger(), file_string, 'w')
     file_handler = Handler(file_service.write)
     self.__handlers.append(file_handler)