示例#1
0
def test_db():
    tables_name = ['user','post','account']
    print('开始测试')
    for name in tables_name:
        model_name = name.title()
        with app.app_context():
            count = eval(f'len({model_name}.query.all())')
            print(f'准备测试{model_name}模型,测试数量为{count}')
            for i in range(count+1):
                with app.app_context(): # 重点:这里app上下文必须要在循环内,app.app_context().push()方式无效
                    try:
                        model = None
                        if model_name == 'User':
                            model = User(username='******',email='*****@*****.**',password='******')
                        if model_name == 'Post':
                            test = User.query.filter_by(username='******').first()
                            model = Post(title='test',content='test'*3,author=test)
                        if model_name == 'Account':
                            test = User.query.filter_by(username='******').first()
                            model = Account()
                            model.user_id = test.id
                        if model is not None:
                            db.session.add(model)
                            db.session.commit()                           
                    except Exception as e:
                        time.sleep(0.01)
                        # print(e)
                        print(f'{model_name}模型执行第{i}次')
示例#2
0
 def test_valid_email_change_token(self):
     u = User(email='*****@*****.**', password='******')
     db.session.add(u)
     db.session.commit()
     token = u.generate_email_change_token('*****@*****.**')
     self.assertTrue(u.change_email(token))
     self.assertTrue(u.email == '*****@*****.**')
示例#3
0
 def test_expired_confirmation_token(self):
     u = User(password='******')
     db.session.add(u)
     db.session.commit()
     token = u.generate_confirmation_token(1)
     time.sleep(2)
     self.assertFalse(u.confirm(token))
示例#4
0
 def test_valid_reset_token(self):
     u = User(password='******')
     db.session.add(u)
     db.session.commit()
     token = u.generate_reset_token()
     self.assertTrue(u.reset_password(token, 'dog'))
     self.assertTrue(u.verify_password('dog'))
示例#5
0
 def create_user(self):
     user = User()
     user.username = self.username.data
     user.password = self.password.data
     db.session.add(user)
     db.session.commit()
     return user
示例#6
0
def populte():
    print('drop database')
    db.drop_all()
    print('drop done')
    print('create database')
    db.create_all()
    print('create database done')
    print('creating......')
    for user in users:
        hash_password = bcrypt.generate_password_hash(
            user.get('password')).decode('utf-8')
        create_user = User(username=user.get('username'),
                           email=user.get('email'),
                           password=hash_password)
        account = Account()
        create_user.account = account
        db.session.add(create_user)
        db.session.commit()
        print('create user success')
    print('create users done')
    admin = User.query.filter_by(username='******').first()
    for post in posts:
        create_post = Post(title=post, content=post * 3, author=admin)
        db.session.add(create_post)
        db.session.commit()
        print('create post success')
    print('done')
示例#7
0
 def test_ping(self):
     u = User(password='******')
     db.session.add(u)
     db.session.commit()
     time.sleep(2)
     last_seen_before = u.last_seen
     u.ping()
     self.assertTrue(u.last_seen > last_seen_before)
示例#8
0
 def test_duplicate_email_change_token(self):
     u1 = User(email='*****@*****.**', password='******')
     u2 = User(email='*****@*****.**', password='******')
     db.session.add(u1)
     db.session.add(u2)
     db.session.commit()
     token = u2.generate_email_change_token('*****@*****.**')
     self.assertFalse(u2.change_email(token))
     self.assertTrue(u2.email == '*****@*****.**')
示例#9
0
 def test_to_json(self):
     u = User(email='*****@*****.**', password='******')
     db.session.add(u)
     db.session.commit()
     json_user = u.to_json()
     expected_keys = [
         'url', 'username', 'member_since', 'last_seen', 'posts',
         'followed_posts', 'post_count'
     ]
     self.assertEqual(sorted(json_user.keys()), sorted(expected_keys))
     self.assertTrue('api/v1.0/users/' in json_user['url'])
示例#10
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('shops.shop'))
    form = RegistrationForm()
    if form.validate_on_submit():
        hashed_password = bcrypt.generate_password_hash(
            form.password.data).decode('utf-8')
        user = User(first_name=form.first_name.data,
                    last_name=form.last_name.data,
                    email=form.email.data,
                    password=hashed_password,
                    address=form.address.data,
                    city=form.city.data,
                    state=form.state.data,
                    postcode=form.postcode.data,
                    country=form.country.data,
                    phone=form.phone.data)
        db.session.add(user)
        db.session.commit()
        send_welcome_email(user)
        flash('Your account has been created! You are now able to Login',
              'success')
        return redirect(url_for('users.login'))

    return render_template('register.html', title='Register', form=form)
示例#11
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('index'))

    form = RegisterationForm()
    if request.method == 'POST':
        if form.validate_on_submit():
            hashed_pwd = app_bcrypt.generate_password_hash(
                form.password.data, 13)
            user_path = os.path.join(
                app.root_path, 'static/images/profile_pics/')
            user_dir_name = f'{secrets.token_hex(12)}/'
            full_user_path = f'{user_path}{user_dir_name}'
            os.mkdir(full_user_path)
            user = User(username=form.username.data.strip(),
                        email=form.email.data.lower(), profile_dir=user_dir_name, password=hashed_pwd)

            db.session.add(user)
            db.session.commit()
            flash(f'Your account has been created! You are now able to log in', 'success')
            return redirect(url_for('login'))

        flash(f'The submitted data is not corrent. Please enter correct info!', 'failure')

    return render_template('register.html', page_title='Flask Blog | Register', form=form)
示例#12
0
def register():
    # If Current user is authenticated, redirect to homepage
    if current_user.is_authenticated:
        return redirect(url_for("home"))

    form = RegistrationForm()
    # To check Validation
    if form.validate_on_submit():
        # Hash user password
        hashed_password = bcrypt.generate_password_hash(
            form.password.data).decode("utf-8")

        # Collect data form the Form Fields and instantiate to the "User" Model
        user = User(username=form.username.data,
                    email=form.email.data,
                    password=hashed_password)

        # Add User
        db.session.add(user)
        # Create user Account
        db.session.commit()
        flash("Your account has been created you're now able to login!",
              "success")
        return redirect(url_for("login"))
    return render_template("register.html", title="Register", form=form)
示例#13
0
 def test_timestamps(self):
     u = User(password='******')
     db.session.add(u)
     db.session.commit()
     self.assertTrue(
         (datetime.utcnow() - u.member_since).total_seconds() < 3)
     self.assertTrue((datetime.utcnow() - u.last_seen).total_seconds() < 3)
示例#14
0
def registration():
    if current_user.is_authenticated:
        return redirect(url_for('main.home'))
    form = RegistrationForm()
    if form.validate_on_submit():
        #Flashing success message
        flash(f'Your account has been created! You are now able to login.',
              'success')

        #Take password from form, then decode it into utf-8 format
        hashed_password = bcrypt.generate_password_hash(
            form.password.data).decode('utf-8')

        #Create instance of User class for inserting into database
        new_user = User(username=form.username.data,
                        email=form.email.data,
                        password=hashed_password)

        #Add new user
        db.session.add(new_user)
        #Commit changes
        db.session.commit()

        #Redirects you to homepage
        return redirect(url_for('users.login'))
    return render_template('register.html', form=form, title='Register')
示例#15
0
def reset_token(token):
    if current_user.is_authenticated:
        return redirect(url_for('home'))

    user = User.verify_token(token)

    if user is None:
        flash('Invalid or Expired Token', 'warning')
        return redirect(url_for('reset_request'))

    form = Reset_Form()

    if request.method == 'POST':

        hashed_password = bcrypt.generate_password_hash(
            form.password.data).decode('utf-8')
        user.password = hashed_password
        db.session.commit()

        flash(f'Password Changed!, You Can Now Log-In ', 'success')
        return redirect(url_for('login'))

    return render_template('reset_password.html',
                           title='Reset Password',
                           form=form)
示例#16
0
def reset_token(token):

    if current_user.is_authenticated:
        return redirect(url_for('main.home_page'))

    user = User.verify_reset_token(token)

    if user is None:

        flash('That is an invalid or expired token', 'warning')

        return redirect(url_for('users.reset_request'))

    form = ResetPasswordForm()
    if form.validate_on_submit():

        hashed_password = bcrypt.generate_password_hash(
            form.password.data).decode('utf8')

        user.password = hashed_password
        db.session.commit()

        flash('Your password has been updated! You are now able to log in', 'success')
        return redirect(url_for('users.login'))

    return render_template('reset_token.html', title="Reset Password", form=form)
示例#17
0
def run_user():
    user = User(username='******', password='******')
    db.session.add(user)
    try:
        db.session.commit()
    except Exception as e:
        print(e)
        db.session.rollback()
示例#18
0
def register():
    if current_user.is_authenticated:
        flash(f'无效操作:{current_user.username} 请退出当前账号再进行操作', 'danger')
        return redirect(url_for('main.home'))
    form = RegistrationForm()
    if form.validate_on_submit():
        hash_password = bcrypt.generate_password_hash(
            form.password.data).decode('utf-8')
        user = User(username=form.username.data,
                    email=form.email.data,
                    password=hash_password)
        account = Account()
        user.account = account
        db.session.add(user)
        db.session.commit()
        flash(f'注册成功 - { form.username.data } 请用邮箱登陆', 'primary')
        return redirect(url_for('users.login'))
    return render_template('register.html', form=form, title='注册')
示例#19
0
def reset_token(token):
	if current_user.is_authenticated:
		return redirect(url_for('home'))
	user = User.verify_reset_token(token)
	if user is None:
		flash('That is invalid or expired token', 'warning')
		return redirect(url_for('reset_request'))
	form = ResetPasswordForm()
	return render_template('reset_token.html', title='Reset Password', form=form)
示例#20
0
    def setUp(self):
        self.user_1 = User(id=1,
                           username='******',
                           email='*****@*****.**',
                           password='******')
        self.user_2 = User(id=2,
                           username='******',
                           email='*****@*****.**',
                           password='******')

        self.post_1 = Post(title="User_1's first post",
                           content='This is some content for my first post.',
                           user_id=self.user_1.id)
        self.post_2 = Post(title="User_1's second post",
                           content='This is some content for my second post.',
                           user_id=self.user_1.id)
        self.post_3 = Post(title="User_2's first post",
                           content='Blah, blah, blah',
                           user_id=self.user_2.id)
示例#21
0
 def test_invalid_reset_token(self):
     u1 = User(password='******')
     u2 = User(password='******')
     db.session.add(u1)
     db.session.add(u2)
     db.session.commit()
     token = u1.generate_reset_token()
     self.assertFalse(u2.reset_password(token, 'horse'))
     self.assertTrue(u2.verify_password('dog'))
示例#22
0
def createsuperuser():
    username = input('请输入用户名:')
    email = input('请输入电子邮箱:')
    password = input('请输入密码:')
    password2 = input('再次输入密码:')
    form = RegistrationForm(username=username,
                            email=email,
                            password=password,
                            password2=password2)
    if not form.validate():
        if 'csrf_token' in form.errors.keys() and len(form.errors) == 1:
            user = User(email=email, username=username, password=password)
            user.role = Role.query.filter_by(permissions=0xff).first()
            db.session.add(user)
            db.session.commit()
            print('创建管理账号成功')
        else:
            print(form.errors)
    else:
        print('创建不成功')
示例#23
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('home'))
    form = RegistrationForm(request.form)
    if request.method == "POST" and form.validate_on_submit():
        hashed_password = bcrypt.generate_password_hash(form.password.data).decode('utf-8')
        user = User(username=form.username.data, email=form.email.data, password=hashed_password)
        db.session.add(user)
        db.session.commit()
        flash("Account created for {0}!".format(form.username.data))
        return redirect(url_for('login'))
    return render_template("register.html", title="Register", form=form)
示例#24
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('main.home'))
    form = RegistrationForm()
    if form.validate_on_submit():
        hashed_password = bcrypt.generate_password_hash(form.password.data).decode('utf-8')
        user = User(username=form.username.data, email=form.email.data, password=hashed_password)
        db.session.add(user)
        db.session.commit()
        flash('Your account has been created! You are now able to log in', 'success')
        return redirect(url_for('users.login'))
    return render_template('register.html', title='Register', form=form)
示例#25
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for("home"))
    form = RegistrationForm()
    if form.validate_on_submit():
        hashed_password = bcrypt.generate_password_hash(form.password.data).decode('utf-8')
        user = User(username=form.username.data, email=form.email.data, password=hashed_password)
        db.session.add(user)
        db.session.commit()
        flash(f'Account created for {form.username.data},You can login now.')
        return redirect(url_for("login"))
    return render_template('register.html', title="register", form=form)
示例#26
0
def register():
    form = RegistrationForm()
    if form.validate_on_submit():
        hashed_pw = bcrypt.generate_password_hash(
            form.password.data).decode('utf-8')
        user = User(username=form.username.data,
                    email=form.email.data,
                    password=hashed_pw)
        db.session.add(user)
        db.session.commit()
        flash(f'{form.username.data} account has been created', 'success')
        return redirect(url_for('home'))
    return render_template('register.html', title='Register', form=form)
示例#27
0
def sign_up():
    if current_user.is_authenticated:
        return redirect(url_for('home'))
    form = RegistrationFrom()
    if form.validate_on_submit():
        hashed_password = bcrypt.generate_password_hash(form.password.data)
        user = User(username=form.username.data, email=form.email.data, password=hashed_password)
        db.session.add(user)
        db.session.commit()
        flash('Your account has been created! Your are now able to login', 'success')
        return redirect(url_for('home'))

    return render('sign_up.html', form=form, title='Sign Up')
示例#28
0
 def test_invalid_confirmation_token(self):
     u1 = User(password='******')
     u2 = User(password='******')
     db.session.add(u1)
     db.session.add(u2)
     db.session.commit()
     token = u1.generate_confirmation_token()
     self.assertFalse(u2.confirm(token))
示例#29
0
def resetpassword_by_token(token):
    form = ResetPasswordForm()
    if form.validate_on_submit():
        user = User.verify_rest_token(token)  # return User object
        if user is None:
            flash('异常:用户验证失败或操作超时', 'danger')
            return redirect(url_for('users.login'))
        hash_password = bcrypt.generate_password_hash(
            form.password.data).decode('utf-8')
        user.password = hash_password
        db.session.commit()
        flash(f'{user.username} 密码重置成功,请重新登陆', 'primary')
        return redirect(url_for('users.login'))
    return render_template('resetpassword.html', title=f'重置密码', form=form)
示例#30
0
def home():
    form = RForm()
    if form.validate_on_submit():
        if form.picture.data:
            picture_file = save_picture(form.picture.data)
        user = User(username=form.username.data, email=form.email.data)
        db.session.add(user)
        db.session.commit()
        flash('Information Submitted', category='success')
        return redirect(url_for('result'))
        # num =1
        # return "res"+ str(val(num))

    return render_template('home.html', title='Covid-19', form=form)