Exemple #1
0
    def from_userinput(
        self,
        userinput: str,
        mirror: bool,
        ags: Optional[str],
        skip_body_extra: bool = False,
        skip_files: bool = False,
    ) -> None:
        body_id, entrypoint = self.get_entrypoint_and_body(userinput, mirror)
        importer = Importer(get_loader_from_system(entrypoint))
        body_data, dotenv = self.import_body_and_metadata(
            body_id, importer, userinput, ags, skip_body_extra)

        logger.info("Loading the bulk data from the oparl api")
        importer.fetch_lists_initial([body_data])

        # Also avoid "MySQL server has gone away" errors due to timeouts
        # https://stackoverflow.com/a/32720475/3549270
        db.close_old_connections()

        logger.info("Loading the data into the database")
        importer.import_objects()

        if not skip_files:
            logger.info("Loading the files")
            importer.load_files(fallback_city=userinput)

        if dotenv:
            logger.info(
                f"Done! Please add the following line to your dotenv file: \n\n{dotenv}\n"
            )
 def handle(self, *args, **options):
     cli = Cli()
     userinput = options["cityname"]
     body_id, entrypoint = cli.get_entrypoint_and_body(
         userinput, options["mirror"])
     importer = Importer(get_loader_from_system(entrypoint))
     if options["manual"]:
         logger.info("Fetching the body")
         importer.load_bodies(body_id)
         logger.info("Importing the body")
         [body] = importer.import_bodies()
         logger.info("The body id is {}".format(body.id))
     else:
         cli.import_body_and_metadata(body_id, importer, userinput,
                                      options["ags"])
Exemple #3
0
    def handle(self, *args, **options):
        cli = Cli()
        userinput = options["cityname"]
        body_id, entrypoint = cli.get_entrypoint_and_body(
            userinput, options["mirror"])
        importer = Importer(get_loader_from_system(entrypoint))
        if options["manual"]:
            if CachedObject.objects.filter(url=body_id).exists():
                logger.info("Using fetched body")

            else:
                logger.info("Fetching the body")
                importer.load_bodies(body_id)
            logger.info("Importing the body")
            [body] = importer.import_bodies()
            logger.info(f"The body id is {body.id}")
        else:
            cli.import_body_and_metadata(body_id, importer, userinput,
                                         options["ags"])