示例#1
0
def zones_import_run():
    provider = Provider()
    import_manager = provider.dns_import()

    file = import_manager.get_user_data_path(current_user.id,
                                             filename='import.csv')
    if not os.path.isfile(file):
        flash('No file uploaded', 'error')
        return redirect(url_for('dns.zones_import'))

    import_type = import_manager.identify(file)
    if import_type is False:
        flash("Error: {0}".format(import_manager.last_error), 'error')
        return redirect(url_for('dns.zones_import'))

    data = import_manager.review(file, import_type, current_user.id)
    if not data:
        flash("Error: {0}".format(import_manager.last_error), 'error')
        return redirect(url_for('dns.zones_import'))
    elif len(data['errors']) > 0:
        flash("Please fix all the uploaded file's errors before importing it",
              'error')
        return redirect(url_for('dns.zones_import_review'))

    result = import_manager.run(data['data'], import_type, current_user.id)
    if result is True:
        # Delete file after process.
        os.remove(file)

        flash('Data has been successfully imported', 'success')
        return redirect(url_for('dns.index'))

    for error in result:
        flash(error, 'error')
    return redirect(url_for('dns.zones_import_review'))
示例#2
0
文件: zones.py 项目: ctxis/SnitchDNS
def cli_zones_import(file, user_id):
    provider = Provider()
    import_manager = provider.dns_import()
    users = provider.users()

    user = users.get_user(user_id)
    if not user:
        print("Could not find user with ID: {0}".format(user_id))
        return False

    import_type = import_manager.identify(file)
    if import_type != import_manager.IMPORT_TYPE_ZONE:
        print("Invalid import file: {0}".format(import_manager.last_error))
        return False

    data = import_manager.review(file, import_type, user.id, show_progressbar=True)
    if not data:
        print("Could not load file: {0}".format(import_manager.last_error))
        return False

    if len(data['errors']) > 0:
        errors = []
        for error in data['errors']:
            errors.append([error['row'], error['error']])
        print(tabulate.tabulate(errors, ['row', 'error']))
        return False

    result = import_manager.run(data['data'], import_type, user.id, show_progressbar=True)
    if result:
        return True

    for error in result:
        print(error)

    return False
示例#3
0
def zones_import_upload():
    provider = Provider()
    import_manager = provider.dns_import()

    if len(request.files) != 1:
        flash('Uploaded file could not be found', 'error')
        return redirect(url_for('dns.zones_import'))

    file = request.files['csvfile']
    if file.filename == '':
        flash('No file uploaded', 'error')
        return redirect(url_for('dns.zones_import'))

    file.save(
        import_manager.get_user_data_path(current_user.id,
                                          filename='import.csv'))

    return redirect(url_for('dns.zones_import_review'))
示例#4
0
def zones_import_review():
    provider = Provider()
    import_manager = provider.dns_import()

    file = import_manager.get_user_data_path(current_user.id,
                                             filename='import.csv')
    if not os.path.isfile(file):
        flash('No file uploaded', 'error')
        return redirect(url_for('dns.zones_import'))

    import_type = import_manager.identify(file)
    if import_type is False:
        flash("Error: {0}".format(import_manager.last_error), 'error')
        return redirect(url_for('dns.zones_import'))

    data = import_manager.review(file, import_type, current_user.id)
    if not data:
        flash("Error: {0}".format(import_manager.last_error), 'error')
        return redirect(url_for('dns.zones_import'))

    return render_template('dns/import/review.html',
                           data=data['data'],
                           errors=data['errors'],
                           type=import_type)