Exemplo n.º 1
0
def download_file(url, user, password, filename, dest, strongest_site_id):
    """
    Download a specific file. If the file is already
    downloaded ask the user if the file shoule be downloaded again
    """
    from ftplib import FTP
    from datetime import date
    from app.models import File
    from app import db

    name = '{}.xml'.format(date.today())
    dest = '{}'.format(os.path.join(dest, name))
    f = File(name=name, path=dest)

    try:
        ftp = FTP(host=url,
                  user=user,
                  passwd=password)
    except Exception as e:
        logger.error("There was an error when loggin to ftp server {}".format(e))
        f.error = True
        f.error_message = "{}".format(e)
        db.session.add(f)
        db.session.commit()
        raise FTPError(e)

    logger.debug("Filename: {}".format(filename))
    cmd = 'RETR {}'.format(filename)
    logger.debug("CMD {}".format(cmd))

    logger.info("Start Downloading file {}".format(filename))
    file = open(dest, 'wb')
    try:
        ftp.retrbinary(cmd, file.write, blocksize=2048)
    except Exception as e:
        f.error = True
        f.error_message = "{}".format(e)
        db.session.add(f)
        db.session.commit()
        raise FTPError(e)

    logger.info("File successfully downloaded")
    f.error = False
    db.session.add(f)
    db.session.commit()

    # Import file
    import_xml.delay(f.id, strongest_site_id)
    logger.info("Start import the downloaded file")
Exemplo n.º 2
0
def download_file(url, user, password, filename, dest, strongest_site_id):
    """
    Download a specific file. If the file is already
    downloaded ask the user if the file shoule be downloaded again
    """
    from ftplib import FTP
    from datetime import date
    from app.models import File
    from app import db

    name = '{}.xml'.format(date.today())
    dest = '{}'.format(os.path.join(dest, name))
    f = File(name=name, path=dest)

    try:
        ftp = FTP(host=url, user=user, passwd=password)
    except Exception as e:
        logger.error(
            "There was an error when loggin to ftp server {}".format(e))
        f.error = True
        f.error_message = "{}".format(e)
        db.session.add(f)
        db.session.commit()
        raise FTPError(e)

    logger.debug("Filename: {}".format(filename))
    cmd = 'RETR {}'.format(filename)
    logger.debug("CMD {}".format(cmd))

    logger.info("Start Downloading file {}".format(filename))
    file = open(dest, 'wb')
    try:
        ftp.retrbinary(cmd, file.write, blocksize=2048)
    except Exception as e:
        f.error = True
        f.error_message = "{}".format(e)
        db.session.add(f)
        db.session.commit()
        raise FTPError(e)

    logger.info("File successfully downloaded")
    f.error = False
    db.session.add(f)
    db.session.commit()

    # Import file
    import_xml.delay(f.id, strongest_site_id)
    logger.info("Start import the downloaded file")