def settings(id):
    # Насройки, для их просмотра необходимо быть зарегестрированным
    form = SettingsForm()
    # При отикрытии страницы, сначала в неё загружаются данные,
    # введённые при регистрации, а затем уже их меняет пользователь
    if request.method == "GET":
        db_sess = db_session.create_session()
        user = db_sess.query(User).filter(User.id == id).first()
        if user and current_user == user:
            form.email.data = current_user.email
            form.surname.data = current_user.surname
            form.name.data = current_user.name
            form.age.data = current_user.age
            form.role.data = current_user.role
        else:
            abort(404)
    if form.validate_on_submit():
        # Все параметры пользователя меняются в зависимости от введённых в соответствующие поля данных
        db_sess = db_session.create_session()
        user = db_sess.query(User).filter(User.id == id).first()
        if user:
            if form.avatar.data:
                avatar = form.avatar.data
                # Все проверки повторяются из регистрации
                if avatar.filename.split('.')[-1] not in ['png', 'jpeg', 'jpg', 'ico', 'gif', 'bmp']:
                    return render_template('settings.html', title='Settings',
                                           form=form,
                                           message="This file is not an image")
                avatar_name = 'Avatar ' + form.email.data + ' ' + str(datetime.datetime.now()).replace(
                    ":", "-") + '.' + avatar.filename.split('.')[-1]
                if avatar_function(user.avatar) and os.path.isfile('static/img/Avatars/' + user.avatar):
                    # Проверяем, был ли предыдущий аватар системным, и если нет - удаляем его из хранилища
                    os.remove('static/img/Avatars/' + user.avatar)
                avatar.save("static/img/Avatars/" + avatar_name)
            else:
                avatar_name = current_user.avatar
            if form.old_password.data and form.new_password.data:
                # Проверяется старый пароль
                if not user.check_password(form.old_password.data.strip()):
                    return render_template('settings.html', title='Settings',
                                           form=form,
                                           message="Wrong password")
                # Проверяется, совпадают ли пароли
                elif form.old_password.data.strip() == form.new_password.data.strip():
                    return render_template('settings.html', title='Settings',
                                           form=form,
                                           message="These passwords are same")
                else:
                    # Если ошибок нет, проверяем надёжность пароля и сохраняем его пользователю
                    if check_user_password(form.new_password.data) != True:
                        return render_template('settings.html', title='Settings',
                                               form=form,
                                               message=check_user_password(form.new_password.data))
                    user.set_password(form.new_password.data.strip())
            # Необычные проверки на пароли, пользователю необходимо заполнить поля, иначе - ошибка
            elif form.new_password.data and not form.old_password.data:
                return render_template('settings.html', title='Settings',
                                       form=form,
                                       message="Please, enter the previous password to continue")
            # Далее - снова проверки на данные
            if len(form.surname.data) >= 20:
                return render_template('settings.html', title='Settings',
                                       form=form,
                                       message="Your surname is so big, please, enter up to 20 characters")
            if len(form.name.data) >= 15:
                return render_template('settings.html', title='Settings',
                                       form=form,
                                       message="Your name is so big, please, enter up to 15 characters")
            user.surname = form.surname.data.strip()[0].upper() + form.surname.data.strip()[1:]
            user.name = form.name.data.strip()[0].upper() + form.name.data.strip()[1:]
            if not form.age.data.isnumeric() or int(form.age.data) > 200:
                return render_template('settings.html', title='Settings',
                                       form=form,
                                       message="Please, enter your correct age")
            if int(form.age.data) < 12:
                return render_template('settings.html', title='Settings',
                                       form=form,
                                       message="We are sorry, this website is only for 12+ users")
            # Как и при регистрации, все данные сохраняются
            print('gor')
            user.age = form.age.data.strip()
            user.role = form.role.data
            user.avatar = avatar_name
            db_sess.merge(user)
            db_sess.commit()
            return redirect('/')
        else:
            abort(404)
    return render_template('settings.html', title='Settings', form=form)