예제 #1
0
def update_ref(id):
    # Данные о справочнике
    result = db_app.ref_data(id)

    if request.method == 'POST':

        # Проверка наличия файла
        if 'file' not in request.files:
            flash('Вы не указали файл для загрузки', 'danger')
            return redirect(request.url)

        file = request.files['file']

        if file and allowed_file(file.filename):
            # Генерируется имя из идентификатора пользователя и врамени загрузки файла
            # Текущее время в сточку только цифрами
            filename = result[0][4] + '.xlsx'
            # Загружается файл
            file.save(os.path.join(constants.UPLOAD_FOLDER, filename))

            # Имя обновляемой таблицы
            table_name = result[0][4]

            # Отчистка таблицы
            db_data.delete_from_table(table_name)

            # Открывается сохраненный файл
            rb = xlrd.open_workbook(constants.UPLOAD_FOLDER + filename)
            sheet = rb.sheet_by_index(0)

            # Запсиь строчек справочника в базу данных
            in_table = range(sheet.nrows)
            try:
                for rownum in in_table:
                    if rownum >= 1:
                        row = sheet.row_values(rownum)
                        # Запсиь строчек справочника в базу данных
                        db_data.insert_data_in_ref(table_name, row[0], row[1],
                                                   row[2])
            except:
                flash('Неверный формат данных в файле', 'danger')
                return redirect(url_for('update_ref'))

            # Удаление загруженного файла
            os.remove(constants.UPLOAD_FOLDER + filename)

            flash('Данные обновлены', 'success')
            return redirect(url_for('refs.ref', id=id))
        else:
            flash(
                'Неверный формат файла. Справочник должен быть в формате .xlsx',
                'danger')

    return render_template('update_ref.html', form=form)
예제 #2
0
        def post(self, userId):
                UPLOAD_FOLDER = 'static/users/'+str(userId)+'/images'
                parser = reqparse.RequestParser()
                #Adding arguments for imagefile and description
                parser.add_argument('file',type=werkzeug.datastructures.FileStorage, location='files')
                data = parser.parse_args()

                #Error if no file included
                if not request.files:
                        abort(400)#bad request

                #Grab file from arguments
                photo = data['file']
                #Split file name to get file type e.g. test.jpg
                filetype = (photo.filename).split(".")[1].lower()
                print(filetype)
                #return error if filetype is not permitted
                if not allowed_file(photo.filename):
                        return make_response(jsonify({"error": "only allowed types: jpg, jpeg, png, gif"}),403)

                #If description is in request grab it for db
                try:
                        #DB INSERT
                        dbConnection = pymysql.connect(
                                settings.DB_HOST,
                                settings.DB_USER,
                                settings.DB_PASSWD,
                                settings.DB_DATABASE,
                                charset='utf8mb4',
                                cursorclass= pymysql.cursors.DictCursor)
                        sql = 'insertProfileImage'
                        sqlArgs = (userId, filetype)
                        cursor = dbConnection.cursor()
                        cursor.callproc(sql,sqlArgs)
                        row = cursor.fetchone()
                        dbConnection.commit()
                except:
                        abort(500)
                finally:
                       cursor.close()
                       dbConnection.close()
                #Join image ID and Filetype to create filename, then save file
                filename = 'profile.'+ filetype
                try:
                        photo.save(os.path.join(UPLOAD_FOLDER,filename))
                except:
                        abort(500)
                #Create a path to image to return to user
                path = UPLOAD_FOLDER +'/profile.' + filetype
                responsecode = 201
                response = {"status": "success", "path": path }
                return make_response(jsonify(response),responsecode)
예제 #3
0
파일: views.py 프로젝트: zhousilin/bj1910
def advance_upload():
    upload_obj = request.files.get('picture')

    # 验证文件类型
    if upload_obj and allowed_file(upload_obj.filename):
        # 得到保存路径
        path = os.path.join(current_app.config.get('UPLOAD_FOLDER'),upload_obj.filename)
        upload_obj.save(path)
        size = os.path.getsize(path)
        if size > current_app.config.get('ALLOWED_MAX_SIZE'):
            os.remove(path)
            return "文件大小不符合要求"
    else:
        return "文件不存在或类型不符合要求"

    return "高级上传"
예제 #4
0
def index():
    if request.method == "POST":
        if request.form["sid"] == "" or request.form["token"] == "":
            flash("Twilio ID and token required")
            return redirect(request.url)

        sid = request.form["sid"]
        token = request.form["token"]

        if not tools.valid_credentials(sid, token):
            flash(
                "Invalid Twilio credentials. Please double check your Twilio account SID and token and try again"
            )
            return redirect(request.url)

        if "file" not in request.files:
            flash("No file selected")
            return redirect(request.url)

        file = request.files["file"]
        if file.filename == "":
            flash("No file selected")
            return redirect(request.url)

        if file and tools.allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(
                os.path.join(application.config["UPLOAD_FOLDER"], filename))

            number_list = tools.get_number_list(filename)
            wrong_numbers = tools.check_numbers(number_list, sid, token)

            if wrong_numbers:
                with open(settings.LOG_FILE, "a") as log_file:
                    log_string = f"{datetime.now()} - {len(wrong_numbers)} wrong numbers identified."
                    log_file.write(f"\n{log_string}")
                return render_template("wrong_numbers.html",
                                       number_list=wrong_numbers)

            number_list = tools.send_messages(number_list, sid, token)
            return render_template("report.html", number_list=number_list)
        else:
            flash("File type not allowed. Please select a CSV file")
            return redirect(request.url)

    return render_template("index.html")
예제 #5
0
def upload_data_area_from_file(id):
    global id_to_da

    id_to_da = id
    # Достаётся предметная область из базы по идентификатору
    data_area = db_app.data_area(id)[0]

    form = DataFile(request.form)

    if request.method == 'POST' and form.validate():

        # Проверка наличия файла
        if 'file' not in request.files:
            flash('Вы не указали файл для загрузки', 'danger')
            return redirect(request.url)

        file = request.files['file']
        type_of = form.type_of.data

        if file and allowed_file(file.filename):
            # Генерируется имя из идентификатора пользователя и врамени загрузки файла
            # Текущее время в сточку только цифрами
            filename = 'olap_'+ id + '.xls'

            # Загружается файл
            file.save(os.path.join(constants.UPLOAD_FOLDER, filename))

            # Изменение статуса предметной области
            status = '2'
            log_id = db_app.insert_data_log(id, status)

            # Создание задачи в очереди на обработку
            db_queue.create_task(id, filename, type_of, session['user_id'], log_id[0][0])
            flash('Данные добавлены и ожидают обработки', 'success')
            return redirect(url_for('data_areas.data_area', id=id))

        else:
            flash('Неверный формат файла. Справочник должен быть в формате .xlsx', 'danger')

    return render_template('upload_data_area_from_file.html', form=form, data_area=data_area)
예제 #6
0
파일: main.py 프로젝트: beudbeud/bookstore
def upload_file():
    if 'file' not in request.files:
        flash('No file part')
        return redirect('/')
    file = request.files['file']
    if file and allowed_file(file.filename):
        epub = Epub.from_file(file)
        epub_file_ext = os.path.join(app.config['UPLOAD_FOLDER'],
                                     file.filename)
        file.save(epub_file_ext)
        find_cover(epub_file_ext)
        epub_file = os.path.splitext(
            os.path.join(app.config['UPLOAD_FOLDER'],
                         secure_filename(file.filename)))[0]
        book = Book(secure_filename(file.filename.split('.')[0]), epub.title,
                    epub.author)
        with zipfile.ZipFile(file, "r") as zip_ref:
            zip_ref.extractall(epub_file)
        db.session.add(book)
        db.session.commit()
        flash('Upload sucessful')
    else:
        flash('Epub only is allowed')
    return redirect('/')
예제 #7
0
def add_ref():
    form = RefForm(request.form)

    if request.method == 'POST' and form.validate():
        user = str(session['user_id'])
        name = form.name.data
        description = form.description.data

        # Проверка наличия файла
        if 'file' not in request.files:
            flash('Вы не указали файл для загрузки', 'danger')
            return redirect(request.url)

        file = request.files['file']

        if file and allowed_file(file.filename):
            # Генерируется имя из идентификатора пользователя и врамени загрузки файла
            # Текущее время в сточку только цифрами
            now = ''.join(c for c in str(datetime.now()) if c not in '- :.')
            filename = 'ref_' + str(session['user_id']) + '_' + now + '.xlsx'
            # Загружается файл
            file.save(os.path.join(constants.UPLOAD_FOLDER, filename))

            # Создаётся запись в базе данных
            # Генерируется имя для таблицы с данными
            table_name = str('ref' + str(session['user_id']) + now)

            try:
                # Создаётся запись в таблице с базой данных
                db_app.insert_ref(name, description, user, table_name)

                # Создаёется таблица для хранения данных
                db_data.create_ref_table(table_name)
            except psycopg2.Error as e:
                flash(e.diag.message_primary, 'danger')
                return redirect(request.url)

            # Открывается сохраненный файл
            rb = xlrd.open_workbook(
                os.path.abspath('.') + '/uploaded_files/' + filename)
            sheet = rb.sheet_by_index(0)

            # Запсиь строчек справочника в базу данных
            in_table = range(sheet.nrows)
            try:
                for rownum in in_table:
                    if rownum >= 1:
                        row = sheet.row_values(rownum)

                        # Запсиь строчек справочника в базу данных
                        db_data.insert_data_in_ref(table_name, row[0], row[1],
                                                   row[2])
            except:
                flash('Неверный формат данных в файле', 'danger')
                return redirect(url_for('add_ref'))

            # Удаление загруженного файла
            os.remove(os.path.join(constants.UPLOAD_FOLDER, filename))

            flash('Справочник добавлен', 'success')
            return redirect(url_for('refs.refs'))
        else:
            flash(
                'Неверный формат файла. Справочник должен быть в формате .xlsx',
                'danger')

    return render_template('add_ref.html', form=form)
예제 #8
0
    def upload_file():
        if 'file' not in request.files:
            flash('No file submitted')
            return redirect(
                url_for("admin",
                        COOKIES_NOTIFICATION=tools.show_cookies_policy(),
                        LOGGED_IN=tools.is_logged_in()))
        else:
            file = request.files['file']
            if file.filename == '':
                flash('No file submitted')
                return redirect(url_for("admin"))
            elif len(file.filename) > 100:
                flash('Filename is too long, must be less than 100 characters')
                return redirect(
                    url_for("admin",
                            COOKIES_NOTIFICATION=tools.show_cookies_policy(),
                            LOGGED_IN=tools.is_logged_in()))
        try:
            user = db.get_user_with_email(session['email'])
            if not tools.allowed_file(file.filename):
                flash("File must have .csv extension!")
                return redirect(
                    url_for('admin',
                            CONFIRMED=db.is_confirmed(session['email']),
                            FIRST_NAME=user['first_name'],
                            SUBMITTED=user["file_submitted"],
                            COOKIES_NOTIFICATION=tools.show_cookies_policy(),
                            LOGGED_IN=tools.is_logged_in()))
            try:
                errors_in_file, file_df = tools.errors_in_submission_file(file)
                if len(errors_in_file) is not 0:
                    flash("File contains errors, please fix them:")
                    for error in errors_in_file:
                        flash(error)
                    return redirect(
                        url_for(
                            'admin',
                            CONFIRMED=db.is_confirmed(session['email']),
                            FIRST_NAME=user['first_name'],
                            SUBMITTED=user["file_submitted"],
                            COOKIES_NOTIFICATION=tools.show_cookies_policy(),
                            LOGGED_IN=tools.is_logged_in()))
            except Exception as e:
                flash("File contains errors, please fix them:")
                flash(str(e))
                return redirect(
                    url_for('admin',
                            CONFIRMED=db.is_confirmed(session['email']),
                            FIRST_NAME=user['first_name'],
                            SUBMITTED=user["file_submitted"],
                            COOKIES_NOTIFICATION=tools.show_cookies_policy(),
                            LOGGED_IN=tools.is_logged_in()))

            if file:
                filename = secure_filename(file.filename)
                user_directory = app.config['UPLOAD_FOLDER'] + "/" + str(
                    user["id"])
                tools.delete_users_submission_directory(user_directory)
                os.makedirs(user_directory)
                file_df.to_csv(os.path.join(user_directory + "/", filename))
                db.add_file_submitted(session["email"], filename)
                return redirect(
                    url_for("admin",
                            CONFIRMED=db.is_confirmed(session['email']),
                            FIRST_NAME=user['first_name'],
                            SUBMITTED=file.filename,
                            COOKIES_NOTIFICATION=tools.show_cookies_policy(),
                            LOGGED_IN=tools.is_logged_in()))
        except Exception as e:
            flash(
                "An issue has occurred, please try another time, or contact us at %s"
                % config.email_config["admin_email"])
            return redirect(
                url_for('admin',
                        COOKIES_NOTIFICATION=tools.show_cookies_policy(),
                        LOGGED_IN=tools.is_logged_in()))